Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion internal/checker/nodebuilderimpl.go
Original file line number Diff line number Diff line change
Expand Up @@ -1440,7 +1440,7 @@ func (b *nodeBuilderImpl) createMappedTypeNodeFromType(t *Type) *ast.TypeNode {
originalConstraint := b.ch.instantiateType(rawConstraintTypeFromDeclaration, mapped.mapper)

var originalConstraintNode *ast.Node
if originalConstraint.flags&TypeFlagsUnknown != 0 {
if originalConstraint.flags&TypeFlagsUnknown == 0 {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the original is:

originalConstraint.flags & TypeFlags.Unknown ? undefined : typeToTypeNodeHelper(originalConstraint, context)

originalConstraintNode = b.typeToTypeNode(originalConstraint)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

=== computedTypesKeyofNoIndexSignatureType.ts ===
type Compute<A> = { [K in keyof A]: Compute<A[K]>; } & {};
>Compute : { [K in keyof A]: A[K_1] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T extends unknown ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
>Compute : { [K in keyof A]: A[K_1] extends infer T ? { [K in keyof T]: A[K_1][K_2] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }

type EqualsTest<T> = <A>() => A extends T ? 1 : 0;
>EqualsTest : EqualsTest<T>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
=== computedTypesKeyofNoIndexSignatureType.ts ===
type Compute<A> = { [K in keyof A]: Compute<A[K]>; } & {};
->Compute : { [K in keyof A]: A[K] extends infer T ? { [K_1 in keyof T]: T[K_1] extends infer T_1 ? { [K_2 in keyof T_1]: T_1[K_2] extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3] extends infer T_3 ? { [K_4 in keyof T_3]: T_3[K_4] extends infer T_4 ? { [K_5 in keyof T_4]: T_4[K_5] extends infer T_5 ? { [K_6 in keyof T_5]: T_5[K_6] extends infer T_6 ? { [K_7 in keyof T_6]: T_6[K_7] extends infer T_7 ? { [K_8 in keyof T_7]: T_7[K_8] extends infer T_8 ? { [K_9 in keyof T_8]: T_8[K_9] extends infer T_9 ? { [K_10 in keyof T_9]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
+>Compute : { [K in keyof A]: A[K_1] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T extends unknown ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
+>Compute : { [K in keyof A]: A[K_1] extends infer T ? { [K in keyof T]: A[K_1][K_2] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }

type EqualsTest<T> = <A>() => A extends T ? 1 : 0;
>EqualsTest : EqualsTest<T>
Original file line number Diff line number Diff line change
Expand Up @@ -50,50 +50,12 @@ export default _default;
declare const _default: {
test: {
fn: <T extends {
x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never;
}>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never;
x: T["x"] extends infer T_1 extends {
[x: string]: (...params: unknown[]) => unknown;
} ? { [K in keyof T_1]: T["x"][K]; } : never;
}>(sliceIndex: T) => T["x"] extends infer T_1 extends {
[x: string]: (...params: unknown[]) => unknown;
} ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never;
};
};
export default _default;


//// [DtsFileErrors]


reexport.d.ts(5,88): error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.


==== types.d.ts (0 errors) ====
type Fns = Record<string, (...params: unknown[]) => unknown>;
type Map<T extends Fns> = {
[K in keyof T]: T[K];
};
type AllArg<T extends Fns> = {
[K in keyof T]: Parameters<T[K]>;
};
declare function fn<T extends {
x: Map<T['x']>;
}>(sliceIndex: T): AllArg<T['x']>;
declare const _default: {
fn: typeof fn;
};
export default _default;

==== reexport.d.ts (1 errors) ====
declare const _default: {
test: {
fn: <T extends {
x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never;
}>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never;
~~~~~~~~~
!!! error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
!!! error TS2344: Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
!!! error TS2344: Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
!!! error TS2344: Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
};
};
export default _default;

Original file line number Diff line number Diff line change
Expand Up @@ -9,60 +9,17 @@
exports.default = { test: types_1.default };


@@= skipped -23, +23 lines =@@
declare const _default: {
test: {
@@= skipped -25, +25 lines =@@
fn: <T extends {
- x: T["x"] extends infer T_1 extends {
- [x: string]: (...params: unknown[]) => unknown;
x: T["x"] extends infer T_1 extends {
[x: string]: (...params: unknown[]) => unknown;
- } ? { [K in keyof T_1]: T_1[K]; } : never;
- }>(sliceIndex: T) => T["x"] extends infer T_2 extends {
- [x: string]: (...params: unknown[]) => unknown;
+ } ? { [K in keyof T_1]: T["x"][K]; } : never;
+ }>(sliceIndex: T) => T["x"] extends infer T_1 extends {
[x: string]: (...params: unknown[]) => unknown;
- } ? { [K_1 in keyof T_2]: Parameters<T_2[K_1]>; } : never;
+ x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never;
+ }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never;
+ } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never;
};
};
export default _default;
+
+
+//// [DtsFileErrors]
+
+
+reexport.d.ts(5,88): error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
+ Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
+ Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
+ Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
+
+
+==== types.d.ts (0 errors) ====
+ type Fns = Record<string, (...params: unknown[]) => unknown>;
+ type Map<T extends Fns> = {
+ [K in keyof T]: T[K];
+ };
+ type AllArg<T extends Fns> = {
+ [K in keyof T]: Parameters<T[K]>;
+ };
+ declare function fn<T extends {
+ x: Map<T['x']>;
+ }>(sliceIndex: T): AllArg<T['x']>;
+ declare const _default: {
+ fn: typeof fn;
+ };
+ export default _default;
+
+==== reexport.d.ts (1 errors) ====
+ declare const _default: {
+ test: {
+ fn: <T extends {
+ x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never;
+ }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never;
+ ~~~~~~~~~
+!!! error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
+!!! error TS2344: Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
+!!! error TS2344: Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
+!!! error TS2344: Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
+ };
+ };
+ export default _default;
+
export default _default;
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ export default { fn };

=== reexport.ts ===
import test from "./types";
>test : { fn: <T extends { x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }
>test : { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }

export default { test };
>{ test } : { test: { fn: <T extends { x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }; }
>test : { fn: <T extends { x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }
>{ test } : { test: { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }; }
>test : { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }

Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
=== reexport.ts ===
import test from "./types";
->test : { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T_1[K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters<T_2[K_1]>; } : never; }
+>test : { fn: <T extends { x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }
+>test : { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }

export default { test };
->{ test } : { test: { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T_1[K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters<T_2[K_1]>; } : never; }; }
->test : { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T_1[K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters<T_2[K_1]>; } : never; }
+>{ test } : { test: { fn: <T extends { x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }; }
+>test : { fn: <T extends { x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }
+>{ test } : { test: { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }; }
+>test : { fn: <T extends { x: T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters<T["x"][K]>; } : never; }
Loading