MCPcopy Create free account
hub / github.com/adhocteam/pushup / parseImplicitExpression

Method parseImplicitExpression

parser.go:1063–1147  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1061}
1062
1063func (p *codeParser) parseImplicitExpression() *nodeGoStrExpr {
1064 if p.peek().tok != token.IDENT {
1065 panic("internal error: expected Go identifier start implicit expression")
1066 }
1067 result := new(nodeGoStrExpr)
1068 end := p.tokenOffset(p.peek())
1069 result.pos.start = end
1070 identLen := len(p.peek().String())
1071 end += identLen
1072 p.advance()
1073 if !unicode.IsSpace(rune(p.charAt(result.pos.start + identLen))) {
1074 Loop:
1075 for {
1076 if p.peek().tok == token.LPAREN {
1077 nested := 1
1078 end++
1079 p.advance()
1080 for {
1081 if p.peek().tok == token.RPAREN {
1082 end++
1083 p.advance()
1084 nested--
1085 if nested == 0 {
1086 goto Loop
1087 }
1088 } else if p.peek().tok == token.ILLEGAL {
1089 p.errorf("illegal Go token %q", p.peek().String())
1090 } else if p.peek().tok == token.EOF {
1091 p.errorf("unexpected EOF, want ')'")
1092 }
1093 end = p.tokenOffset(p.peek()) + len(p.peek().String())
1094 p.advance()
1095 }
1096 } else if p.peek().tok == token.LBRACK { // '['
1097 nested := 1
1098 end++
1099 p.advance()
1100 for {
1101 if p.peek().tok == token.RBRACK {
1102 end++
1103 p.advance()
1104 nested--
1105 if nested == 0 {
1106 goto Loop
1107 }
1108 } else if p.peek().tok == token.ILLEGAL {
1109 p.errorf("illegal Go token %q", p.peek().String())
1110 } else if p.peek().tok == token.EOF {
1111 p.errorf("unexpected EOF, want ')'")
1112 }
1113 end = p.tokenOffset(p.peek()) + len(p.peek().String())
1114 p.advance()
1115 }
1116 } else if p.peek().tok == token.PERIOD {
1117 last := p.peek().pos
1118 p.advance()
1119 end++
1120 // if space between period and next token, regardless of what

Callers 1

parseCodeMethod · 0.95

Calls 8

peekMethod · 0.95
tokenOffsetMethod · 0.95
advanceMethod · 0.95
charAtMethod · 0.95
errorfMethod · 0.95
backupMethod · 0.95
sourceRangeMethod · 0.95
StringMethod · 0.45

Tested by

no test coverage detected