BinaryExpression | PrefixUnaryExpression | PostfixUnaryExpression | ForInOrOfStatement
(node *ast.Node)
| 88 | type AssignmentTarget = ast.Node // BinaryExpression | PrefixUnaryExpression | PostfixUnaryExpression | ForInOrOfStatement |
| 89 | |
| 90 | func getAssignmentTargetKind(node *ast.Node) AssignmentKind { |
| 91 | target := ast.GetAssignmentTarget(node) |
| 92 | if target == nil { |
| 93 | return AssignmentKindNone |
| 94 | } |
| 95 | switch target.Kind { |
| 96 | case ast.KindBinaryExpression: |
| 97 | binaryOperator := target.AsBinaryExpression().OperatorToken.Kind |
| 98 | if binaryOperator == ast.KindEqualsToken || ast.IsLogicalOrCoalescingAssignmentOperator(binaryOperator) { |
| 99 | return AssignmentKindDefinite |
| 100 | } |
| 101 | return AssignmentKindCompound |
| 102 | case ast.KindPrefixUnaryExpression, ast.KindPostfixUnaryExpression: |
| 103 | return AssignmentKindCompound |
| 104 | case ast.KindForInStatement, ast.KindForOfStatement: |
| 105 | return AssignmentKindDefinite |
| 106 | } |
| 107 | panic("Unhandled case in getAssignmentTargetKind") |
| 108 | } |
| 109 | |
| 110 | func isDeleteTarget(node *ast.Node) bool { |
| 111 | if !ast.IsAccessExpression(node) { |
no test coverage detected