TypeScript/tests/baselines/reference/decoratorsOnComputedProperties.types
Wesley Wigham 87d10eb055
Eliminate well known symbols as a concept in the checker and rely on unique symbols (#42543)
* Eliminate well-known symbols in the checker: 2021 edition

* Actually update the lib text to say unique symbol, too (this is unneeded with compat code in place, but this makes goto-def make more sense)

* Add test showing mismatched symbol constructor type interop

* Add more test cases for some other related issues this fixes

* Revert computed name change

* Style comments
2021-02-22 14:43:28 -08:00

968 lines
25 KiB
Plaintext

=== tests/cases/compiler/decoratorsOnComputedProperties.ts ===
function x(o: object, k: PropertyKey) { }
>x : (o: object, k: PropertyKey) => void
>o : object
>k : PropertyKey
let i = 0;
>i : number
>0 : 0
function foo(): string { return ++i + ""; }
>foo : () => string
>++i + "" : string
>++i : number
>i : number
>"" : ""
const fieldNameA: string = "fieldName1";
>fieldNameA : string
>"fieldName1" : "fieldName1"
const fieldNameB: string = "fieldName2";
>fieldNameB : string
>"fieldName2" : "fieldName2"
const fieldNameC: string = "fieldName3";
>fieldNameC : string
>"fieldName3" : "fieldName3"
class A {
>A : A
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
}
void class B {
>void class B { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : undefined
>class B { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : typeof B
>B : typeof B
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
};
class C {
>C : C
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
["some" + "method"]() {}
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
}
void class D {
>void class D { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null; ["some" + "method"]() {}} : undefined
>class D { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null; ["some" + "method"]() {}} : typeof D
>D : typeof D
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
["some" + "method"]() {}
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
};
class E {
>E : E
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
["some" + "method"]() {}
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
}
void class F {
>void class F { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : undefined
>class F { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; @x [fieldNameC]: any = null;} : typeof F
>F : typeof F
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
["some" + "method"]() {}
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
};
class G {
>G : G
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
["some" + "method"]() {}
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
["some" + "method2"]() {}
>["some" + "method2"] : () => void
>"some" + "method2" : string
>"some" : "some"
>"method2" : "method2"
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
}
void class H {
>void class H { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : undefined
>class H { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : typeof H
>H : typeof H
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
["some" + "method"]() {}
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
["some" + "method2"]() {}
>["some" + "method2"] : () => void
>"some" + "method2" : string
>"some" : "some"
>"method2" : "method2"
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
};
class I {
>I : I
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
@x ["some" + "method"]() {}
>x : (o: object, k: PropertyKey) => void
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
["some" + "method2"]() {}
>["some" + "method2"] : () => void
>"some" + "method2" : string
>"some" : "some"
>"method2" : "method2"
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
}
void class J {
>void class J { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; @x ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : undefined
>class J { @x ["property"]: any; @x [Symbol.toStringTag]: any; @x ["property2"]: any = 2; @x [Symbol.iterator]: any = null; ["property3"]: any; [Symbol.isConcatSpreadable]: any; ["property4"]: any = 2; [Symbol.match]: any = null; [foo()]: any; @x [foo()]: any; @x [foo()]: any = null; @x ["some" + "method"]() {} [fieldNameA]: any; @x [fieldNameB]: any; ["some" + "method2"]() {} @x [fieldNameC]: any = null;} : typeof J
>J : typeof J
@x ["property"]: any;
>x : (o: object, k: PropertyKey) => void
>["property"] : any
>"property" : "property"
@x [Symbol.toStringTag]: any;
>x : (o: object, k: PropertyKey) => void
>[Symbol.toStringTag] : any
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : unique symbol
@x ["property2"]: any = 2;
>x : (o: object, k: PropertyKey) => void
>["property2"] : any
>"property2" : "property2"
>2 : 2
@x [Symbol.iterator]: any = null;
>x : (o: object, k: PropertyKey) => void
>[Symbol.iterator] : any
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>null : null
["property3"]: any;
>["property3"] : any
>"property3" : "property3"
[Symbol.isConcatSpreadable]: any;
>[Symbol.isConcatSpreadable] : any
>Symbol.isConcatSpreadable : unique symbol
>Symbol : SymbolConstructor
>isConcatSpreadable : unique symbol
["property4"]: any = 2;
>["property4"] : any
>"property4" : "property4"
>2 : 2
[Symbol.match]: any = null;
>[Symbol.match] : any
>Symbol.match : unique symbol
>Symbol : SymbolConstructor
>match : unique symbol
>null : null
[foo()]: any;
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
@x [foo()]: any = null;
>x : (o: object, k: PropertyKey) => void
>[foo()] : any
>foo() : string
>foo : () => string
>null : null
@x ["some" + "method"]() {}
>x : (o: object, k: PropertyKey) => void
>["some" + "method"] : () => void
>"some" + "method" : string
>"some" : "some"
>"method" : "method"
[fieldNameA]: any;
>[fieldNameA] : any
>fieldNameA : string
@x [fieldNameB]: any;
>x : (o: object, k: PropertyKey) => void
>[fieldNameB] : any
>fieldNameB : string
["some" + "method2"]() {}
>["some" + "method2"] : () => void
>"some" + "method2" : string
>"some" : "some"
>"method2" : "method2"
@x [fieldNameC]: any = null;
>x : (o: object, k: PropertyKey) => void
>[fieldNameC] : any
>fieldNameC : string
>null : null
};