Skip to content

Commit 845f5ab

Browse files
committed
Minor corrections
1 parent 3df8c50 commit 845f5ab

6 files changed

+49
-58
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21469,8 +21469,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2146921469
if (sourceFlags & TypeFlags.IndexedAccess) {
2147021470
const indexType = (source as IndexedAccessType).indexType;
2147121471
if (indexType.flags & TypeFlags.Index) {
21472-
const a = getBaseConstraintOfType((indexType as IndexType).type);
21473-
const indexConstraint = a && a !== noConstraintType ? getIndexType(a) : keyofConstraintType;
21472+
const unresolvedIndexConstraint = getBaseConstraintOfType((indexType as IndexType).type);
21473+
const indexConstraint = unresolvedIndexConstraint && unresolvedIndexConstraint !== noConstraintType ? getIndexType(unresolvedIndexConstraint) : keyofConstraintType;
2147421474
const constraint = getIndexedAccessType((source as IndexedAccessType).objectType, indexConstraint);
2147521475
if (result = isRelatedTo(constraint, target, RecursionFlags.Source, /*reportErrors*/ false, /*headMessage*/ undefined, intersectionState)) {
2147621476
return result;
Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
1-
tests/cases/compiler/constraintWithIndexedAccess.ts(27,13): error TS2300: Duplicate identifier 'TypeGeneric'.
2-
tests/cases/compiler/constraintWithIndexedAccess.ts(28,13): error TS2300: Duplicate identifier 'TypeGeneric'.
3-
tests/cases/compiler/constraintWithIndexedAccess.ts(28,101): error TS2344: Type 'DataFetchFns[T][T]' does not satisfy the constraint '(...args: any) => any'.
1+
tests/cases/compiler/constraintWithIndexedAccess.ts(28,102): error TS2344: Type 'DataFetchFns[T][T]' does not satisfy the constraint '(...args: any) => any'.
42
Type 'DataFetchFns[T]["Boat"] | DataFetchFns[T]["Plane"]' is not assignable to type '(...args: any) => any'.
53
Type 'DataFetchFns[T]["Boat"]' is not assignable to type '(...args: any) => any'.
6-
tests/cases/compiler/constraintWithIndexedAccess.ts(28,101): error TS2536: Type 'T' cannot be used to index type 'DataFetchFns[T]'.
7-
tests/cases/compiler/constraintWithIndexedAccess.ts(29,13): error TS2300: Duplicate identifier 'TypeGeneric'.
8-
tests/cases/compiler/constraintWithIndexedAccess.ts(29,101): error TS2536: Type 'F' cannot be used to index type 'DataFetchFns'.
9-
tests/cases/compiler/constraintWithIndexedAccess.ts(29,101): error TS2344: Type 'DataFetchFns[F][F]' does not satisfy the constraint '(...args: any) => any'.
4+
tests/cases/compiler/constraintWithIndexedAccess.ts(28,102): error TS2536: Type 'T' cannot be used to index type 'DataFetchFns[T]'.
5+
tests/cases/compiler/constraintWithIndexedAccess.ts(29,102): error TS2536: Type 'F' cannot be used to index type 'DataFetchFns'.
6+
tests/cases/compiler/constraintWithIndexedAccess.ts(29,102): error TS2344: Type 'DataFetchFns[F][F]' does not satisfy the constraint '(...args: any) => any'.
107
Type 'DataFetchFns[F][keyof DataFetchFns[T]]' is not assignable to type '(...args: any) => any'.
118
Type 'DataFetchFns[F][string] | DataFetchFns[F][number] | DataFetchFns[F][symbol]' is not assignable to type '(...args: any) => any'.
129
Type 'DataFetchFns[F][string]' is not assignable to type '(...args: any) => any'.
1310
Type 'DataFetchFns[keyof DataFetchFns[T]][string]' is not assignable to type '(...args: any) => any'.
14-
tests/cases/compiler/constraintWithIndexedAccess.ts(29,101): error TS2536: Type 'F' cannot be used to index type 'DataFetchFns[F]'.
11+
tests/cases/compiler/constraintWithIndexedAccess.ts(29,102): error TS2536: Type 'F' cannot be used to index type 'DataFetchFns[F]'.
1512

1613

17-
==== tests/cases/compiler/constraintWithIndexedAccess.ts (8 errors) ====
14+
==== tests/cases/compiler/constraintWithIndexedAccess.ts (5 errors) ====
1815
// #52399
1916
type DataFetchFns = {
2017
Boat: {
@@ -41,29 +38,23 @@ tests/cases/compiler/constraintWithIndexedAccess.ts(29,101): error TS2536: Type
4138
export type TypeHardcodedAsParameter<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
4239
type VehicleSelector<T extends keyof DataFetchFns> = DataFetchFns[T];
4340
export type TypeHardcodedAsParameter2<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<VehicleSelector<T>[F]>;
44-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
45-
~~~~~~~~~~~
46-
!!! error TS2300: Duplicate identifier 'TypeGeneric'.
47-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
48-
~~~~~~~~~~~
49-
!!! error TS2300: Duplicate identifier 'TypeGeneric'.
50-
~~~~~~~~~~~~~~~~~~
41+
export type TypeGeneric1<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
42+
export type TypeGeneric2<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
43+
~~~~~~~~~~~~~~~~~~
5144
!!! error TS2344: Type 'DataFetchFns[T][T]' does not satisfy the constraint '(...args: any) => any'.
5245
!!! error TS2344: Type 'DataFetchFns[T]["Boat"] | DataFetchFns[T]["Plane"]' is not assignable to type '(...args: any) => any'.
5346
!!! error TS2344: Type 'DataFetchFns[T]["Boat"]' is not assignable to type '(...args: any) => any'.
54-
~~~~~~~~~~~~~~~~~~
47+
~~~~~~~~~~~~~~~~~~
5548
!!! error TS2536: Type 'T' cannot be used to index type 'DataFetchFns[T]'.
56-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
57-
~~~~~~~~~~~
58-
!!! error TS2300: Duplicate identifier 'TypeGeneric'.
59-
~~~~~~~~~~~~~~~
49+
export type TypeGeneric3<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
50+
~~~~~~~~~~~~~~~
6051
!!! error TS2536: Type 'F' cannot be used to index type 'DataFetchFns'.
61-
~~~~~~~~~~~~~~~~~~
52+
~~~~~~~~~~~~~~~~~~
6253
!!! error TS2344: Type 'DataFetchFns[F][F]' does not satisfy the constraint '(...args: any) => any'.
6354
!!! error TS2344: Type 'DataFetchFns[F][keyof DataFetchFns[T]]' is not assignable to type '(...args: any) => any'.
6455
!!! error TS2344: Type 'DataFetchFns[F][string] | DataFetchFns[F][number] | DataFetchFns[F][symbol]' is not assignable to type '(...args: any) => any'.
6556
!!! error TS2344: Type 'DataFetchFns[F][string]' is not assignable to type '(...args: any) => any'.
6657
!!! error TS2344: Type 'DataFetchFns[keyof DataFetchFns[T]][string]' is not assignable to type '(...args: any) => any'.
67-
~~~~~~~~~~~~~~~~~~
58+
~~~~~~~~~~~~~~~~~~
6859
!!! error TS2536: Type 'F' cannot be used to index type 'DataFetchFns[F]'.
6960

tests/baselines/reference/constraintWithIndexedAccess.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ export type FailingCombo<T extends 'Boat', F extends keyof DataFetchFns[T]> = Re
2525
export type TypeHardcodedAsParameter<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
2626
type VehicleSelector<T extends keyof DataFetchFns> = DataFetchFns[T];
2727
export type TypeHardcodedAsParameter2<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<VehicleSelector<T>[F]>;
28-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
29-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
30-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
28+
export type TypeGeneric1<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
29+
export type TypeGeneric2<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
30+
export type TypeGeneric3<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
3131

3232

3333
//// [constraintWithIndexedAccess.js]

tests/baselines/reference/constraintWithIndexedAccess.symbols

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -125,39 +125,39 @@ export type TypeHardcodedAsParameter2<T extends 'Boat', F extends keyof DataFetc
125125
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 25, 38))
126126
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 25, 55))
127127

128-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
129-
>TypeGeneric : Symbol(TypeGeneric, Decl(constraintWithIndexedAccess.ts, 25, 125))
130-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 26, 24))
128+
export type TypeGeneric1<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
129+
>TypeGeneric1 : Symbol(TypeGeneric1, Decl(constraintWithIndexedAccess.ts, 25, 125))
130+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 26, 25))
131131
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
132-
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 26, 53))
132+
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 26, 54))
133133
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
134-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 26, 24))
134+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 26, 25))
135135
>ReturnType : Symbol(ReturnType, Decl(lib.es5.d.ts, --, --))
136136
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
137-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 26, 24))
138-
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 26, 53))
137+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 26, 25))
138+
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 26, 54))
139139

140-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
141-
>TypeGeneric : Symbol(TypeGeneric, Decl(constraintWithIndexedAccess.ts, 26, 120))
142-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 24))
140+
export type TypeGeneric2<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
141+
>TypeGeneric2 : Symbol(TypeGeneric2, Decl(constraintWithIndexedAccess.ts, 26, 121))
142+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 25))
143143
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
144-
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 27, 53))
144+
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 27, 54))
145145
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
146-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 24))
146+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 25))
147147
>ReturnType : Symbol(ReturnType, Decl(lib.es5.d.ts, --, --))
148148
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
149-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 24))
150-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 24))
149+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 25))
150+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 27, 25))
151151

152-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
153-
>TypeGeneric : Symbol(TypeGeneric, Decl(constraintWithIndexedAccess.ts, 27, 120))
154-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 28, 24))
152+
export type TypeGeneric3<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
153+
>TypeGeneric3 : Symbol(TypeGeneric3, Decl(constraintWithIndexedAccess.ts, 27, 121))
154+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 28, 25))
155155
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
156-
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 28, 53))
156+
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 28, 54))
157157
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
158-
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 28, 24))
158+
>T : Symbol(T, Decl(constraintWithIndexedAccess.ts, 28, 25))
159159
>ReturnType : Symbol(ReturnType, Decl(lib.es5.d.ts, --, --))
160160
>DataFetchFns : Symbol(DataFetchFns, Decl(constraintWithIndexedAccess.ts, 0, 0))
161-
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 28, 53))
162-
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 28, 53))
161+
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 28, 54))
162+
>F : Symbol(F, Decl(constraintWithIndexedAccess.ts, 28, 54))
163163

tests/baselines/reference/constraintWithIndexedAccess.types

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ type VehicleSelector<T extends keyof DataFetchFns> = DataFetchFns[T];
7878
export type TypeHardcodedAsParameter2<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<VehicleSelector<T>[F]>;
7979
>TypeHardcodedAsParameter2 : TypeHardcodedAsParameter2<T, F>
8080

81-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
82-
>TypeGeneric : TypeGeneric<T, F>
81+
export type TypeGeneric1<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
82+
>TypeGeneric1 : TypeGeneric1<T, F>
8383

84-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
85-
>TypeGeneric : import("tests/cases/compiler/constraintWithIndexedAccess").TypeGeneric<T, F>
84+
export type TypeGeneric2<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
85+
>TypeGeneric2 : TypeGeneric2<T, F>
8686

87-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
88-
>TypeGeneric : import("tests/cases/compiler/constraintWithIndexedAccess").TypeGeneric<T, F>
87+
export type TypeGeneric3<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
88+
>TypeGeneric3 : TypeGeneric3<T, F>
8989

tests/cases/compiler/constraintWithIndexedAccess.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ export type FailingCombo<T extends 'Boat', F extends keyof DataFetchFns[T]> = Re
2424
export type TypeHardcodedAsParameter<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
2525
type VehicleSelector<T extends keyof DataFetchFns> = DataFetchFns[T];
2626
export type TypeHardcodedAsParameter2<T extends 'Boat', F extends keyof DataFetchFns[T]> = ReturnType<VehicleSelector<T>[F]>;
27-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
28-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
29-
export type TypeGeneric<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error
27+
export type TypeGeneric1<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][F]>;
28+
export type TypeGeneric2<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[T][T]>; // error
29+
export type TypeGeneric3<T extends keyof DataFetchFns, F extends keyof DataFetchFns[T]> = ReturnType<DataFetchFns[F][F]>; // error

0 commit comments

Comments
 (0)