Test:static inits can refer to later static methods

This commit is contained in:
Nathan Shively-Sanders 2017-04-04 14:50:42 -07:00
parent 833fd010d7
commit 4214aed37d
3 changed files with 81 additions and 0 deletions

View File

@ -0,0 +1,30 @@
tests/cases/compiler/scopeCheckStaticInitializer.ts(2,38): error TS2448: Block-scoped variable 'data' used before its declaration.
tests/cases/compiler/scopeCheckStaticInitializer.ts(5,23): error TS2449: Class 'After' used before its declaration.
tests/cases/compiler/scopeCheckStaticInitializer.ts(5,29): error TS2448: Block-scoped variable 'data' used before its declaration.
tests/cases/compiler/scopeCheckStaticInitializer.ts(6,23): error TS2449: Class 'After' used before its declaration.
==== tests/cases/compiler/scopeCheckStaticInitializer.ts (4 errors) ====
class X {
static illegalBeforeProperty = X.data;
~~~~
!!! error TS2448: Block-scoped variable 'data' used before its declaration.
static okBeforeMethod = X.method;
static illegal2 = After.data;
~~~~~
!!! error TS2449: Class 'After' used before its declaration.
~~~~
!!! error TS2448: Block-scoped variable 'data' used before its declaration.
static illegal3 = After.method;
~~~~~
!!! error TS2449: Class 'After' used before its declaration.
static data = 13;
static method() { }
}
class After {
static data = 12;
static method() { };
}

View File

@ -0,0 +1,37 @@
//// [scopeCheckStaticInitializer.ts]
class X {
static illegalBeforeProperty = X.data;
static okBeforeMethod = X.method;
static illegal2 = After.data;
static illegal3 = After.method;
static data = 13;
static method() { }
}
class After {
static data = 12;
static method() { };
}
//// [scopeCheckStaticInitializer.js]
var X = (function () {
function X() {
}
X.method = function () { };
return X;
}());
X.illegalBeforeProperty = X.data;
X.okBeforeMethod = X.method;
X.illegal2 = After.data;
X.illegal3 = After.method;
X.data = 13;
var After = (function () {
function After() {
}
After.method = function () { };
;
return After;
}());
After.data = 12;

View File

@ -0,0 +1,14 @@
class X {
static illegalBeforeProperty = X.data;
static okBeforeMethod = X.method;
static illegal2 = After.data;
static illegal3 = After.method;
static data = 13;
static method() { }
}
class After {
static data = 12;
static method() { };
}