TypeScript/tests/baselines/reference/recursiveConditionalCrash3.symbols

425 lines
20 KiB
Plaintext

=== tests/cases/compiler/recursiveConditionalCrash3.ts ===
// #43529
export {}
/**
*
* Some helper Types and Interfaces..
*
*/
export type CanBeExpanded<T extends object = object, D = string> = {
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 9, 26))
>D : Symbol(D, Decl(recursiveConditionalCrash3.ts, 9, 52))
value: T
>value : Symbol(value, Decl(recursiveConditionalCrash3.ts, 9, 68))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 9, 26))
default: D
>default : Symbol(default, Decl(recursiveConditionalCrash3.ts, 10, 12))
>D : Symbol(D, Decl(recursiveConditionalCrash3.ts, 9, 52))
}
interface Base {
>Base : Symbol(Base, Decl(recursiveConditionalCrash3.ts, 12, 1))
}
interface User extends Base {
>User : Symbol(User, Decl(recursiveConditionalCrash3.ts, 16, 1))
>Base : Symbol(Base, Decl(recursiveConditionalCrash3.ts, 12, 1))
id: string,
>id : Symbol(User.id, Decl(recursiveConditionalCrash3.ts, 18, 29))
role: CanBeExpanded<Role>,
>role : Symbol(User.role, Decl(recursiveConditionalCrash3.ts, 19, 15))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
>Role : Symbol(Role, Decl(recursiveConditionalCrash3.ts, 22, 1))
note: string,
>note : Symbol(User.note, Decl(recursiveConditionalCrash3.ts, 20, 30))
}
interface Role extends Base {
>Role : Symbol(Role, Decl(recursiveConditionalCrash3.ts, 22, 1))
>Base : Symbol(Base, Decl(recursiveConditionalCrash3.ts, 12, 1))
id: string,
>id : Symbol(Role.id, Decl(recursiveConditionalCrash3.ts, 24, 29))
user: CanBeExpanded<User>,
>user : Symbol(Role.user, Decl(recursiveConditionalCrash3.ts, 25, 15))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
>User : Symbol(User, Decl(recursiveConditionalCrash3.ts, 16, 1))
x: string
>x : Symbol(Role.x, Decl(recursiveConditionalCrash3.ts, 26, 30))
}
// This interface will be expanded in circular way.
interface X extends Base {
>X : Symbol(X, Decl(recursiveConditionalCrash3.ts, 28, 1))
>Base : Symbol(Base, Decl(recursiveConditionalCrash3.ts, 12, 1))
id: string,
>id : Symbol(X.id, Decl(recursiveConditionalCrash3.ts, 31, 26))
name: string,
>name : Symbol(X.name, Decl(recursiveConditionalCrash3.ts, 32, 15))
user: CanBeExpanded<User>,
>user : Symbol(X.user, Decl(recursiveConditionalCrash3.ts, 33, 17))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
>User : Symbol(User, Decl(recursiveConditionalCrash3.ts, 16, 1))
role: CanBeExpanded<Role>
>role : Symbol(X.role, Decl(recursiveConditionalCrash3.ts, 34, 30))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
>Role : Symbol(Role, Decl(recursiveConditionalCrash3.ts, 22, 1))
roles: CanBeExpanded<Role[]>
>roles : Symbol(X.roles, Decl(recursiveConditionalCrash3.ts, 35, 29))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
>Role : Symbol(Role, Decl(recursiveConditionalCrash3.ts, 22, 1))
}
type Join<K, P> = K extends string | number ?
>Join : Symbol(Join, Decl(recursiveConditionalCrash3.ts, 37, 1))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 39, 10))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 39, 12))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 39, 10))
P extends string | number ?
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 39, 12))
`${K}${"" extends P ? "" : "."}${P}`
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 39, 10))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 39, 12))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 39, 12))
: never : never;
type PrefixWith<P, S, C = '.'> = P extends '' ? `${string & S}` : `${string & P}${string & C}${string & S}`
>PrefixWith : Symbol(PrefixWith, Decl(recursiveConditionalCrash3.ts, 42, 24))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 44, 16))
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 44, 18))
>C : Symbol(C, Decl(recursiveConditionalCrash3.ts, 44, 21))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 44, 16))
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 44, 18))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 44, 16))
>C : Symbol(C, Decl(recursiveConditionalCrash3.ts, 44, 21))
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 44, 18))
type SplitWithAllPossibleCombinations<S extends string, D extends string> =
>SplitWithAllPossibleCombinations : Symbol(SplitWithAllPossibleCombinations, Decl(recursiveConditionalCrash3.ts, 44, 107))
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 46, 38))
>D : Symbol(D, Decl(recursiveConditionalCrash3.ts, 46, 55))
string extends S ? string :
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 46, 38))
S extends '' ? '' :
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 46, 38))
S extends `${infer T}${D}${infer U}` ?
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 46, 38))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 49, 30))
>D : Symbol(D, Decl(recursiveConditionalCrash3.ts, 46, 55))
>U : Symbol(U, Decl(recursiveConditionalCrash3.ts, 49, 44))
T | Join<T, SplitWithAllPossibleCombinations<U, D>>
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 49, 30))
>Join : Symbol(Join, Decl(recursiveConditionalCrash3.ts, 37, 1))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 49, 30))
>SplitWithAllPossibleCombinations : Symbol(SplitWithAllPossibleCombinations, Decl(recursiveConditionalCrash3.ts, 44, 107))
>U : Symbol(U, Decl(recursiveConditionalCrash3.ts, 49, 44))
>D : Symbol(D, Decl(recursiveConditionalCrash3.ts, 46, 55))
: S;
>S : Symbol(S, Decl(recursiveConditionalCrash3.ts, 46, 38))
/**
* This function will return all possibile keys that can be expanded on T, only to the N deep level
*/
type KeysCanBeExpanded_<T, N extends number, Depth extends number[]> = N extends Depth['length'] ? never :
>KeysCanBeExpanded_ : Symbol(KeysCanBeExpanded_, Decl(recursiveConditionalCrash3.ts, 51, 20))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 57, 26))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 57, 44))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 57, 26))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 57, 44))
T extends CanBeExpanded ?
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
KeysCanBeExpanded_<T['value'], N, Depth> :
>KeysCanBeExpanded_ : Symbol(KeysCanBeExpanded_, Decl(recursiveConditionalCrash3.ts, 51, 20))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 57, 26))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 57, 44))
T extends Array<infer U> ? KeysCanBeExpanded_<U, N, Depth> :
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>U : Symbol(U, Decl(recursiveConditionalCrash3.ts, 60, 29))
>KeysCanBeExpanded_ : Symbol(KeysCanBeExpanded_, Decl(recursiveConditionalCrash3.ts, 51, 20))
>U : Symbol(U, Decl(recursiveConditionalCrash3.ts, 60, 29))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 57, 26))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 57, 44))
T extends object ?
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
{
[K in keyof T ] :
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 64, 21))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
T[K] extends object ?
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 64, 21))
K extends string | number
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 64, 21))
? `${K}` | Join<`${K}`, KeysCanBeExpanded_<T[K], N, [1, ...Depth]>>
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 64, 21))
>Join : Symbol(Join, Decl(recursiveConditionalCrash3.ts, 37, 1))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 64, 21))
>KeysCanBeExpanded_ : Symbol(KeysCanBeExpanded_, Decl(recursiveConditionalCrash3.ts, 51, 20))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 64, 21))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 57, 26))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 57, 44))
: never
: never
}[keyof T]
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 57, 24))
:
never
export type KeysCanBeExpanded<T, N extends number = 4> = KeysCanBeExpanded_<T, N, []>
>KeysCanBeExpanded : Symbol(KeysCanBeExpanded, Decl(recursiveConditionalCrash3.ts, 73, 21))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 75, 30))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 75, 32))
>KeysCanBeExpanded_ : Symbol(KeysCanBeExpanded_, Decl(recursiveConditionalCrash3.ts, 51, 20))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 75, 30))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 75, 32))
/**
* Expand keys on `O` based on `Keys` parameter.
*/
type Expand__<O, Keys, P extends string, N extends number , Depth extends unknown[] > =
>Expand__ : Symbol(Expand__, Decl(recursiveConditionalCrash3.ts, 75, 85))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>Keys : Symbol(Keys, Decl(recursiveConditionalCrash3.ts, 80, 16))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 80, 22))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 80, 40))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 80, 59))
N extends Depth['length'] ?
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 80, 40))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 80, 59))
O extends CanBeExpanded ?
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
O['default'] :
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
O :
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
O extends CanBeExpanded ?
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>CanBeExpanded : Symbol(CanBeExpanded, Decl(recursiveConditionalCrash3.ts, 2, 9))
Expand__<O[P extends Keys ? 'value' : 'default'], Keys, P, N, Depth> :
>Expand__ : Symbol(Expand__, Decl(recursiveConditionalCrash3.ts, 75, 85))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 80, 22))
>Keys : Symbol(Keys, Decl(recursiveConditionalCrash3.ts, 80, 16))
>Keys : Symbol(Keys, Decl(recursiveConditionalCrash3.ts, 80, 16))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 80, 22))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 80, 40))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 80, 59))
O extends Array<infer U> ?
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>U : Symbol(U, Decl(recursiveConditionalCrash3.ts, 87, 33))
Expand__<U, Keys, P, N, Depth>[]
>Expand__ : Symbol(Expand__, Decl(recursiveConditionalCrash3.ts, 75, 85))
>U : Symbol(U, Decl(recursiveConditionalCrash3.ts, 87, 33))
>Keys : Symbol(Keys, Decl(recursiveConditionalCrash3.ts, 80, 16))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 80, 22))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 80, 40))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 80, 59))
: O extends object ?
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
{
[K in keyof O]-?: Expand__<O[K], Keys, PrefixWith<P, K>, N, [1, ...Depth]>
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 91, 21))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>Expand__ : Symbol(Expand__, Decl(recursiveConditionalCrash3.ts, 75, 85))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 91, 21))
>Keys : Symbol(Keys, Decl(recursiveConditionalCrash3.ts, 80, 16))
>PrefixWith : Symbol(PrefixWith, Decl(recursiveConditionalCrash3.ts, 42, 24))
>P : Symbol(P, Decl(recursiveConditionalCrash3.ts, 80, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 91, 21))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 80, 40))
>Depth : Symbol(Depth, Decl(recursiveConditionalCrash3.ts, 80, 59))
}
: O
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 80, 14))
type SplitAC<K> = SplitWithAllPossibleCombinations<K extends string ? K : '', '.'> extends infer Ko ? Ko : ''
>SplitAC : Symbol(SplitAC, Decl(recursiveConditionalCrash3.ts, 93, 19))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 97, 13))
>SplitWithAllPossibleCombinations : Symbol(SplitWithAllPossibleCombinations, Decl(recursiveConditionalCrash3.ts, 44, 107))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 97, 13))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 97, 13))
>Ko : Symbol(Ko, Decl(recursiveConditionalCrash3.ts, 97, 96))
>Ko : Symbol(Ko, Decl(recursiveConditionalCrash3.ts, 97, 96))
type Expand_<T, K, N extends number = 4> = Expand__<T, SplitAC<K>, '', N, []>
>Expand_ : Symbol(Expand_, Decl(recursiveConditionalCrash3.ts, 97, 109))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 98, 13))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 98, 15))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 98, 18))
>Expand__ : Symbol(Expand__, Decl(recursiveConditionalCrash3.ts, 75, 85))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 98, 13))
>SplitAC : Symbol(SplitAC, Decl(recursiveConditionalCrash3.ts, 93, 19))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 98, 15))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 98, 18))
type AllKeys<T, N extends number = 4> = KeysCanBeExpanded<T, N> extends infer R ? R : never
>AllKeys : Symbol(AllKeys, Decl(recursiveConditionalCrash3.ts, 98, 77))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 99, 13))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 99, 15))
>KeysCanBeExpanded : Symbol(KeysCanBeExpanded, Decl(recursiveConditionalCrash3.ts, 73, 21))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 99, 13))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 99, 15))
>R : Symbol(R, Decl(recursiveConditionalCrash3.ts, 99, 77))
>R : Symbol(R, Decl(recursiveConditionalCrash3.ts, 99, 77))
/**
* If I open the popup, (pointing with the mouse on the Expand), the compiler shows the type Expand, expanded as expected.
*
* It's fast and it doesn't use additional memory
*
*/
export type Expand<T extends object, K extends AllKeys<T, N> = never, N extends number = 4> = Expand_<T, K, N>
>Expand : Symbol(Expand, Decl(recursiveConditionalCrash3.ts, 99, 91))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 109, 19))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 109, 36))
>AllKeys : Symbol(AllKeys, Decl(recursiveConditionalCrash3.ts, 98, 77))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 109, 19))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 109, 69))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 109, 69))
>Expand_ : Symbol(Expand_, Decl(recursiveConditionalCrash3.ts, 97, 109))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 109, 19))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 109, 36))
>N : Symbol(N, Decl(recursiveConditionalCrash3.ts, 109, 69))
/**
* These two functions work as charm, also they are superfast and as expected they don't use additional Memory
*/
let y1: Expand<X>
>y1 : Symbol(y1, Decl(recursiveConditionalCrash3.ts, 114, 3))
>Expand : Symbol(Expand, Decl(recursiveConditionalCrash3.ts, 99, 91))
>X : Symbol(X, Decl(recursiveConditionalCrash3.ts, 28, 1))
let y2: Expand<X, 'user.role.user.role'>
>y2 : Symbol(y2, Decl(recursiveConditionalCrash3.ts, 115, 3))
>Expand : Symbol(Expand, Decl(recursiveConditionalCrash3.ts, 99, 91))
>X : Symbol(X, Decl(recursiveConditionalCrash3.ts, 28, 1))
/**
*
* ... nevertheless when I need to use the Expand in other Types, as the following examples, the popup show "loading..." and without show any information and
* the Memory Heap grows to 1.2gb (in my case) every time... You can see it opening the Chrome DevTools and check the memory Tab.
*
* *******
* I think this is causing "FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory"
* on my project during the `yarn start`.
* *******
*
*/
type UseQueryOptions<T extends Base, K extends AllKeys<T, 4> > = Expand<T, K>
>UseQueryOptions : Symbol(UseQueryOptions, Decl(recursiveConditionalCrash3.ts, 115, 40))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 130, 21))
>Base : Symbol(Base, Decl(recursiveConditionalCrash3.ts, 12, 1))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 130, 36))
>AllKeys : Symbol(AllKeys, Decl(recursiveConditionalCrash3.ts, 98, 77))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 130, 21))
>Expand : Symbol(Expand, Decl(recursiveConditionalCrash3.ts, 99, 91))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 130, 21))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 130, 36))
type UseQueryOptions2<T , K > = Expand_<T, K>
>UseQueryOptions2 : Symbol(UseQueryOptions2, Decl(recursiveConditionalCrash3.ts, 130, 77))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 132, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 132, 25))
>Expand_ : Symbol(Expand_, Decl(recursiveConditionalCrash3.ts, 97, 109))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 132, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 132, 25))
type UseQueryOptions3<T , K > = Expand_<T, K> extends infer O ? O : never
>UseQueryOptions3 : Symbol(UseQueryOptions3, Decl(recursiveConditionalCrash3.ts, 132, 46))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 133, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 133, 25))
>Expand_ : Symbol(Expand_, Decl(recursiveConditionalCrash3.ts, 97, 109))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 133, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 133, 25))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 133, 60))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 133, 60))
type ExpandResult<T,K> = Expand_<T, K> extends infer O ? O : never
>ExpandResult : Symbol(ExpandResult, Decl(recursiveConditionalCrash3.ts, 133, 74))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 135, 18))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 135, 20))
>Expand_ : Symbol(Expand_, Decl(recursiveConditionalCrash3.ts, 97, 109))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 135, 18))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 135, 20))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 135, 52))
>O : Symbol(O, Decl(recursiveConditionalCrash3.ts, 135, 52))
type UseQueryOptions4<T , K > = ExpandResult<T,K>
>UseQueryOptions4 : Symbol(UseQueryOptions4, Decl(recursiveConditionalCrash3.ts, 135, 66))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 136, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 136, 25))
>ExpandResult : Symbol(ExpandResult, Decl(recursiveConditionalCrash3.ts, 133, 74))
>T : Symbol(T, Decl(recursiveConditionalCrash3.ts, 136, 22))
>K : Symbol(K, Decl(recursiveConditionalCrash3.ts, 136, 25))
/**
* but as you can see here, the expansion of Interface X it's still working.
*
* If a memory is still high, it may need some seconds to show popup.
*
*/
let t: UseQueryOptions<X, 'role.user.role'>
>t : Symbol(t, Decl(recursiveConditionalCrash3.ts, 145, 3))
>UseQueryOptions : Symbol(UseQueryOptions, Decl(recursiveConditionalCrash3.ts, 115, 40))
>X : Symbol(X, Decl(recursiveConditionalCrash3.ts, 28, 1))