diff --git a/tests/baselines/reference/intersectionType_useDefineForClassFields.js b/tests/baselines/reference/intersectionType_useDefineForClassFields.js new file mode 100644 index 0000000000..ca448bec94 --- /dev/null +++ b/tests/baselines/reference/intersectionType_useDefineForClassFields.js @@ -0,0 +1,18 @@ +//// [intersectionType_useDefineForClassFields.ts] +type Foo = { + [k in keyof T & string]: any +} + +function bar(_p: T): { new(): Foo } { + return null as any; +} + +class Baz extends bar({ x: 1 }) { +} + +//// [intersectionType_useDefineForClassFields.js] +function bar(_p) { + return null; +} +class Baz extends bar({ x: 1 }) { +} diff --git a/tests/baselines/reference/intersectionType_useDefineForClassFields.symbols b/tests/baselines/reference/intersectionType_useDefineForClassFields.symbols new file mode 100644 index 0000000000..e61467f6b4 --- /dev/null +++ b/tests/baselines/reference/intersectionType_useDefineForClassFields.symbols @@ -0,0 +1,26 @@ +=== tests/cases/compiler/intersectionType_useDefineForClassFields.ts === +type Foo = { +>Foo : Symbol(Foo, Decl(intersectionType_useDefineForClassFields.ts, 0, 0)) +>T : Symbol(T, Decl(intersectionType_useDefineForClassFields.ts, 0, 9)) + + [k in keyof T & string]: any +>k : Symbol(k, Decl(intersectionType_useDefineForClassFields.ts, 1, 5)) +>T : Symbol(T, Decl(intersectionType_useDefineForClassFields.ts, 0, 9)) +} + +function bar(_p: T): { new(): Foo } { +>bar : Symbol(bar, Decl(intersectionType_useDefineForClassFields.ts, 2, 1)) +>T : Symbol(T, Decl(intersectionType_useDefineForClassFields.ts, 4, 13)) +>_p : Symbol(_p, Decl(intersectionType_useDefineForClassFields.ts, 4, 16)) +>T : Symbol(T, Decl(intersectionType_useDefineForClassFields.ts, 4, 13)) +>Foo : Symbol(Foo, Decl(intersectionType_useDefineForClassFields.ts, 0, 0)) +>T : Symbol(T, Decl(intersectionType_useDefineForClassFields.ts, 4, 13)) + + return null as any; +} + +class Baz extends bar({ x: 1 }) { +>Baz : Symbol(Baz, Decl(intersectionType_useDefineForClassFields.ts, 6, 1)) +>bar : Symbol(bar, Decl(intersectionType_useDefineForClassFields.ts, 2, 1)) +>x : Symbol(x, Decl(intersectionType_useDefineForClassFields.ts, 8, 23)) +} diff --git a/tests/baselines/reference/intersectionType_useDefineForClassFields.types b/tests/baselines/reference/intersectionType_useDefineForClassFields.types new file mode 100644 index 0000000000..a10ddc1ad5 --- /dev/null +++ b/tests/baselines/reference/intersectionType_useDefineForClassFields.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/intersectionType_useDefineForClassFields.ts === +type Foo = { +>Foo : Foo + + [k in keyof T & string]: any +} + +function bar(_p: T): { new(): Foo } { +>bar : (_p: T) => { new (): Foo;} +>_p : T + + return null as any; +>null as any : any +>null : null +} + +class Baz extends bar({ x: 1 }) { +>Baz : Baz +>bar({ x: 1 }) : Foo<{ x: number; }> +>bar : (_p: T) => new () => Foo +>{ x: 1 } : { x: number; } +>x : number +>1 : 1 +} diff --git a/tests/cases/compiler/intersectionType_useDefineForClassFields.ts b/tests/cases/compiler/intersectionType_useDefineForClassFields.ts new file mode 100644 index 0000000000..7342041abb --- /dev/null +++ b/tests/cases/compiler/intersectionType_useDefineForClassFields.ts @@ -0,0 +1,13 @@ +// @target: ESNext +// @useDefineForClassFields: true + +type Foo = { + [k in keyof T & string]: any +} + +function bar(_p: T): { new(): Foo } { + return null as any; +} + +class Baz extends bar({ x: 1 }) { +} \ No newline at end of file