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, [
|
||||
"source", "iterator",
|
||||
"target", "target-key", "target-key-tostring",
|
||||
"target", "target-key",
|
||||
"iterator-step", "iterator-done",
|
||||
"set",
|
||||
"target-key-tostring", "set",
|
||||
]);
|
||||
|
|
|
@ -70,6 +70,6 @@ function targetKey() {
|
|||
|
||||
assert.compareArray(log, [
|
||||
"source", "source-key", "source-key-tostring",
|
||||
"target", "target-key", "target-key-tostring",
|
||||
"get", "set",
|
||||
"target", "target-key",
|
||||
"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