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}
80 lines
1.3 KiB
JavaScript
80 lines
1.3 KiB
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.
|
|
|
|
// Flags: --harmony-classes --harmony-sloppy
|
|
|
|
|
|
(function Method() {
|
|
class C {
|
|
eval() {
|
|
return 1;
|
|
}
|
|
arguments() {
|
|
return 2;
|
|
}
|
|
static eval() {
|
|
return 3;
|
|
}
|
|
static arguments() {
|
|
return 4;
|
|
}
|
|
};
|
|
|
|
assertEquals(1, new C().eval());
|
|
assertEquals(2, new C().arguments());
|
|
assertEquals(3, C.eval());
|
|
assertEquals(4, C.arguments());
|
|
})();
|
|
|
|
|
|
(function Getters() {
|
|
class C {
|
|
get eval() {
|
|
return 1;
|
|
}
|
|
get arguments() {
|
|
return 2;
|
|
}
|
|
static get eval() {
|
|
return 3;
|
|
}
|
|
static get arguments() {
|
|
return 4;
|
|
}
|
|
};
|
|
|
|
assertEquals(1, new C().eval);
|
|
assertEquals(2, new C().arguments);
|
|
assertEquals(3, C.eval);
|
|
assertEquals(4, C.arguments);
|
|
})();
|
|
|
|
|
|
(function Setters() {
|
|
var x = 0;
|
|
class C {
|
|
set eval(v) {
|
|
x = v;
|
|
}
|
|
set arguments(v) {
|
|
x = v;
|
|
}
|
|
static set eval(v) {
|
|
x = v;
|
|
}
|
|
static set arguments(v) {
|
|
x = v;
|
|
}
|
|
};
|
|
|
|
new C().eval = 1;
|
|
assertEquals(1, x);
|
|
new C().arguments = 2;
|
|
assertEquals(2, x);
|
|
C.eval = 3;
|
|
assertEquals(3, x);
|
|
C.arguments = 4;
|
|
assertEquals(4, x);
|
|
})();
|