From f65819a2538eb642f6ae1beae4b920d4c3bae03c Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Fri, 31 Mar 2017 12:05:12 -0700 Subject: [PATCH] Test:props of class A are usable in prop initialisers of class B Regardless of order of class A and class B --- .../reference/scopeCheckClassProperty.js | 26 +++++++++++++++++++ .../reference/scopeCheckClassProperty.symbols | 23 ++++++++++++++++ .../reference/scopeCheckClassProperty.types | 26 +++++++++++++++++++ .../cases/compiler/scopeCheckClassProperty.ts | 9 +++++++ 4 files changed, 84 insertions(+) create mode 100644 tests/baselines/reference/scopeCheckClassProperty.js create mode 100644 tests/baselines/reference/scopeCheckClassProperty.symbols create mode 100644 tests/baselines/reference/scopeCheckClassProperty.types create mode 100644 tests/cases/compiler/scopeCheckClassProperty.ts diff --git a/tests/baselines/reference/scopeCheckClassProperty.js b/tests/baselines/reference/scopeCheckClassProperty.js new file mode 100644 index 0000000000..13324e7447 --- /dev/null +++ b/tests/baselines/reference/scopeCheckClassProperty.js @@ -0,0 +1,26 @@ +//// [scopeCheckClassProperty.ts] +class C { + constructor() { + new A().p; // ok + } + public x = new A().p; // should also be ok +} +class A { + public p = ''; +} + + +//// [scopeCheckClassProperty.js] +var C = (function () { + function C() { + this.x = new A().p; // should also be ok + new A().p; // ok + } + return C; +}()); +var A = (function () { + function A() { + this.p = ''; + } + return A; +}()); diff --git a/tests/baselines/reference/scopeCheckClassProperty.symbols b/tests/baselines/reference/scopeCheckClassProperty.symbols new file mode 100644 index 0000000000..bd77e5413d --- /dev/null +++ b/tests/baselines/reference/scopeCheckClassProperty.symbols @@ -0,0 +1,23 @@ +=== tests/cases/compiler/scopeCheckClassProperty.ts === +class C { +>C : Symbol(C, Decl(scopeCheckClassProperty.ts, 0, 0)) + + constructor() { + new A().p; // ok +>new A().p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9)) +>A : Symbol(A, Decl(scopeCheckClassProperty.ts, 5, 1)) +>p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9)) + } + public x = new A().p; // should also be ok +>x : Symbol(C.x, Decl(scopeCheckClassProperty.ts, 3, 3)) +>new A().p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9)) +>A : Symbol(A, Decl(scopeCheckClassProperty.ts, 5, 1)) +>p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9)) +} +class A { +>A : Symbol(A, Decl(scopeCheckClassProperty.ts, 5, 1)) + + public p = ''; +>p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9)) +} + diff --git a/tests/baselines/reference/scopeCheckClassProperty.types b/tests/baselines/reference/scopeCheckClassProperty.types new file mode 100644 index 0000000000..188d1308a1 --- /dev/null +++ b/tests/baselines/reference/scopeCheckClassProperty.types @@ -0,0 +1,26 @@ +=== tests/cases/compiler/scopeCheckClassProperty.ts === +class C { +>C : C + + constructor() { + new A().p; // ok +>new A().p : string +>new A() : A +>A : typeof A +>p : string + } + public x = new A().p; // should also be ok +>x : string +>new A().p : string +>new A() : A +>A : typeof A +>p : string +} +class A { +>A : A + + public p = ''; +>p : string +>'' : "" +} + diff --git a/tests/cases/compiler/scopeCheckClassProperty.ts b/tests/cases/compiler/scopeCheckClassProperty.ts new file mode 100644 index 0000000000..ef961a560f --- /dev/null +++ b/tests/cases/compiler/scopeCheckClassProperty.ts @@ -0,0 +1,9 @@ +class C { + constructor() { + new A().p; // ok + } + public x = new A().p; // should also be ok +} +class A { + public p = ''; +}