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

Method parseObjectPropertyKey

parser/expression.go:345–393  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

343}
344
345func (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
395func (self *_parser) parseObjectProperty() ast.Property {
396 if self.token == token.ELLIPSIS {

Callers 2

parseObjectPropertyMethod · 0.95
parseClassMethod · 0.95

Calls 9

nextMethod · 0.95
expectMethod · 0.95
errorMethod · 0.95
errorUnexpectedTokenMethod · 0.95
IsIdFunction · 0.92
StringTypeAlias · 0.92
parseNumberLiteralFunction · 0.85
ErrorMethod · 0.45

Tested by

no test coverage detected