Created attachment 580553 [details] [diff] [review] Patch Construct them using constructors that are purely a function of their arguments, and make access to the associated label type-safe. This is more code than the current way, but I think it's easier to follow by being more explicit and not relying on implicit state.
Comment on attachment 580553 [details] [diff] [review] Patch Splitting BreakStatement and ContinueStatement is farther than I would have gone, but OK. In Parser.cpp, Parser::statement, case TOK_BREAK: >+ BreakStatement *breakStmt = tc->parser->new_<BreakStatement>(label, begin, end); >+ if (!breakStmt) > return NULL; [...] >+ pn = breakStmt; Looks like you could just assign directly to pn. Same thing in case TOK_CONTINUE. Those two cases look awfully similar.