diff --git a/tests/baselines/reference/genericMappedTypeAsClause.errors.txt b/tests/baselines/reference/genericMappedTypeAsClause.errors.txt index 35c7395979c..3f26730b80b 100644 --- a/tests/baselines/reference/genericMappedTypeAsClause.errors.txt +++ b/tests/baselines/reference/genericMappedTypeAsClause.errors.txt @@ -6,9 +6,10 @@ tests/cases/compiler/genericMappedTypeAsClause.ts(17,11): error TS2322: Type 'bo tests/cases/compiler/genericMappedTypeAsClause.ts(18,34): error TS2322: Type '{ a: string; b: number; }' is not assignable to type 'MappedModel'. Object literal may only specify known properties, and 'a' does not exist in type 'MappedModel'. tests/cases/compiler/genericMappedTypeAsClause.ts(19,11): error TS2322: Type 'undefined' is not assignable to type 'MappedModel'. +tests/cases/compiler/genericMappedTypeAsClause.ts(25,60): error TS2312: An interface can only extend an object type or intersection of object types with statically known members. -==== tests/cases/compiler/genericMappedTypeAsClause.ts (7 errors) ==== +==== tests/cases/compiler/genericMappedTypeAsClause.ts (8 errors) ==== type Model = { a: string; b: number; @@ -45,4 +46,11 @@ tests/cases/compiler/genericMappedTypeAsClause.ts(19,11): error TS2322: Type 'un ~~ !!! error TS2322: Type 'undefined' is not assignable to type 'MappedModel'. } + + // repro from #43189 + + type RemapRecord = { [_ in never as K]: V } + interface RecordInterface2 extends RemapRecord {} // should error + ~~~~~~~~~~~~~~~~~ +!!! error TS2312: An interface can only extend an object type or intersection of object types with statically known members. \ No newline at end of file diff --git a/tests/baselines/reference/genericMappedTypeAsClause.js b/tests/baselines/reference/genericMappedTypeAsClause.js index 0e11eb75399..0cccc0e601a 100644 --- a/tests/baselines/reference/genericMappedTypeAsClause.js +++ b/tests/baselines/reference/genericMappedTypeAsClause.js @@ -19,6 +19,11 @@ function f1() { const x5: MappedModel = { a: 'bar', b: 42 }; // Error const x6: MappedModel = undefined; // Error } + +// repro from #43189 + +type RemapRecord = { [_ in never as K]: V } +interface RecordInterface2 extends RemapRecord {} // should error //// [genericMappedTypeAsClause.js] diff --git a/tests/baselines/reference/genericMappedTypeAsClause.symbols b/tests/baselines/reference/genericMappedTypeAsClause.symbols index c0d563564cd..1e6c5a658f1 100644 --- a/tests/baselines/reference/genericMappedTypeAsClause.symbols +++ b/tests/baselines/reference/genericMappedTypeAsClause.symbols @@ -73,3 +73,21 @@ function f1() { >undefined : Symbol(undefined) } +// repro from #43189 + +type RemapRecord = { [_ in never as K]: V } +>RemapRecord : Symbol(RemapRecord, Decl(genericMappedTypeAsClause.ts, 19, 1)) +>K : Symbol(K, Decl(genericMappedTypeAsClause.ts, 23, 17)) +>V : Symbol(V, Decl(genericMappedTypeAsClause.ts, 23, 37)) +>_ : Symbol(_, Decl(genericMappedTypeAsClause.ts, 23, 46)) +>K : Symbol(K, Decl(genericMappedTypeAsClause.ts, 23, 17)) +>V : Symbol(V, Decl(genericMappedTypeAsClause.ts, 23, 37)) + +interface RecordInterface2 extends RemapRecord {} // should error +>RecordInterface2 : Symbol(RecordInterface2, Decl(genericMappedTypeAsClause.ts, 23, 67)) +>K : Symbol(K, Decl(genericMappedTypeAsClause.ts, 24, 27)) +>V : Symbol(V, Decl(genericMappedTypeAsClause.ts, 24, 47)) +>RemapRecord : Symbol(RemapRecord, Decl(genericMappedTypeAsClause.ts, 19, 1)) +>K : Symbol(K, Decl(genericMappedTypeAsClause.ts, 24, 27)) +>V : Symbol(V, Decl(genericMappedTypeAsClause.ts, 24, 47)) + diff --git a/tests/baselines/reference/genericMappedTypeAsClause.types b/tests/baselines/reference/genericMappedTypeAsClause.types index 478011afea4..d188d19073b 100644 --- a/tests/baselines/reference/genericMappedTypeAsClause.types +++ b/tests/baselines/reference/genericMappedTypeAsClause.types @@ -65,3 +65,10 @@ function f1() { >undefined : undefined } +// repro from #43189 + +type RemapRecord = { [_ in never as K]: V } +>RemapRecord : RemapRecord + +interface RecordInterface2 extends RemapRecord {} // should error + diff --git a/tests/cases/compiler/genericMappedTypeAsClause.ts b/tests/cases/compiler/genericMappedTypeAsClause.ts index a5b965a02d9..e74b5f0691a 100644 --- a/tests/cases/compiler/genericMappedTypeAsClause.ts +++ b/tests/cases/compiler/genericMappedTypeAsClause.ts @@ -20,3 +20,8 @@ function f1() { const x5: MappedModel = { a: 'bar', b: 42 }; // Error const x6: MappedModel = undefined; // Error } + +// repro from #43189 + +type RemapRecord = { [_ in never as K]: V } +interface RecordInterface2 extends RemapRecord {} // should error