Test: typeof can refer to block-scoped var before declaration

This commit is contained in:
Nathan Shively-Sanders
2017-04-17 15:20:36 -07:00
parent 03b12e88af
commit 42ac23a585
4 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
//// [typeofUsedBeforeBlockScoped.ts]
// TODO: Change name of file to typeofUsedBeforeBlockScoped.ts
type T = typeof C & typeof C.s & typeof o & typeof o.n;
class C {
static s = 2;
}
type W = typeof o.n;
let o2: typeof o;
let o = { n: 12 };
//// [typeofUsedBeforeBlockScoped.js]
var C = (function () {
function C() {
}
return C;
}());
C.s = 2;
var o2;
var o = { n: 12 };

View File

@@ -0,0 +1,33 @@
=== tests/cases/compiler/typeofUsedBeforeBlockScoped.ts ===
// TODO: Change name of file to typeofUsedBeforeBlockScoped.ts
type T = typeof C & typeof C.s & typeof o & typeof o.n;
>T : Symbol(T, Decl(typeofUsedBeforeBlockScoped.ts, 0, 0))
>C : Symbol(C, Decl(typeofUsedBeforeBlockScoped.ts, 1, 55))
>C.s : Symbol(C.s, Decl(typeofUsedBeforeBlockScoped.ts, 2, 9))
>C : Symbol(C, Decl(typeofUsedBeforeBlockScoped.ts, 1, 55))
>s : Symbol(C.s, Decl(typeofUsedBeforeBlockScoped.ts, 2, 9))
>o : Symbol(o, Decl(typeofUsedBeforeBlockScoped.ts, 7, 3))
>o.n : Symbol(n, Decl(typeofUsedBeforeBlockScoped.ts, 7, 9))
>o : Symbol(o, Decl(typeofUsedBeforeBlockScoped.ts, 7, 3))
>n : Symbol(n, Decl(typeofUsedBeforeBlockScoped.ts, 7, 9))
class C {
>C : Symbol(C, Decl(typeofUsedBeforeBlockScoped.ts, 1, 55))
static s = 2;
>s : Symbol(C.s, Decl(typeofUsedBeforeBlockScoped.ts, 2, 9))
}
type W = typeof o.n;
>W : Symbol(W, Decl(typeofUsedBeforeBlockScoped.ts, 4, 1))
>o.n : Symbol(n, Decl(typeofUsedBeforeBlockScoped.ts, 7, 9))
>o : Symbol(o, Decl(typeofUsedBeforeBlockScoped.ts, 7, 3))
>n : Symbol(n, Decl(typeofUsedBeforeBlockScoped.ts, 7, 9))
let o2: typeof o;
>o2 : Symbol(o2, Decl(typeofUsedBeforeBlockScoped.ts, 6, 3))
>o : Symbol(o, Decl(typeofUsedBeforeBlockScoped.ts, 7, 3))
let o = { n: 12 };
>o : Symbol(o, Decl(typeofUsedBeforeBlockScoped.ts, 7, 3))
>n : Symbol(n, Decl(typeofUsedBeforeBlockScoped.ts, 7, 9))

View File

@@ -0,0 +1,36 @@
=== tests/cases/compiler/typeofUsedBeforeBlockScoped.ts ===
// TODO: Change name of file to typeofUsedBeforeBlockScoped.ts
type T = typeof C & typeof C.s & typeof o & typeof o.n;
>T : T
>C : typeof C
>C.s : number
>C : typeof C
>s : number
>o : { n: number; }
>o.n : number
>o : { n: number; }
>n : number
class C {
>C : C
static s = 2;
>s : number
>2 : 2
}
type W = typeof o.n;
>W : number
>o.n : number
>o : { n: number; }
>n : number
let o2: typeof o;
>o2 : { n: number; }
>o : { n: number; }
let o = { n: 12 };
>o : { n: number; }
>{ n: 12 } : { n: number; }
>n : number
>12 : 12

View File

@@ -0,0 +1,8 @@
// TODO: Change name of file to typeofUsedBeforeBlockScoped.ts
type T = typeof C & typeof C.s & typeof o & typeof o.n;
class C {
static s = 2;
}
type W = typeof o.n;
let o2: typeof o;
let o = { n: 12 };