MCPcopy
hub / github.com/hashicorp/hcl / recoverAfterBodyItem

Method recoverAfterBodyItem

hclsyntax/parser.go:2141–2181  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2139}
2140
2141func (p *parser) recoverAfterBodyItem() {
2142 p.recovery = true
2143 var open []TokenType
2144
2145Token:
2146 for {
2147 tok := p.Read()
2148
2149 switch tok.Type {
2150
2151 case TokenNewline:
2152 if len(open) == 0 {
2153 break Token
2154 }
2155
2156 case TokenEOF:
2157 break Token
2158
2159 case TokenOBrace, TokenOBrack, TokenOParen, TokenOQuote, TokenOHeredoc, TokenTemplateInterp, TokenTemplateControl:
2160 open = append(open, tok.Type)
2161
2162 case TokenCBrace, TokenCBrack, TokenCParen, TokenCQuote, TokenCHeredoc:
2163 opener := p.oppositeBracket(tok.Type)
2164 for len(open) > 0 && open[len(open)-1] != opener {
2165 open = open[:len(open)-1]
2166 }
2167 if len(open) > 0 {
2168 open = open[:len(open)-1]
2169 }
2170
2171 case TokenTemplateSeqEnd:
2172 for len(open) > 0 && open[len(open)-1] != TokenTemplateInterp && open[len(open)-1] != TokenTemplateControl {
2173 open = open[:len(open)-1]
2174 }
2175 if len(open) > 0 {
2176 open = open[:len(open)-1]
2177 }
2178
2179 }
2180 }
2181}
2182
2183// oppositeBracket finds the bracket that opposes the given bracketer, or
2184// NilToken if the given token isn't a bracketer.

Callers 4

ParseBodyItemMethod · 0.95
parseSingleAttrBodyMethod · 0.95

Calls 2

oppositeBracketMethod · 0.95
ReadMethod · 0.45

Tested by

no test coverage detected