Add regression test

This commit is contained in:
Anders Hejlsberg
2022-09-15 16:20:25 -07:00
parent 23a1dd4d74
commit 23784d711e
4 changed files with 118 additions and 2 deletions
@@ -70,7 +70,26 @@ type MyObject<T> = T extends ZodObject<infer U>
? U extends ZodRawShape
? U
: never
: never;
: never;
// Repro from #50479
type Cell<Value extends BaseValue = any, BaseValue = unknown> = {
id: string
}
type Items<Type extends Cell = Cell> = {
type: Type
name: string
}
type InferIOItemToJSType<T extends Items> =
T extends { type: infer U }
? U extends Cell<infer V/**, infer _ or unknown, or any valid type **/>
? V
: never
: never
//// [inferTypeConstraintInstantiationCircularity.js]
"use strict";
@@ -204,3 +204,51 @@ type MyObject<T> = T extends ZodObject<infer U>
: never
: never;
// Repro from #50479
type Cell<Value extends BaseValue = any, BaseValue = unknown> = {
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
>Value : Symbol(Value, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 10))
>BaseValue : Symbol(BaseValue, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 40))
>BaseValue : Symbol(BaseValue, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 40))
id: string
>id : Symbol(id, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 65))
}
type Items<Type extends Cell = Cell> = {
>Items : Symbol(Items, Decl(inferTypeConstraintInstantiationCircularity.ts, 77, 1))
>Type : Symbol(Type, Decl(inferTypeConstraintInstantiationCircularity.ts, 79, 11))
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
type: Type
>type : Symbol(type, Decl(inferTypeConstraintInstantiationCircularity.ts, 79, 40))
>Type : Symbol(Type, Decl(inferTypeConstraintInstantiationCircularity.ts, 79, 11))
name: string
>name : Symbol(name, Decl(inferTypeConstraintInstantiationCircularity.ts, 80, 12))
}
type InferIOItemToJSType<T extends Items> =
>InferIOItemToJSType : Symbol(InferIOItemToJSType, Decl(inferTypeConstraintInstantiationCircularity.ts, 82, 1))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 84, 25))
>Items : Symbol(Items, Decl(inferTypeConstraintInstantiationCircularity.ts, 77, 1))
T extends { type: infer U }
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 84, 25))
>type : Symbol(type, Decl(inferTypeConstraintInstantiationCircularity.ts, 85, 13))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 85, 25))
? U extends Cell<infer V/**, infer _ or unknown, or any valid type **/>
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 85, 25))
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
>V : Symbol(V, Decl(inferTypeConstraintInstantiationCircularity.ts, 86, 26))
? V
>V : Symbol(V, Decl(inferTypeConstraintInstantiationCircularity.ts, 86, 26))
: never
: never
@@ -101,3 +101,34 @@ type MyObject<T> = T extends ZodObject<infer U>
? U
: never
: never;
// Repro from #50479
type Cell<Value extends BaseValue = any, BaseValue = unknown> = {
>Cell : Cell<Value, BaseValue>
id: string
>id : string
}
type Items<Type extends Cell = Cell> = {
>Items : Items<Type>
type: Type
>type : Type
name: string
>name : string
}
type InferIOItemToJSType<T extends Items> =
>InferIOItemToJSType : InferIOItemToJSType<T>
T extends { type: infer U }
>type : U
? U extends Cell<infer V/**, infer _ or unknown, or any valid type **/>
? V
: never
: never
@@ -70,4 +70,22 @@ type MyObject<T> = T extends ZodObject<infer U>
? U extends ZodRawShape
? U
: never
: never;
: never;
// Repro from #50479
type Cell<Value extends BaseValue = any, BaseValue = unknown> = {
id: string
}
type Items<Type extends Cell = Cell> = {
type: Type
name: string
}
type InferIOItemToJSType<T extends Items> =
T extends { type: infer U }
? U extends Cell<infer V/**, infer _ or unknown, or any valid type **/>
? V
: never
: never