Merge pull request #43055 from armanio123/FixDefineForClassFields

Filter transient flags to fix useDefineForClassFields
This commit is contained in:
Armando Aguirre 2021-03-03 15:38:41 -08:00 committed by GitHub
commit 8a81a6722d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,18 @@
//// [intersectionType_useDefineForClassFields.ts]
type Foo<T> = {
[k in keyof T & string]: any
}
function bar<T>(_p: T): { new(): Foo<T> } {
return null as any;
}
class Baz extends bar({ x: 1 }) {
}
//// [intersectionType_useDefineForClassFields.js]
function bar(_p) {
return null;
}
class Baz extends bar({ x: 1 }) {
}

View file

@ -0,0 +1,26 @@
=== tests/cases/compiler/intersectionType_useDefineForClassFields.ts ===
type Foo<T> = {
>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<T>(_p: T): { new(): Foo<T> } {
>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))
}

View file

@ -0,0 +1,24 @@
=== tests/cases/compiler/intersectionType_useDefineForClassFields.ts ===
type Foo<T> = {
>Foo : Foo<T>
[k in keyof T & string]: any
}
function bar<T>(_p: T): { new(): Foo<T> } {
>bar : <T>(_p: T) => { new (): Foo<T>;}
>_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 : <T>(_p: T) => new () => Foo<T>
>{ x: 1 } : { x: number; }
>x : number
>1 : 1
}

View file

@ -0,0 +1,13 @@
// @target: ESNext
// @useDefineForClassFields: true
type Foo<T> = {
[k in keyof T & string]: any
}
function bar<T>(_p: T): { new(): Foo<T> } {
return null as any;
}
class Baz extends bar({ x: 1 }) {
}