Add regression test cases and rename test

This commit is contained in:
Nathan Shively-Sanders 2017-08-02 10:33:15 -07:00
parent 011f712d98
commit aed386c796
8 changed files with 248 additions and 69 deletions

View file

@ -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;
}

View file

@ -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))
}

View file

@ -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
}

View 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;
}

View file

@ -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))
}

View file

@ -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
}

View file

@ -1,7 +0,0 @@
function f<T extends number>() {
var t: T;
var v = {
[t]: 0
}
return t + t;
}

View 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;
}