mirror of https://github.com/tc39/test262.git
Add additional tests for tc39/ecma262#3307.
Ensure that the following cases are covered: - https://github.com/tc39/ecma262/issues/3295#issuecomment-2058110314 - https://github.com/tc39/ecma262/issues/2659#issue-1131245695
This commit is contained in:
parent
830b17a3a0
commit
007b333af2
|
@ -74,7 +74,7 @@ function targetKey() {
|
||||||
|
|
||||||
assert.compareArray(log, [
|
assert.compareArray(log, [
|
||||||
"source", "iterator",
|
"source", "iterator",
|
||||||
"target", "target-key", "target-key-tostring",
|
"target", "target-key",
|
||||||
"iterator-step", "iterator-done",
|
"iterator-step", "iterator-done",
|
||||||
"set",
|
"target-key-tostring", "set",
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -70,6 +70,6 @@ function targetKey() {
|
||||||
|
|
||||||
assert.compareArray(log, [
|
assert.compareArray(log, [
|
||||||
"source", "source-key", "source-key-tostring",
|
"source", "source-key", "source-key-tostring",
|
||||||
"target", "target-key", "target-key-tostring",
|
"target", "target-key",
|
||||||
"get", "set",
|
"get", "target-key-tostring", "set",
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright (C) 2024 Sony Interactive Entertainment Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-evaluate-property-access-with-expression-key
|
||||||
|
description: When getting the value of o[p], ToObject(o) precedes ToPropertyKey(p).
|
||||||
|
info: |
|
||||||
|
13.3.3 EvaluatePropertyAccessWithExpressionKey ( baseValue, expression, strict )
|
||||||
|
1. Let _propertyNameReference_ be ? Evaluation of _expression_.
|
||||||
|
2. Let _propertyNameValue_ be ? GetValue(_propertyNameReference_).
|
||||||
|
...
|
||||||
|
4. Return the Reference Record { [[Base]]: _baseValue_, [[ReferencedName]]: _propertyNameValue_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }.
|
||||||
|
|
||||||
|
6.2.5.5 GetValue ( V )
|
||||||
|
1. If V is not a Reference Record, return V.
|
||||||
|
...
|
||||||
|
3. If IsPropertyReference(V) is true, then
|
||||||
|
a. Let baseObj be ? ToObject(V.[[Base]]).
|
||||||
|
...
|
||||||
|
c. If V.[[ReferencedName]] is neither a String nor a Symbol, then
|
||||||
|
i. Let referencedName be ? ToPropertyKey(V.[[ReferencedName]]).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
var base = null;
|
||||||
|
var prop = {
|
||||||
|
toString: function() {
|
||||||
|
throw new Test262Error("property key evaluated");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
base[prop];
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
var base = undefined;
|
||||||
|
var prop = {
|
||||||
|
toString: function() {
|
||||||
|
throw new Test262Error("property key evaluated");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
base[prop];
|
||||||
|
});
|
Loading…
Reference in New Issue