MCPcopy Create free account
hub / github.com/microsoft/typescript-go / GetAssignmentTarget

Function GetAssignmentTarget

internal/ast/utilities.go:184–226  ·  view source on GitHub ↗

Returns the BinaryExpression, PrefixUnaryExpression, PostfixUnaryExpression, or ForInOrOfStatement that references the given node as an assignment target

(node *Node)

Source from the content-addressed store, hash-verified

182// Returns the BinaryExpression, PrefixUnaryExpression, PostfixUnaryExpression, or ForInOrOfStatement that references
183// the given node as an assignment target
184func GetAssignmentTarget(node *Node) *Node {
185 for {
186 parent := node.Parent
187 switch parent.Kind {
188 case KindBinaryExpression:
189 if IsAssignmentOperator(parent.AsBinaryExpression().OperatorToken.Kind) && parent.AsBinaryExpression().Left == node {
190 return parent
191 }
192 return nil
193 case KindPrefixUnaryExpression:
194 if parent.AsPrefixUnaryExpression().Operator == KindPlusPlusToken || parent.AsPrefixUnaryExpression().Operator == KindMinusMinusToken {
195 return parent
196 }
197 return nil
198 case KindPostfixUnaryExpression:
199 if parent.AsPostfixUnaryExpression().Operator == KindPlusPlusToken || parent.AsPostfixUnaryExpression().Operator == KindMinusMinusToken {
200 return parent
201 }
202 return nil
203 case KindForInStatement, KindForOfStatement:
204 if parent.Initializer() == node {
205 return parent
206 }
207 return nil
208 case KindParenthesizedExpression, KindArrayLiteralExpression, KindSpreadElement, KindNonNullExpression:
209 node = parent
210 case KindSpreadAssignment:
211 node = parent.Parent
212 case KindShorthandPropertyAssignment:
213 if parent.AsShorthandPropertyAssignment().Name() != node {
214 return nil
215 }
216 node = parent.Parent
217 case KindPropertyAssignment:
218 if parent.AsPropertyAssignment().Name() == node {
219 return nil
220 }
221 node = parent.Parent
222 default:
223 return nil
224 }
225 }
226}
227
228func IsLogicalBinaryOperator(token Kind) bool {
229 return token == KindBarBarToken || token == KindAmpersandAmpersandToken

Callers 3

getAssignmentTargetKindFunction · 0.92
IsAssignmentTargetFunction · 0.85

Calls 8

IsAssignmentOperatorFunction · 0.85
AsBinaryExpressionMethod · 0.80
InitializerMethod · 0.80
AsPropertyAssignmentMethod · 0.80
NameMethod · 0.65

Tested by

no test coverage detected