Commit f89acb64 authored by Chunyang Dai's avatar Chunyang Dai Committed by Weiliang Lin

X87: harmony-scoping: make assignment to 'const' a late error.

port 6ac4de87

original commit message:
  harmony-scoping: make assignment to 'const' a late error.

  Per TC39 Nov 2014 decision. This patch also changes behavior for "legacy const":
  assignments to sloppy const in strict mode is now also a type error. This fixes
  v8:2243 and also brings us in compliance with other engines re assignment to function
  names (see updated webkit test), but might have bigger implications. That change can
  easily be reverted by changing Variable::IsSignallingAssignmentToConst.

BUG=
R=dslomov@chromium.org, weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/763033002

Patch from Chunyang Dai <chunyang.dai@intel.com>.

Cr-Commit-Position: refs/heads/master@{#25532}
parent 61c86199
......@@ -2562,7 +2562,6 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
__ CallRuntime(Runtime::kThrowReferenceError, 1);
__ bind(&assign);
EmitStoreToStackLocalOrContextSlot(var, location);
} else if (!var->is_const_mode() || op == Token::INIT_CONST) {
if (var->IsLookupSlot()) {
// Assignment to var.
......@@ -2584,8 +2583,9 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
}
EmitStoreToStackLocalOrContextSlot(var, location);
}
} else if (IsSignallingAssignmentToConst(var, op, strict_mode())) {
__ CallRuntime(Runtime::kThrowConstAssignError, 0);
}
// Non-initializing assignments to consts are ignored.
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment