Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions src/import-defer/get-in-prototype.case
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-module-namespace-exotic-objects-get-p-receiver
desc: _ [[Get]] when namespace object is in the prototype chain
info: |
[[Get]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

template: trigger-on-possible-export
---*/

//- body
const obj = Object.create(ns);
obj[key];
18 changes: 18 additions & 0 deletions src/import-defer/hasProperty-in-prototype.case
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-module-namespace-exotic-objects-hasproperty-p
desc: _ [[HasProperty]] when namespace object is in the prototype chain
info: |
[[HasProperty]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

template: trigger-on-possible-export
---*/

//- body
const obj = Object.create(ns);
key in obj;
39 changes: 39 additions & 0 deletions src/import-defer/private-name-access.case
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright (C) 2025 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-privateget
desc: PrivateGet and PrivateSet in a namespace object
info: |
PrivateGet ( O, P )
1. Let entry be PrivateElementFind(O, P).
1. If entry is EMPTY, throw a TypeError exception.
1. If entry.[[Kind]] is either FIELD or METHOD, then
a. Return entry.[[Value]].
...

PrivateSet ( O, P, value )
1. Let entry be PrivateElementFind(O, P).
1. If entry is EMPTY, throw a TypeError exception.
1. If entry.[[Kind]] is FIELD, then
a. Set entry.[[Value]] to value.
...

template: ignore
---*/

//- body
class Marker extends function (x) { return x } {
#mark = "bar";

static mark(obj) {
new Marker(obj);
}

static getMark(obj) {
return obj.#mark;
}
}

Marker.mark(ns);
assert.sameValue(Marker.getMark(ns), "bar");
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/get-in-prototype.case
// - src/import-defer/trigger-on-possible-export/then-exported.template
/*---
description: _ [[Get]] when namespace object is in the prototype chain (of 'then' when it is an exported name, does not trigger execution)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
IsSymbolLikeNamespaceKey ( _P_, _O_ )
1. If _P_ is a Symbol, return *true*.
1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1. Return *false*.

GetModuleExportsList ( _O_ )
1. If _O_.[[Deferred]] is *true*, then
1. Let _m_ be _O_.[[Module]].
1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1. Perform ? EvaluateSync(_m_).
1. Return _O_.[[Exports]].


[[Get]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep-then_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

var key = "then";

const obj = Object.create(ns);
obj[key];

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/hasProperty-in-prototype.case
// - src/import-defer/trigger-on-possible-export/then-exported.template
/*---
description: _ [[HasProperty]] when namespace object is in the prototype chain (of 'then' when it is an exported name, does not trigger execution)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
IsSymbolLikeNamespaceKey ( _P_, _O_ )
1. If _P_ is a Symbol, return *true*.
1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1. Return *false*.

GetModuleExportsList ( _O_ )
1. If _O_.[[Deferred]] is *true*, then
1. Let _m_ be _O_.[[Module]].
1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1. Perform ? EvaluateSync(_m_).
1. Return _O_.[[Exports]].


[[HasProperty]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep-then_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

var key = "then";

const obj = Object.create(ns);
key in obj;

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/get-in-prototype.case
// - src/import-defer/trigger-on-possible-export/then-not-exported.template
/*---
description: _ [[Get]] when namespace object is in the prototype chain (of 'then' when it is not an exported name, does not trigger execution)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
IsSymbolLikeNamespaceKey ( _P_, _O_ )
1. If _P_ is a Symbol, return *true*.
1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1. Return *false*.

GetModuleExportsList ( _O_ )
1. If _O_.[[Deferred]] is *true*, then
1. Let _m_ be _O_.[[Module]].
1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1. Perform ? EvaluateSync(_m_).
1. Return _O_.[[Exports]].


[[Get]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

var key = "then";

const obj = Object.create(ns);
obj[key];

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/hasProperty-in-prototype.case
// - src/import-defer/trigger-on-possible-export/then-not-exported.template
/*---
description: _ [[HasProperty]] when namespace object is in the prototype chain (of 'then' when it is not an exported name, does not trigger execution)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
IsSymbolLikeNamespaceKey ( _P_, _O_ )
1. If _P_ is a Symbol, return *true*.
1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1. Return *false*.

GetModuleExportsList ( _O_ )
1. If _O_.[[Deferred]] is *true*, then
1. Let _m_ be _O_.[[Module]].
1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1. Perform ? EvaluateSync(_m_).
1. Return _O_.[[Exports]].


[[HasProperty]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

var key = "then";

const obj = Object.create(ns);
key in obj;

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/private-name-access.case
// - src/import-defer/ignore/ignore.template
/*---
description: PrivateGet and PrivateSet in a namespace object (does not trigger execution)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
PrivateGet ( O, P )
1. Let entry be PrivateElementFind(O, P).
1. If entry is EMPTY, throw a TypeError exception.
1. If entry.[[Kind]] is either FIELD or METHOD, then
a. Return entry.[[Value]].
...

PrivateSet ( O, P, value )
1. Let entry be PrivateElementFind(O, P).
1. If entry is EMPTY, throw a TypeError exception.
1. If entry.[[Kind]] is FIELD, then
a. Set entry.[[Value]] to value.
...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

class Marker extends function (x) { return x } {
#mark = "bar";

static mark(obj) {
new Marker(obj);
}

static getMark(obj) {
return obj.#mark;
}
}

Marker.mark(ns);
assert.sameValue(Marker.getMark(ns), "bar");

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/get-in-prototype.case
// - src/import-defer/trigger-on-possible-export/symbol-other.template
/*---
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)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
IsSymbolLikeNamespaceKey ( _P_, _O_ )
1. If _P_ is a Symbol, return *true*.
1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1. Return *false*.

GetModuleExportsList ( _O_ )
1. If _O_.[[Deferred]] is *true*, then
1. Let _m_ be _O_.[[Module]].
1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1. Perform ? EvaluateSync(_m_).
1. Return _O_.[[Exports]].


[[Get]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

var key = Symbol();

const obj = Object.create(ns);
obj[key];

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// This file was procedurally generated from the following sources:
// - src/import-defer/hasProperty-in-prototype.case
// - src/import-defer/trigger-on-possible-export/symbol-other.template
/*---
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)
esid: sec-module-namespace-exotic-objects
features: [import-defer]
flags: [generated, module]
info: |
IsSymbolLikeNamespaceKey ( _P_, _O_ )
1. If _P_ is a Symbol, return *true*.
1. If _ns_.[[Deferred]] is *true* and _P_ is "then", return *true*.
1. Return *false*.

GetModuleExportsList ( _O_ )
1. If _O_.[[Deferred]] is *true*, then
1. Let _m_ be _O_.[[Module]].
1. If _m_ is a Cyclic Module Record, _m_.[[Status]] is not ~evaluated~, and ReadyForSyncExecution(_m_) is *false*, throw a *TypeError* exception.
1. Perform ? EvaluateSync(_m_).
1. Return _O_.[[Exports]].


[[HasProperty]] ( _P_, _Receiver_ )
1. If IsSymbolLikeNamespaceKey(_P_, _O_), return ! OrdinaryGet(_O_, _P_, _Receiver_).
1. Let _exports_ be ? GetModuleExportsList(_O_).
1. ...

---*/


import "./setup_FIXTURE.js";

import defer * as ns from "./dep_FIXTURE.js";

assert.sameValue(globalThis.evaluations.length, 0, "import defer does not trigger evaluation");

var key = Symbol();

const obj = Object.create(ns);
key in obj;

assert.sameValue(globalThis.evaluations.length, 0, "It does not trigger evaluation");
Loading