64abe65210
We incorrectly disallowed eval and arguments in accessor and method names. This was because we checked the name inside the ParseFunctionLiteral. We now flag accessors so that lazy parsing of these functions are treated correctly. BUG=v8:1984 R=adamk, dslomov@chromium.org LOG=N Review URL: https://codereview.chromium.org/899363002 Cr-Commit-Position: refs/heads/master@{#26497}
60 lines
940 B
JavaScript
60 lines
940 B
JavaScript
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
|
|
(function TestSloppyMode() {
|
|
var e = 1, a = 2;
|
|
var o = {
|
|
get eval() {
|
|
return e;
|
|
},
|
|
set eval(v) {
|
|
e = v;
|
|
},
|
|
get arguments() {
|
|
return a;
|
|
},
|
|
set arguments(v) {
|
|
a = v;
|
|
},
|
|
};
|
|
|
|
assertEquals(1, o.eval);
|
|
o.eval = 3;
|
|
assertEquals(3, e);
|
|
|
|
assertEquals(2, o.arguments);
|
|
o.arguments = 4;
|
|
assertEquals(4, a);
|
|
})();
|
|
|
|
|
|
(function TestStrictMode() {
|
|
'use strict';
|
|
|
|
var e = 1, a = 2;
|
|
var o = {
|
|
get eval() {
|
|
return e;
|
|
},
|
|
set eval(v) {
|
|
e = v;
|
|
},
|
|
get arguments() {
|
|
return a;
|
|
},
|
|
set arguments(v) {
|
|
a = v;
|
|
},
|
|
};
|
|
|
|
assertEquals(1, o.eval);
|
|
o.eval = 3;
|
|
assertEquals(3, e);
|
|
|
|
assertEquals(2, o.arguments);
|
|
o.arguments = 4;
|
|
assertEquals(4, a);
|
|
})();
|