Created attachment 580553 [details] [diff] [review]
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]
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.