()
| 1232 | } |
| 1233 | |
| 1234 | func (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 |
no test coverage detected