···11+// Copyright (C) 2025 Igalia, S.L. All rights reserved.
22+// This code is governed by the BSD license found in the LICENSE file.
33+44+/*---
55+esid: sec-module-namespace-exotic-objects-get-p-receiver
66+desc: _ [[Get]] when namespace object is in the prototype chain
77+info: |
88+ [[Get]] ( _P_, _Receiver_ )
99+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1010+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
1111+ 1. ...
1212+1313+template: trigger-on-possible-export
1414+---*/
1515+1616+//- body
1717+const obj = Object.create(ns);
1818+obj[key];
···11+// Copyright (C) 2025 Igalia, S.L. All rights reserved.
22+// This code is governed by the BSD license found in the LICENSE file.
33+44+/*---
55+esid: sec-module-namespace-exotic-objects-hasproperty-p
66+desc: _ [[HasProperty]] when namespace object is in the prototype chain
77+info: |
88+ [[HasProperty]] ( _P_, _Receiver_ )
99+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1010+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
1111+ 1. ...
1212+1313+template: trigger-on-possible-export
1414+---*/
1515+1616+//- body
1717+const obj = Object.create(ns);
1818+key in obj;
···11+// Copyright (C) 2025 Igalia, S.L. All rights reserved.
22+// This code is governed by the BSD license found in the LICENSE file.
33+44+/*---
55+esid: sec-privateget
66+desc: PrivateGet and PrivateSet in a namespace object
77+info: |
88+ PrivateGet ( O, P )
99+ 1. Let entry be PrivateElementFind(O, P).
1010+ 1. If entry is EMPTY, throw a TypeError exception.
1111+ 1. If entry.[[Kind]] is either FIELD or METHOD, then
1212+ a. Return entry.[[Value]].
1313+ ...
1414+1515+ PrivateSet ( O, P, value )
1616+ 1. Let entry be PrivateElementFind(O, P).
1717+ 1. If entry is EMPTY, throw a TypeError exception.
1818+ 1. If entry.[[Kind]] is FIELD, then
1919+ a. Set entry.[[Value]] to value.
2020+ ...
2121+2222+template: ignore
2323+features: [import-defer, nonextensible-applies-to-private]
2424+---*/
2525+2626+//- body
2727+class Marker extends function (x) { return x } {
2828+ #mark = "bar";
2929+3030+ static mark(obj) {
3131+ new Marker(obj);
3232+ }
3333+3434+ static access(obj) {
3535+ return #mark in obj;
3636+ }
3737+}
3838+3939+assert.throws(TypeError, function () {
4040+ Marker.mark(ns);
4141+});
4242+4343+assert.sameValue(false, Marker.access(ns));
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/get-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/then-exported.template
44+/*---
55+description: _ [[Get]] when namespace object is in the prototype chain (of 'then' when it is an exported name, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[Get]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep-then_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "then";
3838+3939+const obj = Object.create(ns);
4040+obj[key];
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/hasProperty-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/then-exported.template
44+/*---
55+description: _ [[HasProperty]] when namespace object is in the prototype chain (of 'then' when it is an exported name, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[HasProperty]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep-then_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "then";
3838+3939+const obj = Object.create(ns);
4040+key in obj;
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/get-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/then-not-exported.template
44+/*---
55+description: _ [[Get]] when namespace object is in the prototype chain (of 'then' when it is not an exported name, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[Get]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "then";
3838+3939+const obj = Object.create(ns);
4040+obj[key];
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/hasProperty-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/then-not-exported.template
44+/*---
55+description: _ [[HasProperty]] when namespace object is in the prototype chain (of 'then' when it is not an exported name, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[HasProperty]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "then";
3838+3939+const obj = Object.create(ns);
4040+key in obj;
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/private-name-access.case
33+// - src/import-defer/ignore/ignore.template
44+/*---
55+description: PrivateGet and PrivateSet in a namespace object (does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer, nonextensible-applies-to-private]
88+flags: [generated, module]
99+info: |
1010+ PrivateGet ( O, P )
1111+ 1. Let entry be PrivateElementFind(O, P).
1212+ 1. If entry is EMPTY, throw a TypeError exception.
1313+ 1. If entry.[[Kind]] is either FIELD or METHOD, then
1414+ a. Return entry.[[Value]].
1515+ ...
1616+1717+ PrivateSet ( O, P, value )
1818+ 1. Let entry be PrivateElementFind(O, P).
1919+ 1. If entry is EMPTY, throw a TypeError exception.
2020+ 1. If entry.[[Kind]] is FIELD, then
2121+ a. Set entry.[[Value]] to value.
2222+ ...
2323+2424+---*/
2525+2626+2727+import "./setup_FIXTURE.js";
2828+2929+import defer * as ns from "./dep_FIXTURE.js";
3030+3131+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3232+3333+class Marker extends function (x) { return x } {
3434+ #mark = "bar";
3535+3636+ static mark(obj) {
3737+ new Marker(obj);
3838+ }
3939+4040+ static access(obj) {
4141+ return #mark in obj;
4242+ }
4343+}
4444+4545+assert.throws(TypeError, function () {
4646+ Marker.mark(ns);
4747+});
4848+4949+assert.sameValue(false, Marker.access(ns));
5050+5151+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/get-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/symbol-other.template
44+/*---
55+description: _ [[Get]] when namespace object is in the prototype chain (of a symbol that is not a property of the namespace object, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[Get]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = Symbol();
3838+3939+const obj = Object.create(ns);
4040+obj[key];
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/hasProperty-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/symbol-other.template
44+/*---
55+description: _ [[HasProperty]] when namespace object is in the prototype chain (of a symbol that is not a property of the namespace object, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[HasProperty]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = Symbol();
3838+3939+const obj = Object.create(ns);
4040+key in obj;
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/get-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/symbol-toStringTag.template
44+/*---
55+description: _ [[Get]] when namespace object is in the prototype chain (of Symbol.toStringTag, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[Get]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = Symbol.toStringTag;
3838+3939+const obj = Object.create(ns);
4040+obj[key];
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/hasProperty-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/symbol-toStringTag.template
44+/*---
55+description: _ [[HasProperty]] when namespace object is in the prototype chain (of Symbol.toStringTag, does not trigger execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[HasProperty]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = Symbol.toStringTag;
3838+3939+const obj = Object.create(ns);
4040+key in obj;
4141+4242+assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/get-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/string-exported.template
44+/*---
55+description: _ [[Get]] when namespace object is in the prototype chain (of a string that is an exported name, triggers execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[Get]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "exported";
3838+3939+const obj = Object.create(ns);
4040+obj[key];
4141+4242+assert(globalThis.evaluations.length > 0, "It triggers evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/hasProperty-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/string-exported.template
44+/*---
55+description: _ [[HasProperty]] when namespace object is in the prototype chain (of a string that is an exported name, triggers execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[HasProperty]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "exported";
3838+3939+const obj = Object.create(ns);
4040+key in obj;
4141+4242+assert(globalThis.evaluations.length > 0, "It triggers evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/get-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/string-not-exported.template
44+/*---
55+description: _ [[Get]] when namespace object is in the prototype chain (of a string that is not an exported name, triggers execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[Get]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "notExported";
3838+3939+const obj = Object.create(ns);
4040+obj[key];
4141+4242+assert(globalThis.evaluations.length > 0, "It triggers evaluation");
···11+// This file was procedurally generated from the following sources:
22+// - src/import-defer/hasProperty-in-prototype.case
33+// - src/import-defer/trigger-on-possible-export/string-not-exported.template
44+/*---
55+description: _ [[HasProperty]] when namespace object is in the prototype chain (of a string that is not an exported name, triggers execution)
66+esid: sec-module-namespace-exotic-objects
77+features: [import-defer]
88+flags: [generated, module]
99+info: |
1010+ IsSymbolLikeNamespaceKey ( _P_, _O_ )
1111+ 1. If _P_ is a Symbol, return *true*.
1212+ 1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1313+ 1. Return *false*.
1414+1515+ GetModuleExportsList ( _O_ )
1616+ 1. If _O_.[[Deferred]] is *true*, then
1717+ 1. Let _m_ be _O_.[[Module]].
1818+ 1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1919+ 1. Perform ? EvaluateSync(_m_).
2020+ 1. Return _O_.[[Exports]].
2121+2222+2323+ [[HasProperty]] ( _P_, _Receiver_ )
2424+ 1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
2525+ 1. Let _exports_ be ? GetModuleExportsList(_O_).
2626+ 1. ...
2727+2828+---*/
2929+3030+3131+import "./setup_FIXTURE.js";
3232+3333+import defer * as ns from "./dep_FIXTURE.js";
3434+3535+assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");
3636+3737+var key = "notExported";
3838+3939+const obj = Object.create(ns);
4040+key in obj;
4141+4242+assert(globalThis.evaluations.length > 0, "It triggers evaluation");