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

Method parseTryStatement

parser/statement.go:130–164  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

128}
129
130func (self *_parser) parseTryStatement() ast.Statement {
131
132 node := &ast.TryStatement{
133 Try: self.expect(token.TRY),
134 Body: self.parseBlockStatement(),
135 }
136
137 if self.token == token.CATCH {
138 catch := self.idx
139 self.next()
140 var parameter ast.BindingTarget
141 if self.token == token.LEFT_PARENTHESIS {
142 self.next()
143 parameter = self.parseBindingTarget()
144 self.expect(token.RIGHT_PARENTHESIS)
145 }
146 node.Catch = &ast.CatchStatement{
147 Catch: catch,
148 Parameter: parameter,
149 Body: self.parseBlockStatement(),
150 }
151 }
152
153 if self.token == token.FINALLY {
154 self.next()
155 node.Finally = self.parseBlockStatement()
156 }
157
158 if node.Catch == nil && node.Finally == nil {
159 self.error(node.Try, "Missing catch or finally after try")
160 return &ast.BadStatement{From: node.Try, To: node.Body.Idx1()}
161 }
162
163 return node
164}
165
166func (self *_parser) parseFunctionParameterList() *ast.ParameterList {
167 opening := self.expect(token.LEFT_PARENTHESIS)

Callers 1

parseStatementMethod · 0.95

Calls 6

expectMethod · 0.95
parseBlockStatementMethod · 0.95
nextMethod · 0.95
parseBindingTargetMethod · 0.95
errorMethod · 0.95
Idx1Method · 0.65

Tested by

no test coverage detected