< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java

Print this page

        

*** 1102,1117 **** try { init = assignmentExpression(!isStatement); } finally { defaultNames.pop(); } ! } else if (varType == CONST) { throw error(AbstractParser.message("missing.const.assignment", name.getName())); } // Allocate var node. ! final VarNode var = new VarNode(varLine, varToken, sourceOrder, finish, name.setIsDeclaredHere(), init, varFlags); vars.add(var); appendStatement(var); if (type != COMMARIGHT) { break; --- 1102,1119 ---- try { init = assignmentExpression(!isStatement); } finally { defaultNames.pop(); } ! } else if (varType == CONST && isStatement) { throw error(AbstractParser.message("missing.const.assignment", name.getName())); } + // Only set declaration flag on lexically scoped let/const as it adds runtime overhead. + final IdentNode actualName = varType == LET || varType == CONST ? name.setIsDeclaredHere() : name; // Allocate var node. ! final VarNode var = new VarNode(varLine, varToken, sourceOrder, finish, actualName, init, varFlags); vars.add(var); appendStatement(var); if (type != COMMARIGHT) { break;
*** 1245,1255 **** next(); } expect(LPAREN); - switch (type) { case VAR: // Var declaration captured in for outer block. vars = variableStatement(type, false, forStart); break; --- 1247,1256 ----
< prev index next >