src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java
Print this page
*** 75,85 ****
--- 75,87 ----
import jdk.nashorn.internal.ir.BreakNode;
import jdk.nashorn.internal.ir.CallNode;
import jdk.nashorn.internal.ir.CaseNode;
import jdk.nashorn.internal.ir.CatchNode;
import jdk.nashorn.internal.ir.ContinueNode;
+ import jdk.nashorn.internal.ir.DebuggerNode;
import jdk.nashorn.internal.ir.EmptyNode;
+ import jdk.nashorn.internal.ir.ErrorNode;
import jdk.nashorn.internal.ir.Expression;
import jdk.nashorn.internal.ir.ExpressionStatement;
import jdk.nashorn.internal.ir.ForNode;
import jdk.nashorn.internal.ir.FunctionNode;
import jdk.nashorn.internal.ir.FunctionNode.CompilationState;
*** 824,835 ****
--- 826,842 ----
}
}
}
}
} catch (final Exception e) {
+ final int errorLine = line;
+ final long errorToken = token;
//recover parsing
recover(e);
+ final ErrorNode errorExpr = new ErrorNode(errorToken, finish);
+ final ExpressionStatement expressionStatement = new ExpressionStatement(errorLine, errorToken, finish, errorExpr);
+ appendStatement(expressionStatement);
}
// No backtracking from here on.
stream.commit(k);
}
*** 982,992 ****
* see 12.1
*
* Parse a statement block.
*/
private void block() {
! appendStatement(new BlockStatement(line, getBlock(true)));
}
/**
* StatementList :
* Statement
--- 989,999 ----
* see 12.1
*
* Parse a statement block.
*/
private void block() {
! appendStatement(new BlockStatement(line, getBlock(true), false));
}
/**
* StatementList :
* Statement
*** 1337,1347 ****
if (outer != null) {
restoreBlock(outer);
appendStatement(new BlockStatement(startLine, new Block(
outer.getToken(),
body.getFinish(),
! outer.getStatements())));
}
}
/**
* ...IterationStatement :
--- 1344,1354 ----
if (outer != null) {
restoreBlock(outer);
appendStatement(new BlockStatement(startLine, new Block(
outer.getToken(),
body.getFinish(),
! outer.getStatements()), true));
}
}
/**
* ...IterationStatement :
*** 1881,1891 ****
appendStatement(tryNode);
} finally {
restoreBlock(outer);
}
! appendStatement(new BlockStatement(startLine, new Block(tryToken, finish, outer.getFlags(), outer.getStatements())));
}
/**
* DebuggerStatement :
* debugger ;
--- 1888,1898 ----
appendStatement(tryNode);
} finally {
restoreBlock(outer);
}
! appendStatement(new BlockStatement(startLine, new Block(tryToken, finish, outer.getFlags(), outer.getStatements()), true));
}
/**
* DebuggerStatement :
* debugger ;
*** 1899,1909 ****
final int debuggerLine = line;
final long debuggerToken = token;
// DEBUGGER tested in caller.
next();
endOfLine();
! appendStatement(new ExpressionStatement(debuggerLine, debuggerToken, finish, new RuntimeNode(debuggerToken, finish, RuntimeNode.Request.DEBUGGER, Collections.<Expression>emptyList())));
}
/**
* PrimaryExpression :
* this
--- 1906,1916 ----
final int debuggerLine = line;
final long debuggerToken = token;
// DEBUGGER tested in caller.
next();
endOfLine();
! appendStatement(new DebuggerNode(debuggerLine, debuggerToken, finish));
}
/**
* PrimaryExpression :
* this