Add regression test

This commit is contained in:
Anders Hejlsberg
2022-08-28 08:26:55 -07:00
parent 40a5fc1189
commit 7a14338fb8
5 changed files with 72 additions and 0 deletions
@@ -240,4 +240,12 @@ tests/cases/conformance/controlFlow/controlFlowGenericTypes.ts(168,9): error TS2
control[key] = value;
}
}
// Repro from #50465
type Column<T> = (keyof T extends never ? { id?: number | string } : { id: T }) & { title?: string; }
function getColumnProperty<T>(column: Column<T>, key: keyof Column<T>) {
return column[key];
}
@@ -210,6 +210,14 @@ function update<T extends Control, K extends keyof T>(control : T | undefined, k
control[key] = value;
}
}
// Repro from #50465
type Column<T> = (keyof T extends never ? { id?: number | string } : { id: T }) & { title?: string; }
function getColumnProperty<T>(column: Column<T>, key: keyof Column<T>) {
return column[key];
}
//// [controlFlowGenericTypes.js]
@@ -368,3 +376,6 @@ function update(control, key, value) {
control[key] = value;
}
}
function getColumnProperty(column, key) {
return column[key];
}
@@ -626,3 +626,29 @@ function update<T extends Control, K extends keyof T>(control : T | undefined, k
}
}
// Repro from #50465
type Column<T> = (keyof T extends never ? { id?: number | string } : { id: T }) & { title?: string; }
>Column : Symbol(Column, Decl(controlFlowGenericTypes.ts, 210, 1))
>T : Symbol(T, Decl(controlFlowGenericTypes.ts, 214, 12))
>T : Symbol(T, Decl(controlFlowGenericTypes.ts, 214, 12))
>id : Symbol(id, Decl(controlFlowGenericTypes.ts, 214, 43))
>id : Symbol(id, Decl(controlFlowGenericTypes.ts, 214, 70))
>T : Symbol(T, Decl(controlFlowGenericTypes.ts, 214, 12))
>title : Symbol(title, Decl(controlFlowGenericTypes.ts, 214, 83))
function getColumnProperty<T>(column: Column<T>, key: keyof Column<T>) {
>getColumnProperty : Symbol(getColumnProperty, Decl(controlFlowGenericTypes.ts, 214, 101))
>T : Symbol(T, Decl(controlFlowGenericTypes.ts, 216, 27))
>column : Symbol(column, Decl(controlFlowGenericTypes.ts, 216, 30))
>Column : Symbol(Column, Decl(controlFlowGenericTypes.ts, 210, 1))
>T : Symbol(T, Decl(controlFlowGenericTypes.ts, 216, 27))
>key : Symbol(key, Decl(controlFlowGenericTypes.ts, 216, 48))
>Column : Symbol(Column, Decl(controlFlowGenericTypes.ts, 210, 1))
>T : Symbol(T, Decl(controlFlowGenericTypes.ts, 216, 27))
return column[key];
>column : Symbol(column, Decl(controlFlowGenericTypes.ts, 216, 30))
>key : Symbol(key, Decl(controlFlowGenericTypes.ts, 216, 48))
}
@@ -583,3 +583,22 @@ function update<T extends Control, K extends keyof T>(control : T | undefined, k
}
}
// Repro from #50465
type Column<T> = (keyof T extends never ? { id?: number | string } : { id: T }) & { title?: string; }
>Column : Column<T>
>id : string | number | undefined
>id : T
>title : string | undefined
function getColumnProperty<T>(column: Column<T>, key: keyof Column<T>) {
>getColumnProperty : <T>(column: Column<T>, key: keyof Column<T>) => Column<T>["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })]
>column : Column<T>
>key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })
return column[key];
>column[key] : Column<T>["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })]
>column : Column<T>
>key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })
}
@@ -211,3 +211,11 @@ function update<T extends Control, K extends keyof T>(control : T | undefined, k
control[key] = value;
}
}
// Repro from #50465
type Column<T> = (keyof T extends never ? { id?: number | string } : { id: T }) & { title?: string; }
function getColumnProperty<T>(column: Column<T>, key: keyof Column<T>) {
return column[key];
}