MCPcopy Create free account
hub / github.com/dop251/goja / parseAssignmentExpression

Method parseAssignmentExpression

parser/expression.go:1234–1365  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1232}
1233
1234func (self *_parser) parseAssignmentExpression() ast.Expression {
1235 start := self.idx
1236 parenthesis := false
1237 async := false
1238 var state parserState
1239 switch self.token {
1240 case token.LEFT_PARENTHESIS:
1241 self.mark(&state)
1242 parenthesis = true
1243 case token.ASYNC:
1244 tok := self.peek()
1245 if self.isBindingId(tok) {
1246 // async x => ...
1247 self.next()
1248 return self.parseSingleArgArrowFunction(start, true)
1249 } else if tok == token.LEFT_PARENTHESIS {
1250 self.mark(&state)
1251 async = true
1252 }
1253 case token.YIELD:
1254 if self.scope.allowYield {
1255 return self.parseYieldExpression()
1256 }
1257 fallthrough
1258 default:
1259 self.tokenToBindingId()
1260 }
1261 left := self.parseConditionalExpression()
1262 var operator token.Token
1263 switch self.token {
1264 case token.ASSIGN:
1265 operator = self.token
1266 case token.ADD_ASSIGN:
1267 operator = token.PLUS
1268 case token.SUBTRACT_ASSIGN:
1269 operator = token.MINUS
1270 case token.MULTIPLY_ASSIGN:
1271 operator = token.MULTIPLY
1272 case token.EXPONENT_ASSIGN:
1273 operator = token.EXPONENT
1274 case token.QUOTIENT_ASSIGN:
1275 operator = token.SLASH
1276 case token.REMAINDER_ASSIGN:
1277 operator = token.REMAINDER
1278 case token.AND_ASSIGN:
1279 operator = token.AND
1280 case token.OR_ASSIGN:
1281 operator = token.OR
1282 case token.EXCLUSIVE_OR_ASSIGN:
1283 operator = token.EXCLUSIVE_OR
1284 case token.SHIFT_LEFT_ASSIGN:
1285 operator = token.SHIFT_LEFT
1286 case token.SHIFT_RIGHT_ASSIGN:
1287 operator = token.SHIFT_RIGHT
1288 case token.UNSIGNED_SHIFT_RIGHT_ASSIGN:
1289 operator = token.UNSIGNED_SHIFT_RIGHT
1290 case token.LOGICAL_AND_ASSIGN:
1291 operator = token.LOGICAL_AND

Callers 12

parseObjectPropertyMethod · 0.95
parseArrayLiteralMethod · 0.95
parseArgumentListMethod · 0.95
parseYieldExpressionMethod · 0.95
parseExpressionMethod · 0.95
parseForOfMethod · 0.95

Calls 15

markMethod · 0.95
peekMethod · 0.95
isBindingIdMethod · 0.95
nextMethod · 0.95
parseYieldExpressionMethod · 0.95
tokenToBindingIdMethod · 0.95
restoreMethod · 0.95
errorMethod · 0.95

Tested by

no test coverage detected