(tok *token, next *token)
| 570 | } |
| 571 | |
| 572 | func (p *parser) parseObjectRemainderAssert(tok *token, next *token) (*ast.ObjectField, errors.StaticError) { |
| 573 | cond, err := p.parse(iast.MaxPrecedence) |
| 574 | if err != nil { |
| 575 | return nil, err |
| 576 | } |
| 577 | lastAST := cond // for determining location |
| 578 | var msg ast.Node |
| 579 | var colonFodder ast.Fodder |
| 580 | if p.peek().kind == tokenOperator && p.peek().data == ":" { |
| 581 | colonToken := p.pop() |
| 582 | colonFodder = colonToken.fodder |
| 583 | msg, err = p.parse(iast.MaxPrecedence) |
| 584 | if err != nil { |
| 585 | return nil, err |
| 586 | } |
| 587 | lastAST = msg |
| 588 | } |
| 589 | |
| 590 | var commaFodder ast.Fodder |
| 591 | if p.peek().kind == tokenComma { |
| 592 | commaFodder = p.peek().fodder |
| 593 | } |
| 594 | |
| 595 | return &ast.ObjectField{ |
| 596 | Kind: ast.ObjectAssert, |
| 597 | Hide: ast.ObjectFieldVisible, |
| 598 | Fodder1: next.fodder, |
| 599 | Expr2: cond, |
| 600 | OpFodder: colonFodder, |
| 601 | Expr3: msg, |
| 602 | CommaFodder: commaFodder, |
| 603 | LocRange: locFromTokenAST(next, lastAST), |
| 604 | }, nil |
| 605 | } |
| 606 | |
| 607 | // Parse object or object comprehension without leading brace |
| 608 | func (p *parser) parseObjectRemainder(tok *token) (ast.Node, *token, errors.StaticError) { |
no test coverage detected