Incomplete expression statements are parsed as expression statements
now, rather than local variable declarations. This primarily affects
incomplete member access expressions at the end of blocks.
var begin = get_location ();
// decide between declaration and expression statement
- skip_type ();
+ try {
+ skip_type ();
+ } catch (ParseError e) {
+ prev ();
+ var token = current ();
+ next ();
+ if (token == TokenType.DOT || token == TokenType.DOUBLE_COLON) {
+ rollback (begin);
+ return true;
+ } else {
+ throw e;
+ }
+ }
switch (current ()) {
// invocation expression
case TokenType.OPEN_PARENS: