TypeScript/tests/cases/compiler/decoratorsOnComputedProperties.ts

191 lines
4.9 KiB
TypeScript
Raw Normal View History

// @target: es6
// @experimentalDecorators: true
function x(o: object, k: PropertyKey) { }
let i = 0;
function foo(): string { return ++i + ""; }
const fieldNameA: string = "fieldName1";
const fieldNameB: string = "fieldName2";
const fieldNameC: string = "fieldName3";
class A {
@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;
}
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;
};
class C {
@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"]() {}
}
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"]() {}
};
class E {
@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;
}
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;
};
class G {
@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;
}
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;
};
class I {
@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;
}
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;
};