v8/test/mjsunit/harmony/class-property-name-eval-arguments.js
arv 64abe65210 Allow eval and arguments as property names
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}
2015-02-06 18:04:21 +00:00

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);
})();