MCPcopy
hub / github.com/google/go-jsonnet / parseObjectRemainderField

Method parseObjectRemainderField

internal/parser/parser.go:397–499  ·  view source on GitHub ↗
(literalFields *literalFieldSet, tok *token, next *token)

Source from the content-addressed store, hash-verified

395}
396
397func (p *parser) parseObjectRemainderField(literalFields *literalFieldSet, tok *token, next *token) (*ast.ObjectField, errors.StaticError) {
398 var kind ast.ObjectFieldKind
399 var fodder1 ast.Fodder
400 var expr1 ast.Node
401 var id *ast.Identifier
402 var fodder2 ast.Fodder
403 var err errors.StaticError
404
405 switch next.kind {
406 case tokenIdentifier:
407 kind = ast.ObjectFieldID
408 id = (*ast.Identifier)(&next.data)
409 fodder1 = next.fodder
410 case tokenStringDouble, tokenStringSingle,
411 tokenStringBlock, tokenVerbatimStringDouble, tokenVerbatimStringSingle:
412 kind = ast.ObjectFieldStr
413 expr1, err = tokenStringToAst(next)
414 if err != nil {
415 return nil, err
416 }
417 default:
418 fodder1 = next.fodder
419 kind = ast.ObjectFieldExpr
420 var err errors.StaticError
421 expr1, err = p.parse(iast.MaxPrecedence)
422 if err != nil {
423 return nil, err
424 }
425 bracketR, err := p.popExpect(tokenBracketR)
426 if err != nil {
427 return nil, err
428 }
429 fodder2 = bracketR.fodder
430 }
431
432 isMethod := false
433 methComma := false
434 var parenL *token
435 var parenR *token
436 var params []ast.Parameter
437 if p.peek().kind == tokenParenL {
438 parenL = p.pop()
439 var err errors.StaticError
440 parenR, params, methComma, err = p.parseParameters("method parameter")
441 if err != nil {
442 return nil, err
443 }
444 isMethod = true
445 }
446
447 opFodder, plusSugar, hide, err := p.parseObjectAssignmentOp()
448 if err != nil {
449 return nil, err
450 }
451
452 if plusSugar && isMethod {
453 return nil, errors.MakeStaticError(
454 fmt.Sprintf("Cannot use +: syntax sugar in a method: %v", next.data), next.loc)

Callers 1

parseObjectRemainderMethod · 0.95

Calls 11

parseMethod · 0.95
popExpectMethod · 0.95
peekMethod · 0.95
popMethod · 0.95
parseParametersMethod · 0.95
MakeStaticErrorFunction · 0.92
tokenStringToAstFunction · 0.85
literalFieldTypeAlias · 0.85
locFromTokenASTFunction · 0.85
addMethod · 0.80

Tested by

no test coverage detected