Add regression test cases and rename test
This commit is contained in:
parent
011f712d98
commit
aed386c796
8 changed files with 248 additions and 69 deletions
|
@ -1,19 +0,0 @@
|
|||
//// [typeParamExtendsNumber.ts]
|
||||
function f<T extends number>() {
|
||||
var t: T;
|
||||
var v = {
|
||||
[t]: 0
|
||||
}
|
||||
return t + t;
|
||||
}
|
||||
|
||||
|
||||
//// [typeParamExtendsNumber.js]
|
||||
function f() {
|
||||
var t;
|
||||
var v = (_a = {},
|
||||
_a[t] = 0,
|
||||
_a);
|
||||
return t + t;
|
||||
var _a;
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
=== tests/cases/compiler/typeParamExtendsNumber.ts ===
|
||||
function f<T extends number>() {
|
||||
>f : Symbol(f, Decl(typeParamExtendsNumber.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(typeParamExtendsNumber.ts, 0, 11))
|
||||
|
||||
var t: T;
|
||||
>t : Symbol(t, Decl(typeParamExtendsNumber.ts, 1, 7))
|
||||
>T : Symbol(T, Decl(typeParamExtendsNumber.ts, 0, 11))
|
||||
|
||||
var v = {
|
||||
>v : Symbol(v, Decl(typeParamExtendsNumber.ts, 2, 7))
|
||||
|
||||
[t]: 0
|
||||
>t : Symbol(t, Decl(typeParamExtendsNumber.ts, 1, 7))
|
||||
}
|
||||
return t + t;
|
||||
>t : Symbol(t, Decl(typeParamExtendsNumber.ts, 1, 7))
|
||||
>t : Symbol(t, Decl(typeParamExtendsNumber.ts, 1, 7))
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
=== tests/cases/compiler/typeParamExtendsNumber.ts ===
|
||||
function f<T extends number>() {
|
||||
>f : <T extends number>() => number
|
||||
>T : T
|
||||
|
||||
var t: T;
|
||||
>t : T
|
||||
>T : T
|
||||
|
||||
var v = {
|
||||
>v : { [x: number]: number; }
|
||||
>{ [t]: 0 } : { [x: number]: number; }
|
||||
|
||||
[t]: 0
|
||||
>t : T
|
||||
>0 : 0
|
||||
}
|
||||
return t + t;
|
||||
>t + t : number
|
||||
>t : T
|
||||
>t : T
|
||||
}
|
||||
|
51
tests/baselines/reference/typeParameterExtendsPrimitive.js
Normal file
51
tests/baselines/reference/typeParameterExtendsPrimitive.js
Normal file
|
@ -0,0 +1,51 @@
|
|||
//// [typeParameterExtendsPrimitive.ts]
|
||||
// #14473
|
||||
function f<T extends number>() {
|
||||
var t: T;
|
||||
var v = {
|
||||
[t]: 0
|
||||
}
|
||||
return t + t;
|
||||
}
|
||||
|
||||
// #15501
|
||||
interface I { x: number }
|
||||
type IdMap<T> = { [P in keyof T]: T[P] };
|
||||
function g<T extends I>(i: IdMap<T>) {
|
||||
const n: number = i.x;
|
||||
return i.x * 2;
|
||||
}
|
||||
|
||||
// #17069
|
||||
function h<T extends Record<K, number>, K extends string>(array: T[], prop: K): number {
|
||||
let result = 0;
|
||||
for (const v of array) {
|
||||
result += v[prop];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//// [typeParameterExtendsPrimitive.js]
|
||||
// #14473
|
||||
function f() {
|
||||
var t;
|
||||
var v = (_a = {},
|
||||
_a[t] = 0,
|
||||
_a);
|
||||
return t + t;
|
||||
var _a;
|
||||
}
|
||||
function g(i) {
|
||||
var n = i.x;
|
||||
return i.x * 2;
|
||||
}
|
||||
// #17069
|
||||
function h(array, prop) {
|
||||
var result = 0;
|
||||
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
||||
var v = array_1[_i];
|
||||
result += v[prop];
|
||||
}
|
||||
return result;
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
=== tests/cases/compiler/typeParameterExtendsPrimitive.ts ===
|
||||
// #14473
|
||||
function f<T extends number>() {
|
||||
>f : Symbol(f, Decl(typeParameterExtendsPrimitive.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 1, 11))
|
||||
|
||||
var t: T;
|
||||
>t : Symbol(t, Decl(typeParameterExtendsPrimitive.ts, 2, 7))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 1, 11))
|
||||
|
||||
var v = {
|
||||
>v : Symbol(v, Decl(typeParameterExtendsPrimitive.ts, 3, 7))
|
||||
|
||||
[t]: 0
|
||||
>t : Symbol(t, Decl(typeParameterExtendsPrimitive.ts, 2, 7))
|
||||
}
|
||||
return t + t;
|
||||
>t : Symbol(t, Decl(typeParameterExtendsPrimitive.ts, 2, 7))
|
||||
>t : Symbol(t, Decl(typeParameterExtendsPrimitive.ts, 2, 7))
|
||||
}
|
||||
|
||||
// #15501
|
||||
interface I { x: number }
|
||||
>I : Symbol(I, Decl(typeParameterExtendsPrimitive.ts, 7, 1))
|
||||
>x : Symbol(I.x, Decl(typeParameterExtendsPrimitive.ts, 10, 13))
|
||||
|
||||
type IdMap<T> = { [P in keyof T]: T[P] };
|
||||
>IdMap : Symbol(IdMap, Decl(typeParameterExtendsPrimitive.ts, 10, 25))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 11, 11))
|
||||
>P : Symbol(P, Decl(typeParameterExtendsPrimitive.ts, 11, 19))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 11, 11))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 11, 11))
|
||||
>P : Symbol(P, Decl(typeParameterExtendsPrimitive.ts, 11, 19))
|
||||
|
||||
function g<T extends I>(i: IdMap<T>) {
|
||||
>g : Symbol(g, Decl(typeParameterExtendsPrimitive.ts, 11, 41))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 12, 11))
|
||||
>I : Symbol(I, Decl(typeParameterExtendsPrimitive.ts, 7, 1))
|
||||
>i : Symbol(i, Decl(typeParameterExtendsPrimitive.ts, 12, 24))
|
||||
>IdMap : Symbol(IdMap, Decl(typeParameterExtendsPrimitive.ts, 10, 25))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 12, 11))
|
||||
|
||||
const n: number = i.x;
|
||||
>n : Symbol(n, Decl(typeParameterExtendsPrimitive.ts, 13, 9))
|
||||
>i.x : Symbol(x, Decl(typeParameterExtendsPrimitive.ts, 10, 13))
|
||||
>i : Symbol(i, Decl(typeParameterExtendsPrimitive.ts, 12, 24))
|
||||
>x : Symbol(x, Decl(typeParameterExtendsPrimitive.ts, 10, 13))
|
||||
|
||||
return i.x * 2;
|
||||
>i.x : Symbol(x, Decl(typeParameterExtendsPrimitive.ts, 10, 13))
|
||||
>i : Symbol(i, Decl(typeParameterExtendsPrimitive.ts, 12, 24))
|
||||
>x : Symbol(x, Decl(typeParameterExtendsPrimitive.ts, 10, 13))
|
||||
}
|
||||
|
||||
// #17069
|
||||
function h<T extends Record<K, number>, K extends string>(array: T[], prop: K): number {
|
||||
>h : Symbol(h, Decl(typeParameterExtendsPrimitive.ts, 15, 1))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 18, 11))
|
||||
>Record : Symbol(Record, Decl(lib.d.ts, --, --))
|
||||
>K : Symbol(K, Decl(typeParameterExtendsPrimitive.ts, 18, 39))
|
||||
>K : Symbol(K, Decl(typeParameterExtendsPrimitive.ts, 18, 39))
|
||||
>array : Symbol(array, Decl(typeParameterExtendsPrimitive.ts, 18, 58))
|
||||
>T : Symbol(T, Decl(typeParameterExtendsPrimitive.ts, 18, 11))
|
||||
>prop : Symbol(prop, Decl(typeParameterExtendsPrimitive.ts, 18, 69))
|
||||
>K : Symbol(K, Decl(typeParameterExtendsPrimitive.ts, 18, 39))
|
||||
|
||||
let result = 0;
|
||||
>result : Symbol(result, Decl(typeParameterExtendsPrimitive.ts, 19, 7))
|
||||
|
||||
for (const v of array) {
|
||||
>v : Symbol(v, Decl(typeParameterExtendsPrimitive.ts, 20, 14))
|
||||
>array : Symbol(array, Decl(typeParameterExtendsPrimitive.ts, 18, 58))
|
||||
|
||||
result += v[prop];
|
||||
>result : Symbol(result, Decl(typeParameterExtendsPrimitive.ts, 19, 7))
|
||||
>v : Symbol(v, Decl(typeParameterExtendsPrimitive.ts, 20, 14))
|
||||
>prop : Symbol(prop, Decl(typeParameterExtendsPrimitive.ts, 18, 69))
|
||||
}
|
||||
return result;
|
||||
>result : Symbol(result, Decl(typeParameterExtendsPrimitive.ts, 19, 7))
|
||||
}
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
=== tests/cases/compiler/typeParameterExtendsPrimitive.ts ===
|
||||
// #14473
|
||||
function f<T extends number>() {
|
||||
>f : <T extends number>() => number
|
||||
>T : T
|
||||
|
||||
var t: T;
|
||||
>t : T
|
||||
>T : T
|
||||
|
||||
var v = {
|
||||
>v : { [x: number]: number; }
|
||||
>{ [t]: 0 } : { [x: number]: number; }
|
||||
|
||||
[t]: 0
|
||||
>t : T
|
||||
>0 : 0
|
||||
}
|
||||
return t + t;
|
||||
>t + t : number
|
||||
>t : T
|
||||
>t : T
|
||||
}
|
||||
|
||||
// #15501
|
||||
interface I { x: number }
|
||||
>I : I
|
||||
>x : number
|
||||
|
||||
type IdMap<T> = { [P in keyof T]: T[P] };
|
||||
>IdMap : IdMap<T>
|
||||
>T : T
|
||||
>P : P
|
||||
>T : T
|
||||
>T : T
|
||||
>P : P
|
||||
|
||||
function g<T extends I>(i: IdMap<T>) {
|
||||
>g : <T extends I>(i: IdMap<T>) => number
|
||||
>T : T
|
||||
>I : I
|
||||
>i : IdMap<T>
|
||||
>IdMap : IdMap<T>
|
||||
>T : T
|
||||
|
||||
const n: number = i.x;
|
||||
>n : number
|
||||
>i.x : T["x"]
|
||||
>i : IdMap<T>
|
||||
>x : T["x"]
|
||||
|
||||
return i.x * 2;
|
||||
>i.x * 2 : number
|
||||
>i.x : T["x"]
|
||||
>i : IdMap<T>
|
||||
>x : T["x"]
|
||||
>2 : 2
|
||||
}
|
||||
|
||||
// #17069
|
||||
function h<T extends Record<K, number>, K extends string>(array: T[], prop: K): number {
|
||||
>h : <T extends Record<K, number>, K extends string>(array: T[], prop: K) => number
|
||||
>T : T
|
||||
>Record : Record<K, T>
|
||||
>K : K
|
||||
>K : K
|
||||
>array : T[]
|
||||
>T : T
|
||||
>prop : K
|
||||
>K : K
|
||||
|
||||
let result = 0;
|
||||
>result : number
|
||||
>0 : 0
|
||||
|
||||
for (const v of array) {
|
||||
>v : T
|
||||
>array : T[]
|
||||
|
||||
result += v[prop];
|
||||
>result += v[prop] : number
|
||||
>result : number
|
||||
>v[prop] : T[K]
|
||||
>v : T
|
||||
>prop : K
|
||||
}
|
||||
return result;
|
||||
>result : number
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
function f<T extends number>() {
|
||||
var t: T;
|
||||
var v = {
|
||||
[t]: 0
|
||||
}
|
||||
return t + t;
|
||||
}
|
25
tests/cases/compiler/typeParameterExtendsPrimitive.ts
Normal file
25
tests/cases/compiler/typeParameterExtendsPrimitive.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
// #14473
|
||||
function f<T extends number>() {
|
||||
var t: T;
|
||||
var v = {
|
||||
[t]: 0
|
||||
}
|
||||
return t + t;
|
||||
}
|
||||
|
||||
// #15501
|
||||
interface I { x: number }
|
||||
type IdMap<T> = { [P in keyof T]: T[P] };
|
||||
function g<T extends I>(i: IdMap<T>) {
|
||||
const n: number = i.x;
|
||||
return i.x * 2;
|
||||
}
|
||||
|
||||
// #17069
|
||||
function h<T extends Record<K, number>, K extends string>(array: T[], prop: K): number {
|
||||
let result = 0;
|
||||
for (const v of array) {
|
||||
result += v[prop];
|
||||
}
|
||||
return result;
|
||||
}
|
Loading…
Reference in a new issue