Skip to content

Commit 28823db

Browse files
committed
fix(WeakMap): Fix Proxy‑based wrappers
1 parent a8fb0ea commit 28823db

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

lib/constructs/interface.js

+1
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,7 @@ class Interface {
10961096

10971097
this.str += `
10981098
});
1099+
utils.initWrapperImplMapping(obj, impl);
10991100
`;
11001101
}
11011102

lib/output/utils.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function initWrapperImplMapping(wrapper, impl) {
3232
throw new Error("Internal error: wrapper->impl is already registered");
3333
}
3434
implForWrapperMap.set(wrapper, impl);
35-
Object.defineProperty(impl, wrapperSymbol, { value: wrapper });
35+
Object.defineProperty(impl, wrapperSymbol, { value: wrapper, configurable: true });
3636
}
3737

3838
function wrapperForImpl(impl) {

test/__snapshots__/test.js.snap

+5
Original file line numberDiff line numberDiff line change
@@ -2886,6 +2886,7 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD
28862886
return false;
28872887
}
28882888
});
2889+
utils.initWrapperImplMapping(obj, impl);
28892890
28902891
if (Impl.init) {
28912892
Impl.init(impl, privateData);
@@ -4636,6 +4637,7 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD
46364637
return false;
46374638
}
46384639
});
4640+
utils.initWrapperImplMapping(obj, impl);
46394641
46404642
if (Impl.init) {
46414643
Impl.init(impl, privateData);
@@ -5429,6 +5431,7 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD
54295431
return false;
54305432
}
54315433
});
5434+
utils.initWrapperImplMapping(obj, impl);
54325435
54335436
if (Impl.init) {
54345437
Impl.init(impl, privateData);
@@ -5816,6 +5819,7 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD
58165819
return false;
58175820
}
58185821
});
5822+
utils.initWrapperImplMapping(obj, impl);
58195823
58205824
if (Impl.init) {
58215825
Impl.init(impl, privateData);
@@ -6503,6 +6507,7 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD
65036507
return false;
65046508
}
65056509
});
6510+
utils.initWrapperImplMapping(obj, impl);
65066511
65076512
if (Impl.init) {
65086513
Impl.init(impl, privateData);

0 commit comments

Comments
 (0)