Fallback to Symbol.for("Symbol.metadata")

This commit is contained in:
Nicolò Ribaudo 2022-01-16 14:18:07 +01:00
parent 2fc8ad9539
commit 0876e7a160
10 changed files with 16 additions and 16 deletions

File diff suppressed because one or more lines are too long

View File

@ -76,7 +76,7 @@ function createMetadataMethodsForProperty(metadataMap, kind, property) {
}
function convertMetadataMapToFinal(obj, metadataMap) {
var parentMetadataMap = obj[Symbol.metadata];
var parentMetadataMap = obj[Symbol.metadata || Symbol.for("Symbol.metadata")];
var metadataKeys = Object.getOwnPropertySymbols(metadataMap);
if (metadataKeys.length === 0) return;
@ -115,7 +115,7 @@ function convertMetadataMapToFinal(obj, metadataMap) {
Object.setPrototypeOf(metadataMap, parentMetadataMap);
}
obj[Symbol.metadata] = metadataMap;
obj[Symbol.metadata || Symbol.for("Symbol.metadata")] = metadataMap;
}
function createAddInitializerMethod(initializers) {

View File

@ -7,4 +7,4 @@ function dec(_, { setMetadata }) {
@dec
class Foo {}
expect(Foo[Symbol.metadata][key].constructor).toBe(123);
expect(Foo[Symbol.for("Symbol.metadata")][key].constructor).toBe(123);

View File

@ -26,5 +26,5 @@ class Bar extends Foo {
@dec3 a;
}
expect(Foo.prototype[Symbol.metadata][key].public.a).toBe(456);
expect(Bar.prototype[Symbol.metadata][key].public.a).toBe(789);
expect(Foo.prototype[Symbol.for("Symbol.metadata")][key].public.a).toBe(456);
expect(Bar.prototype[Symbol.for("Symbol.metadata")][key].public.a).toBe(789);

View File

@ -12,5 +12,5 @@ class Bar extends Foo {
@dec #b;
}
expect(Foo.prototype[Symbol.metadata][key].private).toEqual([123]);
expect(Bar.prototype[Symbol.metadata][key].private).toEqual([123, 123]);
expect(Foo.prototype[Symbol.for("Symbol.metadata")][key].private).toEqual([123]);
expect(Bar.prototype[Symbol.for("Symbol.metadata")][key].private).toEqual([123, 123]);

View File

@ -12,7 +12,7 @@ class Bar extends Foo {
@dec b;
}
expect(Foo.prototype[Symbol.metadata][key].public.a).toEqual(123);
expect(Foo.prototype[Symbol.metadata][key].public.b).toEqual(undefined);
expect(Bar.prototype[Symbol.metadata][key].public.a).toEqual(123);
expect(Bar.prototype[Symbol.metadata][key].public.b).toEqual(123);
expect(Foo.prototype[Symbol.for("Symbol.metadata")][key].public.a).toEqual(123);
expect(Foo.prototype[Symbol.for("Symbol.metadata")][key].public.b).toEqual(undefined);
expect(Bar.prototype[Symbol.for("Symbol.metadata")][key].public.a).toEqual(123);
expect(Bar.prototype[Symbol.for("Symbol.metadata")][key].public.b).toEqual(123);

View File

@ -8,4 +8,4 @@ class Foo {
@dec #a;
}
expect(Foo.prototype[Symbol.metadata][key].private[0]).toBe(123);
expect(Foo.prototype[Symbol.for("Symbol.metadata")][key].private[0]).toBe(123);

View File

@ -8,4 +8,4 @@ class Foo {
@dec a;
}
expect(Foo.prototype[Symbol.metadata][key].public.a).toBe(123);
expect(Foo.prototype[Symbol.for("Symbol.metadata")][key].public.a).toBe(123);

View File

@ -8,4 +8,4 @@ class Foo {
@dec static #a;
}
expect(Foo[Symbol.metadata][key].private[0]).toBe(123);
expect(Foo[Symbol.for("Symbol.metadata")][key].private[0]).toBe(123);

View File

@ -8,4 +8,4 @@ class Foo {
@dec static a;
}
expect(Foo[Symbol.metadata][key].public.a).toBe(123);
expect(Foo[Symbol.for("Symbol.metadata")][key].public.a).toBe(123);