mirror of https://github.com/tc39/test262.git
Add tests for accessor names
This commit is contained in:
parent
d93bee595e
commit
228851fbe4
|
@ -0,0 +1,23 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Abrupt completion when evaluating expression
|
||||||
|
template: error
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- setup
|
||||||
|
var thrower = function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
};
|
||||||
|
|
||||||
|
//- error
|
||||||
|
Test262Error
|
||||||
|
//- name
|
||||||
|
thrower()
|
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Abrupt completion when coercing to property key value
|
||||||
|
template: error
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
|
||||||
|
7.1.14 ToPropertyKey
|
||||||
|
|
||||||
|
1. Let key be ? ToPrimitive(argument, hint String).
|
||||||
|
|
||||||
|
7.1.1 ToPrimitive
|
||||||
|
|
||||||
|
[...]
|
||||||
|
7. Return ? OrdinaryToPrimitive(input, hint).
|
||||||
|
|
||||||
|
7.1.1.1 OrdinaryToPrimitive
|
||||||
|
|
||||||
|
5. For each name in methodNames in List order, do
|
||||||
|
[...]
|
||||||
|
6. Throw a TypeError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- setup
|
||||||
|
var badKey = Object.create(null);
|
||||||
|
|
||||||
|
//- error
|
||||||
|
TypeError
|
||||||
|
//- name
|
||||||
|
badKey
|
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Abrupt completion when resolving reference value
|
||||||
|
template: error
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- error
|
||||||
|
ReferenceError
|
||||||
|
//- name
|
||||||
|
test262unresolvable
|
|
@ -0,0 +1,24 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (AssignmentExpression)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- setup
|
||||||
|
var _;
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
[_ = 'str' + 'ing']
|
||||||
|
//- referenceWith
|
||||||
|
'string'
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/class/accessor-name-inst-
|
||||||
|
name: Class declaration, instance method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
class C {
|
||||||
|
get /*{ declareWith }*/() { return 'get string'; }
|
||||||
|
set /*{ declareWith }*/(param) { stringSet = param; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(C.prototype[/*{ referenceWith }*/], 'get string');
|
||||||
|
|
||||||
|
C.prototype[/*{ referenceWith }*/] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/class/accessor-name-static-
|
||||||
|
name: Class declaration, static method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
class C {
|
||||||
|
static get /*{ declareWith }*/() { return 'get string'; }
|
||||||
|
static set /*{ declareWith }*/(param) { stringSet = param; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(C[/*{ referenceWith }*/], 'get string');
|
||||||
|
|
||||||
|
C[/*{ referenceWith }*/] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/expressions/class/accessor-name-inst-
|
||||||
|
name: Class expression, instance method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
var C = class {
|
||||||
|
get /*{ declareWith }*/() { return 'get string'; }
|
||||||
|
set /*{ declareWith }*/(param) { stringSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(C.prototype[/*{ referenceWith }*/], 'get string');
|
||||||
|
|
||||||
|
C.prototype[/*{ referenceWith }*/] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/expressions/class/accessor-name-static-
|
||||||
|
name: Class expression, static method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
var C = class {
|
||||||
|
static get /*{ declareWith }*/() { return 'get string'; }
|
||||||
|
static set /*{ declareWith }*/(param) { stringSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(C[/*{ referenceWith }*/], 'get string');
|
||||||
|
|
||||||
|
C[/*{ referenceWith }*/] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,27 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/expressions/object/accessor-name-
|
||||||
|
name: Object initializer
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
info: |
|
||||||
|
ObjectLiteral :
|
||||||
|
{ PropertyDefinitionList }
|
||||||
|
{ PropertyDefinitionList , }
|
||||||
|
|
||||||
|
1. Let obj be ObjectCreate(%ObjectPrototype%).
|
||||||
|
2. Let status be the result of performing PropertyDefinitionEvaluation of
|
||||||
|
PropertyDefinitionList with arguments obj and true.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
var obj = {
|
||||||
|
get [/*{ declareWith }*/]() { return 'get string'; },
|
||||||
|
set [/*{ declareWith }*/](param) { stringSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(obj[/*{ referenceWith }*/], 'get string');
|
||||||
|
|
||||||
|
obj[/*{ referenceWith }*/] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/class/accessor-name-inst-
|
||||||
|
name: Class declaration, instance method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
class C {
|
||||||
|
get [/*{ name }*/]() {}
|
||||||
|
}
|
||||||
|
}, '`get` accessor');
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
class C {
|
||||||
|
set [/*{ name }*/](_) {}
|
||||||
|
}
|
||||||
|
}, '`set` accessor');
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/class/accessor-name-static-
|
||||||
|
name: Class declaration, static method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
class C {
|
||||||
|
static get [/*{ name }*/]() {}
|
||||||
|
}
|
||||||
|
}, '`get` accessor');
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
class C {
|
||||||
|
static set [/*{ name }*/](_) {}
|
||||||
|
}
|
||||||
|
}, '`set` accessor');
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/expressions/class/accessor-name-inst-
|
||||||
|
name: Class expression, instance method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
0, class {
|
||||||
|
get [/*{ name }*/]() {}
|
||||||
|
};
|
||||||
|
}, '`get` accessor');
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
0, class {
|
||||||
|
set [/*{ name }*/](_) {}
|
||||||
|
};
|
||||||
|
}, '`set` accessor');
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/expressions/class/accessor-name-static-
|
||||||
|
name: Class expression, static method
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
0, class {
|
||||||
|
static get [/*{ name }*/]() {}
|
||||||
|
};
|
||||||
|
}, '`get` accessor');
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
0, class {
|
||||||
|
static set [/*{ name }*/](_) {}
|
||||||
|
};
|
||||||
|
}, '`set` accessor');
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/expressions/object/accessor-name-
|
||||||
|
name: Object initializer
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
info: |
|
||||||
|
ObjectLiteral :
|
||||||
|
{ PropertyDefinitionList }
|
||||||
|
{ PropertyDefinitionList , }
|
||||||
|
|
||||||
|
1. Let obj be ObjectCreate(%ObjectPrototype%).
|
||||||
|
2. Let status be the result of performing PropertyDefinitionEvaluation of
|
||||||
|
PropertyDefinitionList with arguments obj and true.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
({
|
||||||
|
get [/*{ name }*/]() {}
|
||||||
|
});
|
||||||
|
}, '`get` accessor');
|
||||||
|
|
||||||
|
assert.throws(/*{ error }*/, function() {
|
||||||
|
({
|
||||||
|
set [/*{ name }*/](_) {}
|
||||||
|
});
|
||||||
|
}, '`set` accessor');
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal in binary notation)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
0b10
|
||||||
|
//- referenceWith
|
||||||
|
'2'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal in exponent notation)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
1E+9
|
||||||
|
//- referenceWith
|
||||||
|
'1000000000'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal in hexadecimal notation)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
0x10
|
||||||
|
//- referenceWith
|
||||||
|
'16'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal with leading decimal point)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
.1
|
||||||
|
//- referenceWith
|
||||||
|
'0.1'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal with non-canonical representation)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
0.0000001
|
||||||
|
//- referenceWith
|
||||||
|
'1e-7'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal in octal notation)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
0o10
|
||||||
|
//- referenceWith
|
||||||
|
'8'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (numeric literal zero)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
0
|
||||||
|
//- referenceWith
|
||||||
|
'0'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (string literal containing a character escape sequence)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
'character\tescape'
|
||||||
|
//- referenceWith
|
||||||
|
'character escape'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (string literal using double quotes)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
"doubleQuote"
|
||||||
|
//- referenceWith
|
||||||
|
"doubleQuote"
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (string literal, the empty string)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
''
|
||||||
|
//- referenceWith
|
||||||
|
''
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (string literal containing a hexadecimal escape sequence)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
'hex\x45scape'
|
||||||
|
//- referenceWith
|
||||||
|
'hexEscape'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (string literal using single quotes)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
'singleQuote'
|
||||||
|
//- referenceWith
|
||||||
|
'singleQuote'
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
desc: Computed values as accessor property names (string literal containing a Unicode escape sequence)
|
||||||
|
template: default
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
//- declareWith
|
||||||
|
'unicod\u{000065}Escape'
|
||||||
|
//- referenceWith
|
||||||
|
'unicodeEscape'
|
|
@ -0,0 +1,37 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
description: >
|
||||||
|
AssignmentExpression may contain `in` keyword regardless of outer context
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var empty = Object.create(null);
|
||||||
|
var C, value;
|
||||||
|
|
||||||
|
for (C = class { get ['x' in empty]() { return 'via get'; } }; ; ) {
|
||||||
|
value = C.prototype.false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(value, 'via get');
|
||||||
|
|
||||||
|
for (C = class { set ['x' in empty](param) { value = param; } }; ; ) {
|
||||||
|
C.prototype.false = 'via set';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(value, 'via set');
|
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
The `yield` keyword behaves as a YieldExpression within a generator function
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var yieldSet, C, iter;
|
||||||
|
function* g() {
|
||||||
|
C = class {
|
||||||
|
get [yield]() { return 'get yield'; }
|
||||||
|
set [yield](param) { yieldSet = param; }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
iter = g();
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
iter.next('first');
|
||||||
|
iter.next('second');
|
||||||
|
|
||||||
|
assert.sameValue(C.prototype.first, 'get yield');
|
||||||
|
|
||||||
|
C.prototype.second = 'set yield';
|
||||||
|
|
||||||
|
assert.sameValue(yieldSet, 'set yield');
|
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: Computed values as accessor property names (string literal containing a line terminator) (Class expression, instance method)
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
var C = class {
|
||||||
|
get 'line\
|
||||||
|
Terminator'
|
||||||
|
() { return 'get string'; }
|
||||||
|
set 'line\
|
||||||
|
Terminator'
|
||||||
|
(param) { stringSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(C.prototype['lineTerminator'], 'get string');
|
||||||
|
|
||||||
|
C.prototype['lineTerminator'] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
description: >
|
||||||
|
AssignmentExpression may contain `in` keyword regardless of outer context
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var empty = Object.create(null);
|
||||||
|
var C, value;
|
||||||
|
|
||||||
|
for (C = class { static get ['x' in empty]() { return 'via get'; } }; ; ) {
|
||||||
|
value = C.false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(value, 'via get');
|
||||||
|
|
||||||
|
for (C = class { static set ['x' in empty](param) { value = param; } }; ; ) {
|
||||||
|
C.false = 'via set';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(value, 'via set');
|
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
The `yield` keyword behaves as a YieldExpression within a generator function
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var yieldSet, C, iter;
|
||||||
|
function* g() {
|
||||||
|
C = class {
|
||||||
|
static get [yield]() { return 'get yield'; }
|
||||||
|
static set [yield](param) { yieldSet = param; }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
iter = g();
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
iter.next('first');
|
||||||
|
iter.next('second');
|
||||||
|
|
||||||
|
assert.sameValue(C.first, 'get yield');
|
||||||
|
|
||||||
|
C.second = 'set yield';
|
||||||
|
|
||||||
|
assert.sameValue(yieldSet, 'set yield');
|
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: Computed values as accessor property names (string literal containing a line terminator) (Class expression, static method)
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
var C = class {
|
||||||
|
static get 'line\
|
||||||
|
Terminator'
|
||||||
|
() { return 'get string'; }
|
||||||
|
static set 'line\
|
||||||
|
Terminator'
|
||||||
|
(param) { stringSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(C['lineTerminator'], 'get string');
|
||||||
|
|
||||||
|
C['lineTerminator'] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,35 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
AssignmentExpression may contain `in` keyword regardless of outer context
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var empty = Object.create(null);
|
||||||
|
var obj, value;
|
||||||
|
|
||||||
|
for (obj = { get ['x' in empty]() { return 'via get'; } }; ; ) {
|
||||||
|
value = obj.false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(value, 'via get');
|
||||||
|
|
||||||
|
for (obj = { set ['x' in empty](param) { value = param; } }; ; ) {
|
||||||
|
obj.false = 'via set';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(value, 'via set');
|
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
The `yield` keyword behaves as a YieldExpression within a generator function
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var yieldSet, obj, iter;
|
||||||
|
function* g() {
|
||||||
|
obj = {
|
||||||
|
get [yield]() { return 'get yield'; },
|
||||||
|
set [yield](param) { yieldSet = param; }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
iter = g();
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
iter.next('first');
|
||||||
|
iter.next('second');
|
||||||
|
|
||||||
|
assert.sameValue(obj.first, 'get yield');
|
||||||
|
|
||||||
|
obj.second = 'set yield';
|
||||||
|
|
||||||
|
assert.sameValue(yieldSet, 'set yield');
|
|
@ -0,0 +1,32 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
The `yield` keyword behaves as an Identifier outside of a generator function
|
||||||
|
info: |
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
flags: [noStrict]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var yield = 'y';
|
||||||
|
var yieldSet;
|
||||||
|
var obj = {
|
||||||
|
get [yield]() { return 'get yield'; },
|
||||||
|
set [yield](param) { yieldSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(obj.y, 'get yield');
|
||||||
|
|
||||||
|
obj.y = 'set yield';
|
||||||
|
|
||||||
|
assert.sameValue(yieldSet, 'set yield');
|
|
@ -0,0 +1,40 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: Computed values as accessor property names (string literal containing a line terminator) (Object initializer)
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
info: |
|
||||||
|
ObjectLiteral :
|
||||||
|
{ PropertyDefinitionList }
|
||||||
|
{ PropertyDefinitionList , }
|
||||||
|
|
||||||
|
1. Let obj be ObjectCreate(%ObjectPrototype%).
|
||||||
|
2. Let status be the result of performing PropertyDefinitionEvaluation of
|
||||||
|
PropertyDefinitionList with arguments obj and true.
|
||||||
|
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
var obj = {
|
||||||
|
get ['line\
|
||||||
|
Terminator'
|
||||||
|
]() { return 'get string'; },
|
||||||
|
set ['line\
|
||||||
|
Terminator'
|
||||||
|
](param) { stringSet = param; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.sameValue(obj['lineTerminator'], 'get string');
|
||||||
|
|
||||||
|
obj['lineTerminator'] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
The `yield` keyword behaves as a YieldExpression within a generator function
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var yieldSet, C, iter;
|
||||||
|
function* g() {
|
||||||
|
class C_ {
|
||||||
|
get [yield]() { return 'get yield'; }
|
||||||
|
set [yield](param) { yieldSet = param; }
|
||||||
|
}
|
||||||
|
|
||||||
|
C = C_;
|
||||||
|
}
|
||||||
|
|
||||||
|
iter = g();
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
iter.next('first');
|
||||||
|
iter.next('second');
|
||||||
|
|
||||||
|
assert.sameValue(C.prototype.first, 'get yield');
|
||||||
|
|
||||||
|
C.prototype.second = 'set yield';
|
||||||
|
|
||||||
|
assert.sameValue(yieldSet, 'set yield');
|
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: Computed values as accessor property names (string literal containing a line terminator) (Class declaration, instance method)
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
i. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments proto and false.
|
||||||
|
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
class C {
|
||||||
|
get 'line\
|
||||||
|
Terminator'
|
||||||
|
() { return 'get string'; }
|
||||||
|
set 'line\
|
||||||
|
Terminator'
|
||||||
|
(param) { stringSet = param; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(C.prototype['lineTerminator'], 'get string');
|
||||||
|
|
||||||
|
C.prototype['lineTerminator'] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
|
@ -0,0 +1,45 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: >
|
||||||
|
The `yield` keyword behaves as a YieldExpression within a generator function
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var yieldSet, C, iter;
|
||||||
|
function* g() {
|
||||||
|
class C_ {
|
||||||
|
static get [yield]() { return 'get yield'; }
|
||||||
|
static set [yield](param) { yieldSet = param; }
|
||||||
|
}
|
||||||
|
|
||||||
|
C = C_;
|
||||||
|
}
|
||||||
|
|
||||||
|
iter = g();
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
iter.next('first');
|
||||||
|
iter.next('second');
|
||||||
|
|
||||||
|
assert.sameValue(C.first, 'get yield');
|
||||||
|
|
||||||
|
C.second = 'set yield';
|
||||||
|
|
||||||
|
assert.sameValue(yieldSet, 'set yield');
|
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright (C) 2017 Mike Pennisi. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: Computed values as accessor property names (string literal containing a line terminator) (Class declaration, static method)
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
21. For each ClassElement m in order from methods
|
||||||
|
a. If IsStatic of m is false, then
|
||||||
|
[...]
|
||||||
|
b. Else,
|
||||||
|
a. Let status be the result of performing PropertyDefinitionEvaluation
|
||||||
|
for m with arguments F and false.
|
||||||
|
|
||||||
|
12.2.6.7 Runtime Semantics: Evaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
ComputedPropertyName : [ AssignmentExpression ]
|
||||||
|
|
||||||
|
1. Let exprValue be the result of evaluating AssignmentExpression.
|
||||||
|
2. Let propName be ? GetValue(exprValue).
|
||||||
|
3. Return ? ToPropertyKey(propName).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var stringSet;
|
||||||
|
|
||||||
|
class C {
|
||||||
|
static get 'line\
|
||||||
|
Terminator'
|
||||||
|
() { return 'get string'; }
|
||||||
|
static set 'line\
|
||||||
|
Terminator'
|
||||||
|
(param) { stringSet = param; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.sameValue(C['lineTerminator'], 'get string');
|
||||||
|
|
||||||
|
C['lineTerminator'] = 'set string';
|
||||||
|
assert.sameValue(stringSet, 'set string');
|
Loading…
Reference in New Issue