()
| 343 | } |
| 344 | |
| 345 | func (self *_parser) parseObjectPropertyKey() (string, unistring.String, ast.Expression, token.Token) { |
| 346 | if self.token == token.LEFT_BRACKET { |
| 347 | self.next() |
| 348 | expr := self.parseAssignmentExpression() |
| 349 | self.expect(token.RIGHT_BRACKET) |
| 350 | return "", "", expr, token.ILLEGAL |
| 351 | } |
| 352 | idx, tkn, literal, parsedLiteral := self.idx, self.token, self.literal, self.parsedLiteral |
| 353 | var value ast.Expression |
| 354 | self.next() |
| 355 | switch tkn { |
| 356 | case token.IDENTIFIER, token.STRING, token.KEYWORD, token.ESCAPED_RESERVED_WORD: |
| 357 | value = &ast.StringLiteral{ |
| 358 | Idx: idx, |
| 359 | Literal: literal, |
| 360 | Value: parsedLiteral, |
| 361 | } |
| 362 | case token.NUMBER: |
| 363 | num, err := parseNumberLiteral(literal) |
| 364 | if err != nil { |
| 365 | self.error(idx, err.Error()) |
| 366 | } else { |
| 367 | value = &ast.NumberLiteral{ |
| 368 | Idx: idx, |
| 369 | Literal: literal, |
| 370 | Value: num, |
| 371 | } |
| 372 | } |
| 373 | case token.PRIVATE_IDENTIFIER: |
| 374 | value = &ast.PrivateIdentifier{ |
| 375 | Identifier: ast.Identifier{ |
| 376 | Idx: idx, |
| 377 | Name: parsedLiteral, |
| 378 | }, |
| 379 | } |
| 380 | default: |
| 381 | // null, false, class, etc. |
| 382 | if token.IsId(tkn) { |
| 383 | value = &ast.StringLiteral{ |
| 384 | Idx: idx, |
| 385 | Literal: literal, |
| 386 | Value: unistring.String(literal), |
| 387 | } |
| 388 | } else { |
| 389 | self.errorUnexpectedToken(tkn) |
| 390 | } |
| 391 | } |
| 392 | return literal, parsedLiteral, value, tkn |
| 393 | } |
| 394 | |
| 395 | func (self *_parser) parseObjectProperty() ast.Property { |
| 396 | if self.token == token.ELLIPSIS { |
no test coverage detected