diff --git a/tests/baselines/reference/aliasInaccessibleModule.types b/tests/baselines/reference/aliasInaccessibleModule.types
deleted file mode 100644
index 482e3f667a..0000000000
--- a/tests/baselines/reference/aliasInaccessibleModule.types
+++ /dev/null
@@ -1,11 +0,0 @@
-=== tests/cases/compiler/aliasInaccessibleModule.ts ===
-module M {
->M : typeof M
-
- module N {
->N : N
- }
- export import X = N;
->X : X
->N : N
-}
diff --git a/tests/baselines/reference/aliasInaccessibleModule2.types b/tests/baselines/reference/aliasInaccessibleModule2.types
deleted file mode 100644
index 1ad25ae0cf..0000000000
--- a/tests/baselines/reference/aliasInaccessibleModule2.types
+++ /dev/null
@@ -1,20 +0,0 @@
-=== tests/cases/compiler/aliasInaccessibleModule2.ts ===
-module M {
->M : typeof M
-
- module N {
->N : typeof N
-
- class C {
->C : C
- }
-
- }
- import R = N;
->R : typeof N
->N : typeof N
-
- export import X = R;
->X : typeof N
->R : typeof N
-}
diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types
new file mode 100644
index 0000000000..8dc3aadeda
--- /dev/null
+++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types
@@ -0,0 +1,60 @@
+=== tests/cases/compiler/aliasUsage1_main.ts ===
+import Backbone = require("aliasUsage1_backbone");
+>Backbone : typeof "tests/cases/compiler/aliasUsage1_backbone"
+
+import moduleA = require("aliasUsage1_moduleA");
+>moduleA : typeof "tests/cases/compiler/aliasUsage1_moduleA"
+
+interface IHasVisualizationModel {
+>IHasVisualizationModel : IHasVisualizationModel
+
+ VisualizationModel: typeof Backbone.Model;
+>VisualizationModel : typeof Model
+>Backbone : typeof "tests/cases/compiler/aliasUsage1_backbone"
+>Model : typeof Model
+}
+class C2 {
+>C2 : C2
+
+ x: IHasVisualizationModel;
+>x : IHasVisualizationModel
+>IHasVisualizationModel : IHasVisualizationModel
+
+ get A() {
+>A : IHasVisualizationModel
+
+ return this.x;
+>this.x : IHasVisualizationModel
+>this : C2
+>x : IHasVisualizationModel
+ }
+ set A(x) {
+>A : IHasVisualizationModel
+>x : IHasVisualizationModel
+
+ x = moduleA;
+>x = moduleA : typeof "tests/cases/compiler/aliasUsage1_moduleA"
+>x : IHasVisualizationModel
+>moduleA : typeof "tests/cases/compiler/aliasUsage1_moduleA"
+ }
+}
+=== tests/cases/compiler/aliasUsage1_backbone.ts ===
+export class Model {
+>Model : Model
+
+ public someData: string;
+>someData : string
+}
+
+=== tests/cases/compiler/aliasUsage1_moduleA.ts ===
+import Backbone = require("aliasUsage1_backbone");
+>Backbone : typeof "tests/cases/compiler/aliasUsage1_backbone"
+
+export class VisualizationModel extends Backbone.Model {
+>VisualizationModel : VisualizationModel
+>Backbone : Backbone
+>Model : Model
+
+ // interesting stuff here
+}
+
diff --git a/tests/baselines/reference/declFileImportChainInExportAssignment.types b/tests/baselines/reference/declFileImportChainInExportAssignment.types
new file mode 100644
index 0000000000..267ea6b129
--- /dev/null
+++ b/tests/baselines/reference/declFileImportChainInExportAssignment.types
@@ -0,0 +1,24 @@
+=== tests/cases/compiler/declFileImportChainInExportAssignment.ts ===
+module m {
+>m : typeof m
+
+ export module c {
+>c : typeof c
+
+ export class c {
+>c : c
+ }
+ }
+}
+import a = m.c;
+>a : typeof c
+>m : typeof c
+>c : typeof c
+
+import b = a;
+>b : typeof c
+>a : typeof c
+
+export = b;
+>b : typeof c
+
diff --git a/tests/baselines/reference/declInput-2.types b/tests/baselines/reference/declInput-2.types
deleted file mode 100644
index 98c5686bbe..0000000000
--- a/tests/baselines/reference/declInput-2.types
+++ /dev/null
@@ -1,74 +0,0 @@
-=== tests/cases/compiler/declInput-2.ts ===
-module M {
->M : typeof M
-
- class C { }
->C : C
-
- export class E {}
->E : E
-
- export interface I1 {}
->I1 : I1
-
- interface I2 {}
->I2 : I2
-
- export class D {
->D : D
-
- private c: C; // don't generate
->c : C
->C : C
-
- public m1: number;
->m1 : number
-
- public m2: string;
->m2 : string
-
- public m22: C; // don't generate
->m22 : C
->C : C
-
- public m23: E;
->m23 : E
->E : E
-
- public m24: I1;
->m24 : I1
->I1 : I1
-
- public m25: I2; // don't generate
->m25 : I2
->I2 : I2
-
- public m232(): E { return null;}
->m232 : () => E
->E : E
-
- public m242(): I1 { return null; }
->m242 : () => I1
->I1 : I1
-
- public m252(): I2 { return null; } // don't generate
->m252 : () => I2
->I2 : I2
-
- public m26(i:I1) {}
->m26 : (i: I1) => void
->i : I1
->I1 : I1
-
- public m262(i:I2) {}
->m262 : (i: I2) => void
->i : I2
->I2 : I2
-
- public m3():C { return new C(); }
->m3 : () => C
->C : C
->new C() : C
->C : typeof C
- }
-}
diff --git a/tests/baselines/reference/declarationEmit_nameConflicts.types b/tests/baselines/reference/declarationEmit_nameConflicts.types
index 07c39f34c9..e6ae616039 100644
--- a/tests/baselines/reference/declarationEmit_nameConflicts.types
+++ b/tests/baselines/reference/declarationEmit_nameConflicts.types
@@ -65,7 +65,6 @@ export module M.P {
>P : () => void
>f : () => void
- // Bug 887180: Invalid .d.ts when an aliased entity is referenced, and a different entity is closer in scope
export var a = M.a; // emitted incorrectly as typeof f
>a : () => void
>M.a : () => void
diff --git a/tests/baselines/reference/declarationEmit_nameConflicts2.types b/tests/baselines/reference/declarationEmit_nameConflicts2.types
index e73c0cea4c..d1422468dd 100644
--- a/tests/baselines/reference/declarationEmit_nameConflicts2.types
+++ b/tests/baselines/reference/declarationEmit_nameConflicts2.types
@@ -26,7 +26,6 @@ module X.Y.base.Z {
>base : typeof base
>Z : typeof Z
- // Bug 887180
export var f = X.Y.base.f; // Should be base.f
>f : () => void
>X.Y.base.f : () => void
diff --git a/tests/baselines/reference/declarationEmit_nameConflicts3.types b/tests/baselines/reference/declarationEmit_nameConflicts3.types
index 477a7f2c2c..f474b19288 100644
--- a/tests/baselines/reference/declarationEmit_nameConflicts3.types
+++ b/tests/baselines/reference/declarationEmit_nameConflicts3.types
@@ -45,7 +45,6 @@ module M.P {
f
>f : D
}
- // Bug 887180
export var v: M.D; // ok
>v : D
>M : M
diff --git a/tests/baselines/reference/declarationEmit_nameConflictsWithAlias.types b/tests/baselines/reference/declarationEmit_nameConflictsWithAlias.types
index 2985bb7171..bd905943f4 100644
--- a/tests/baselines/reference/declarationEmit_nameConflictsWithAlias.types
+++ b/tests/baselines/reference/declarationEmit_nameConflictsWithAlias.types
@@ -1,5 +1,4 @@
=== tests/cases/compiler/declarationEmit_nameConflictsWithAlias.ts ===
-// Bug 887180
export module C { export interface I { } }
>C : C
>I : I
diff --git a/tests/baselines/reference/functionExpressionReturningItself.types b/tests/baselines/reference/functionExpressionReturningItself.types
index fb76852369..409f4adea2 100644
--- a/tests/baselines/reference/functionExpressionReturningItself.types
+++ b/tests/baselines/reference/functionExpressionReturningItself.types
@@ -1,7 +1,7 @@
=== tests/cases/compiler/functionExpressionReturningItself.ts ===
var x = function somefn() { return somefn; };
->x : () => typeof somefn
->function somefn() { return somefn; } : () => typeof somefn
->somefn : () => typeof somefn
->somefn : () => typeof somefn
+>x : () => any
+>function somefn() { return somefn; } : () => any
+>somefn : () => any
+>somefn : () => any
diff --git a/tests/baselines/reference/functionImplementations.types b/tests/baselines/reference/functionImplementations.types
index 63be65e841..b9c100e49b 100644
--- a/tests/baselines/reference/functionImplementations.types
+++ b/tests/baselines/reference/functionImplementations.types
@@ -10,11 +10,11 @@ var a: any = function f() {
>a : any
>function f() {
return f;
-} : () => typeof f
->f : () => typeof f
+} : () => any
+>f : () => any
return f;
->f : () => typeof f
+>f : () => any
};
var a: any = function f() {
@@ -36,15 +36,15 @@ var a: any = function f() {
>function f() {
var x = f;
return x;
-} : () => typeof f
->f : () => typeof f
+} : () => any
+>f : () => any
var x = f;
->x : () => typeof f
->f : () => typeof f
+>x : () => any
+>f : () => any
return x;
->x : () => typeof f
+>x : () => any
};
diff --git a/tests/baselines/reference/importDecl.types b/tests/baselines/reference/importDecl.types
new file mode 100644
index 0000000000..e6725e8776
--- /dev/null
+++ b/tests/baselines/reference/importDecl.types
@@ -0,0 +1,228 @@
+=== tests/cases/compiler/importDecl_1.ts ===
+///
+///
+///
+///
+///
+import m4 = require("importDecl_require"); // Emit used
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+
+export var x4 = m4.x;
+>x4 : d
+>m4.x : d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>x : d
+
+export var d4 = m4.d;
+>d4 : typeof d
+>m4.d : typeof d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>d : typeof d
+
+export var f4 = m4.foo();
+>f4 : d
+>m4.foo() : d
+>m4.foo : () => d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>foo : () => d
+
+export module m1 {
+>m1 : typeof m1
+
+ export var x2 = m4.x;
+>x2 : d
+>m4.x : d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>x : d
+
+ export var d2 = m4.d;
+>d2 : typeof d
+>m4.d : typeof d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>d : typeof d
+
+ export var f2 = m4.foo();
+>f2 : d
+>m4.foo() : d
+>m4.foo : () => d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>foo : () => d
+
+ var x3 = m4.x;
+>x3 : d
+>m4.x : d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>x : d
+
+ var d3 = m4.d;
+>d3 : typeof d
+>m4.d : typeof d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>d : typeof d
+
+ var f3 = m4.foo();
+>f3 : d
+>m4.foo() : d
+>m4.foo : () => d
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+>foo : () => d
+}
+
+//Emit global only usage
+import glo_m4 = require("importDecl_require1");
+>glo_m4 : typeof "tests/cases/compiler/importDecl_require1"
+
+export var useGlo_m4_d4 = glo_m4.d;
+>useGlo_m4_d4 : typeof d
+>glo_m4.d : typeof d
+>glo_m4 : typeof "tests/cases/compiler/importDecl_require1"
+>d : typeof d
+
+export var useGlo_m4_f4 = glo_m4.foo();
+>useGlo_m4_f4 : d
+>glo_m4.foo() : d
+>glo_m4.foo : () => d
+>glo_m4 : typeof "tests/cases/compiler/importDecl_require1"
+>foo : () => d
+
+//Emit even when used just in function type
+import fncOnly_m4 = require("importDecl_require2");
+>fncOnly_m4 : typeof "tests/cases/compiler/importDecl_require2"
+
+export var useFncOnly_m4_f4 = fncOnly_m4.foo();
+>useFncOnly_m4_f4 : d
+>fncOnly_m4.foo() : d
+>fncOnly_m4.foo : () => d
+>fncOnly_m4 : typeof "tests/cases/compiler/importDecl_require2"
+>foo : () => d
+
+// only used privately no need to emit
+import private_m4 = require("importDecl_require3");
+>private_m4 : typeof "tests/cases/compiler/importDecl_require3"
+
+export module usePrivate_m4_m1 {
+>usePrivate_m4_m1 : typeof usePrivate_m4_m1
+
+ var x3 = private_m4.x;
+>x3 : d
+>private_m4.x : d
+>private_m4 : typeof "tests/cases/compiler/importDecl_require3"
+>x : d
+
+ var d3 = private_m4.d;
+>d3 : typeof d
+>private_m4.d : typeof d
+>private_m4 : typeof "tests/cases/compiler/importDecl_require3"
+>d : typeof d
+
+ var f3 = private_m4.foo();
+>f3 : d
+>private_m4.foo() : d
+>private_m4.foo : () => d
+>private_m4 : typeof "tests/cases/compiler/importDecl_require3"
+>foo : () => d
+}
+
+// Do not emit unused import
+import m5 = require("importDecl_require4");
+>m5 : typeof "tests/cases/compiler/importDecl_require4"
+
+export var d = m5.foo2();
+>d : d
+>m5.foo2() : d
+>m5.foo2 : () => d
+>m5 : typeof "tests/cases/compiler/importDecl_require4"
+>foo2 : () => d
+
+// Do not emit multiple used import statements
+import multiImport_m4 = require("importDecl_require"); // Emit used
+>multiImport_m4 : typeof "tests/cases/compiler/importDecl_require"
+
+export var useMultiImport_m4_x4 = multiImport_m4.x;
+>useMultiImport_m4_x4 : d
+>multiImport_m4.x : d
+>multiImport_m4 : typeof "tests/cases/compiler/importDecl_require"
+>x : d
+
+export var useMultiImport_m4_d4 = multiImport_m4.d;
+>useMultiImport_m4_d4 : typeof d
+>multiImport_m4.d : typeof d
+>multiImport_m4 : typeof "tests/cases/compiler/importDecl_require"
+>d : typeof d
+
+export var useMultiImport_m4_f4 = multiImport_m4.foo();
+>useMultiImport_m4_f4 : d
+>multiImport_m4.foo() : d
+>multiImport_m4.foo : () => d
+>multiImport_m4 : typeof "tests/cases/compiler/importDecl_require"
+>foo : () => d
+
+=== tests/cases/compiler/importDecl_require.ts ===
+export class d {
+>d : d
+
+ foo: string;
+>foo : string
+}
+export var x: d;
+>x : d
+>d : d
+
+export function foo(): d { return null; }
+>foo : () => d
+>d : d
+
+=== tests/cases/compiler/importDecl_require1.ts ===
+export class d {
+>d : d
+
+ bar: string;
+>bar : string
+}
+var x: d;
+>x : d
+>d : d
+
+export function foo(): d { return null; }
+>foo : () => d
+>d : d
+
+=== tests/cases/compiler/importDecl_require2.ts ===
+export class d {
+>d : d
+
+ baz: string;
+>baz : string
+}
+export var x: d;
+>x : d
+>d : d
+
+export function foo(): d { return null; }
+>foo : () => d
+>d : d
+
+=== tests/cases/compiler/importDecl_require3.ts ===
+export class d {
+>d : d
+
+ bing: string;
+>bing : string
+}
+export var x: d;
+>x : d
+>d : d
+
+export function foo(): d { return null; }
+>foo : () => d
+>d : d
+
+=== tests/cases/compiler/importDecl_require4.ts ===
+import m4 = require("importDecl_require");
+>m4 : typeof "tests/cases/compiler/importDecl_require"
+
+export function foo2(): m4.d { return null; }
+>foo2 : () => d
+>m4 : m4
+>d : d
+
diff --git a/tests/baselines/reference/multiImportExport.types b/tests/baselines/reference/multiImportExport.types
new file mode 100644
index 0000000000..1504fda69d
--- /dev/null
+++ b/tests/baselines/reference/multiImportExport.types
@@ -0,0 +1,51 @@
+=== tests/cases/compiler/consumer.ts ===
+import Drawing = require('./Drawing');
+>Drawing : typeof "tests/cases/compiler/Drawing"
+
+var addr = new Drawing.Math.Adder();
+>addr : Adder
+>new Drawing.Math.Adder() : Adder
+>Drawing.Math.Adder : typeof Adder
+>Drawing.Math : { Adder: typeof Adder; }
+>Drawing : typeof "tests/cases/compiler/Drawing"
+>Math : { Adder: typeof Adder; }
+>Adder : typeof Adder
+
+=== tests/cases/compiler/Drawing.ts ===
+export import Math = require('Math/Math')
+>Math : { Adder: typeof Adder; }
+
+=== tests/cases/compiler/Math/Math.ts ===
+import Adder = require('Math/Adder');
+>Adder : typeof Adder
+
+var Math = {
+>Math : { Adder: typeof Adder; }
+>{
+ Adder:Adder
+} : { Adder: typeof Adder; }
+
+ Adder:Adder
+>Adder : typeof Adder
+>Adder : Adder
+
+};
+
+export = Math
+>Math : { Adder: typeof Adder; }
+
+=== tests/cases/compiler/Math/Adder.ts ===
+class Adder {
+>Adder : Adder
+
+ add(a: number, b: number) {
+>add : (a: number, b: number) => void
+>a : number
+>b : number
+
+ }
+}
+
+export = Adder;
+>Adder : Adder
+
diff --git a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.types b/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.types
deleted file mode 100644
index c028c32824..0000000000
--- a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleError.types
+++ /dev/null
@@ -1,17 +0,0 @@
-=== tests/cases/compiler/privacyCheckTypeOfInvisibleModuleError.ts ===
-module Outer {
->Outer : typeof Outer
-
- module Inner {
->Inner : typeof Inner
-
- export var m: typeof Inner;
->m : typeof Inner
->Inner : typeof Inner
- }
-
- export var f: typeof Inner;
->f : typeof Inner
->Inner : typeof Inner
-}
-
diff --git a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.types b/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.types
deleted file mode 100644
index fe5f6b0561..0000000000
--- a/tests/baselines/reference/privacyCheckTypeOfInvisibleModuleNoError.types
+++ /dev/null
@@ -1,16 +0,0 @@
-=== tests/cases/compiler/privacyCheckTypeOfInvisibleModuleNoError.ts ===
-module Outer {
->Outer : typeof Outer
-
- module Inner {
->Inner : typeof Inner
-
- export var m: number;
->m : number
- }
-
- export var f: typeof Inner; // Since we dont unwind inner any more, it is error here
->f : typeof Inner
->Inner : typeof Inner
-}
-
diff --git a/tests/baselines/reference/privacyGetter.types b/tests/baselines/reference/privacyGetter.types
new file mode 100644
index 0000000000..160d72a027
--- /dev/null
+++ b/tests/baselines/reference/privacyGetter.types
@@ -0,0 +1,410 @@
+=== tests/cases/compiler/privacyGetter.ts ===
+export module m1 {
+>m1 : typeof m1
+
+ export class C1_public {
+>C1_public : C1_public
+
+ private f1() {
+>f1 : () => void
+ }
+ }
+
+ class C2_private {
+>C2_private : C2_private
+ }
+
+ export class C3_public {
+>C3_public : C3_public
+
+ private get p1_private() {
+>p1_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C1_public) {
+>p1_private : C1_public
+>m1_c3_p1_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p2_private() {
+>p2_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C1_public) {
+>p2_private : C1_public
+>m1_c3_p2_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p3_private() {
+>p3_private : C2_private
+
+ return new C2_private();
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ private set p3_private(m1_c3_p3_arg: C2_private) {
+>p3_private : C2_private
+>m1_c3_p3_arg : C2_private
+>C2_private : C2_private
+ }
+
+ public get p4_public(): C2_private { // error
+>p4_public : C2_private
+>C2_private : C2_private
+
+ return new C2_private(); //error
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ public set p4_public(m1_c3_p4_arg: C2_private) { // error
+>p4_public : C2_private
+>m1_c3_p4_arg : C2_private
+>C2_private : C2_private
+ }
+ }
+
+ class C4_private {
+>C4_private : C4_private
+
+ private get p1_private() {
+>p1_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C1_public) {
+>p1_private : C1_public
+>m1_c3_p1_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p2_private() {
+>p2_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C1_public) {
+>p2_private : C1_public
+>m1_c3_p2_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p3_private() {
+>p3_private : C2_private
+
+ return new C2_private();
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ private set p3_private(m1_c3_p3_arg: C2_private) {
+>p3_private : C2_private
+>m1_c3_p3_arg : C2_private
+>C2_private : C2_private
+ }
+
+ public get p4_public(): C2_private {
+>p4_public : C2_private
+>C2_private : C2_private
+
+ return new C2_private();
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ public set p4_public(m1_c3_p4_arg: C2_private) {
+>p4_public : C2_private
+>m1_c3_p4_arg : C2_private
+>C2_private : C2_private
+ }
+ }
+}
+
+module m2 {
+>m2 : typeof m2
+
+ export class m2_C1_public {
+>m2_C1_public : m2_C1_public
+
+ private f1() {
+>f1 : () => void
+ }
+ }
+
+ class m2_C2_private {
+>m2_C2_private : m2_C2_private
+ }
+
+ export class m2_C3_public {
+>m2_C3_public : m2_C3_public
+
+ private get p1_private() {
+>p1_private : m2_C1_public
+
+ return new m2_C1_public();
+>new m2_C1_public() : m2_C1_public
+>m2_C1_public : typeof m2_C1_public
+ }
+
+ private set p1_private(m2_c3_p1_arg: m2_C1_public) {
+>p1_private : m2_C1_public
+>m2_c3_p1_arg : m2_C1_public
+>m2_C1_public : m2_C1_public
+ }
+
+ private get p2_private() {
+>p2_private : m2_C1_public
+
+ return new m2_C1_public();
+>new m2_C1_public() : m2_C1_public
+>m2_C1_public : typeof m2_C1_public
+ }
+
+ private set p2_private(m2_c3_p2_arg: m2_C1_public) {
+>p2_private : m2_C1_public
+>m2_c3_p2_arg : m2_C1_public
+>m2_C1_public : m2_C1_public
+ }
+
+ private get p3_private() {
+>p3_private : m2_C2_private
+
+ return new m2_C2_private();
+>new m2_C2_private() : m2_C2_private
+>m2_C2_private : typeof m2_C2_private
+ }
+
+ private set p3_private(m2_c3_p3_arg: m2_C2_private) {
+>p3_private : m2_C2_private
+>m2_c3_p3_arg : m2_C2_private
+>m2_C2_private : m2_C2_private
+ }
+
+ public get p4_public(): m2_C2_private {
+>p4_public : m2_C2_private
+>m2_C2_private : m2_C2_private
+
+ return new m2_C2_private();
+>new m2_C2_private() : m2_C2_private
+>m2_C2_private : typeof m2_C2_private
+ }
+
+ public set p4_public(m2_c3_p4_arg: m2_C2_private) {
+>p4_public : m2_C2_private
+>m2_c3_p4_arg : m2_C2_private
+>m2_C2_private : m2_C2_private
+ }
+ }
+
+ class m2_C4_private {
+>m2_C4_private : m2_C4_private
+
+ private get p1_private() {
+>p1_private : m2_C1_public
+
+ return new m2_C1_public();
+>new m2_C1_public() : m2_C1_public
+>m2_C1_public : typeof m2_C1_public
+ }
+
+ private set p1_private(m2_c3_p1_arg: m2_C1_public) {
+>p1_private : m2_C1_public
+>m2_c3_p1_arg : m2_C1_public
+>m2_C1_public : m2_C1_public
+ }
+
+ private get p2_private() {
+>p2_private : m2_C1_public
+
+ return new m2_C1_public();
+>new m2_C1_public() : m2_C1_public
+>m2_C1_public : typeof m2_C1_public
+ }
+
+ private set p2_private(m2_c3_p2_arg: m2_C1_public) {
+>p2_private : m2_C1_public
+>m2_c3_p2_arg : m2_C1_public
+>m2_C1_public : m2_C1_public
+ }
+
+ private get p3_private() {
+>p3_private : m2_C2_private
+
+ return new m2_C2_private();
+>new m2_C2_private() : m2_C2_private
+>m2_C2_private : typeof m2_C2_private
+ }
+
+ private set p3_private(m2_c3_p3_arg: m2_C2_private) {
+>p3_private : m2_C2_private
+>m2_c3_p3_arg : m2_C2_private
+>m2_C2_private : m2_C2_private
+ }
+
+ public get p4_public(): m2_C2_private {
+>p4_public : m2_C2_private
+>m2_C2_private : m2_C2_private
+
+ return new m2_C2_private();
+>new m2_C2_private() : m2_C2_private
+>m2_C2_private : typeof m2_C2_private
+ }
+
+ public set p4_public(m2_c3_p4_arg: m2_C2_private) {
+>p4_public : m2_C2_private
+>m2_c3_p4_arg : m2_C2_private
+>m2_C2_private : m2_C2_private
+ }
+ }
+}
+
+class C5_private {
+>C5_private : C5_private
+
+ private f() {
+>f : () => void
+ }
+}
+
+export class C6_public {
+>C6_public : C6_public
+}
+
+export class C7_public {
+>C7_public : C7_public
+
+ private get p1_private() {
+>p1_private : C6_public
+
+ return new C6_public();
+>new C6_public() : C6_public
+>C6_public : typeof C6_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C6_public) {
+>p1_private : C6_public
+>m1_c3_p1_arg : C6_public
+>C6_public : C6_public
+ }
+
+ private get p2_private() {
+>p2_private : C6_public
+
+ return new C6_public();
+>new C6_public() : C6_public
+>C6_public : typeof C6_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C6_public) {
+>p2_private : C6_public
+>m1_c3_p2_arg : C6_public
+>C6_public : C6_public
+ }
+
+ private get p3_private() {
+>p3_private : C5_private
+
+ return new C5_private();
+>new C5_private() : C5_private
+>C5_private : typeof C5_private
+ }
+
+ private set p3_private(m1_c3_p3_arg: C5_private) {
+>p3_private : C5_private
+>m1_c3_p3_arg : C5_private
+>C5_private : C5_private
+ }
+
+ public get p4_public(): C5_private { // error
+>p4_public : C5_private
+>C5_private : C5_private
+
+ return new C5_private(); //error
+>new C5_private() : C5_private
+>C5_private : typeof C5_private
+ }
+
+ public set p4_public(m1_c3_p4_arg: C5_private) { // error
+>p4_public : C5_private
+>m1_c3_p4_arg : C5_private
+>C5_private : C5_private
+ }
+}
+
+class C8_private {
+>C8_private : C8_private
+
+ private get p1_private() {
+>p1_private : C6_public
+
+ return new C6_public();
+>new C6_public() : C6_public
+>C6_public : typeof C6_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C6_public) {
+>p1_private : C6_public
+>m1_c3_p1_arg : C6_public
+>C6_public : C6_public
+ }
+
+ private get p2_private() {
+>p2_private : C6_public
+
+ return new C6_public();
+>new C6_public() : C6_public
+>C6_public : typeof C6_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C6_public) {
+>p2_private : C6_public
+>m1_c3_p2_arg : C6_public
+>C6_public : C6_public
+ }
+
+ private get p3_private() {
+>p3_private : C5_private
+
+ return new C5_private();
+>new C5_private() : C5_private
+>C5_private : typeof C5_private
+ }
+
+ private set p3_private(m1_c3_p3_arg: C5_private) {
+>p3_private : C5_private
+>m1_c3_p3_arg : C5_private
+>C5_private : C5_private
+ }
+
+ public get p4_public(): C5_private {
+>p4_public : C5_private
+>C5_private : C5_private
+
+ return new C5_private();
+>new C5_private() : C5_private
+>C5_private : typeof C5_private
+ }
+
+ public set p4_public(m1_c3_p4_arg: C5_private) {
+>p4_public : C5_private
+>m1_c3_p4_arg : C5_private
+>C5_private : C5_private
+ }
+}
diff --git a/tests/baselines/reference/privacyGloGetter.types b/tests/baselines/reference/privacyGloGetter.types
new file mode 100644
index 0000000000..6dc32ec095
--- /dev/null
+++ b/tests/baselines/reference/privacyGloGetter.types
@@ -0,0 +1,174 @@
+=== tests/cases/compiler/privacyGloGetter.ts ===
+module m1 {
+>m1 : typeof m1
+
+ export class C1_public {
+>C1_public : C1_public
+
+ private f1() {
+>f1 : () => void
+ }
+ }
+
+ class C2_private {
+>C2_private : C2_private
+ }
+
+ export class C3_public {
+>C3_public : C3_public
+
+ private get p1_private() {
+>p1_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C1_public) {
+>p1_private : C1_public
+>m1_c3_p1_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p2_private() {
+>p2_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C1_public) {
+>p2_private : C1_public
+>m1_c3_p2_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p3_private() {
+>p3_private : C2_private
+
+ return new C2_private();
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ private set p3_private(m1_c3_p3_arg: C2_private) {
+>p3_private : C2_private
+>m1_c3_p3_arg : C2_private
+>C2_private : C2_private
+ }
+
+ public get p4_public(): C2_private { // error
+>p4_public : C2_private
+>C2_private : C2_private
+
+ return new C2_private(); //error
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ public set p4_public(m1_c3_p4_arg: C2_private) { // error
+>p4_public : C2_private
+>m1_c3_p4_arg : C2_private
+>C2_private : C2_private
+ }
+ }
+
+ class C4_private {
+>C4_private : C4_private
+
+ private get p1_private() {
+>p1_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C1_public) {
+>p1_private : C1_public
+>m1_c3_p1_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p2_private() {
+>p2_private : C1_public
+
+ return new C1_public();
+>new C1_public() : C1_public
+>C1_public : typeof C1_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C1_public) {
+>p2_private : C1_public
+>m1_c3_p2_arg : C1_public
+>C1_public : C1_public
+ }
+
+ private get p3_private() {
+>p3_private : C2_private
+
+ return new C2_private();
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ private set p3_private(m1_c3_p3_arg: C2_private) {
+>p3_private : C2_private
+>m1_c3_p3_arg : C2_private
+>C2_private : C2_private
+ }
+
+ public get p4_public(): C2_private {
+>p4_public : C2_private
+>C2_private : C2_private
+
+ return new C2_private();
+>new C2_private() : C2_private
+>C2_private : typeof C2_private
+ }
+
+ public set p4_public(m1_c3_p4_arg: C2_private) {
+>p4_public : C2_private
+>m1_c3_p4_arg : C2_private
+>C2_private : C2_private
+ }
+ }
+}
+
+class C6_public {
+>C6_public : C6_public
+}
+
+class C7_public {
+>C7_public : C7_public
+
+ private get p1_private() {
+>p1_private : C6_public
+
+ return new C6_public();
+>new C6_public() : C6_public
+>C6_public : typeof C6_public
+ }
+
+ private set p1_private(m1_c3_p1_arg: C6_public) {
+>p1_private : C6_public
+>m1_c3_p1_arg : C6_public
+>C6_public : C6_public
+ }
+
+ private get p2_private() {
+>p2_private : C6_public
+
+ return new C6_public();
+>new C6_public() : C6_public
+>C6_public : typeof C6_public
+ }
+
+ private set p2_private(m1_c3_p2_arg: C6_public) {
+>p2_private : C6_public
+>m1_c3_p2_arg : C6_public
+>C6_public : C6_public
+ }
+}
diff --git a/tests/baselines/reference/privacyLocalInternalReferenceImportWithExport.types b/tests/baselines/reference/privacyLocalInternalReferenceImportWithExport.types
deleted file mode 100644
index 04f561914c..0000000000
--- a/tests/baselines/reference/privacyLocalInternalReferenceImportWithExport.types
+++ /dev/null
@@ -1,537 +0,0 @@
-=== tests/cases/compiler/privacyLocalInternalReferenceImportWithExport.ts ===
-// private elements
-module m_private {
->m_private : typeof m_private
-
- export class c_private {
->c_private : c_private
- }
- export enum e_private {
->e_private : e_private
-
- Happy,
->Happy : e_private
-
- Grumpy
->Grumpy : e_private
- }
- export function f_private() {
->f_private : () => c_private
-
- return new c_private();
->new c_private() : c_private
->c_private : typeof c_private
- }
- export var v_private = new c_private();
->v_private : c_private
->new c_private() : c_private
->c_private : typeof c_private
-
- export interface i_private {
->i_private : i_private
- }
- export module mi_private {
->mi_private : typeof mi_private
-
- export class c {
->c : c
- }
- }
- export module mu_private {
->mu_private : mu_private
-
- export interface i {
->i : i
- }
- }
-}
-
-// Public elements
-export module m_public {
->m_public : typeof m_public
-
- export class c_public {
->c_public : c_public
- }
- export enum e_public {
->e_public : e_public
-
- Happy,
->Happy : e_public
-
- Grumpy
->Grumpy : e_public
- }
- export function f_public() {
->f_public : () => c_public
-
- return new c_public();
->new c_public() : c_public
->c_public : typeof c_public
- }
- export var v_public = 10;
->v_public : number
-
- export interface i_public {
->i_public : i_public
- }
- export module mi_public {
->mi_public : typeof mi_public
-
- export class c {
->c : c
- }
- }
- export module mu_public {
->mu_public : mu_public
-
- export interface i {
->i : i
- }
- }
-}
-
-export module import_public {
->import_public : typeof import_public
-
- // Privacy errors - importing private elements
- export import im_public_c_private = m_private.c_private;
->im_public_c_private : typeof c_private
->m_private : c_private
->c_private : c_private
-
- export import im_public_e_private = m_private.e_private;
->im_public_e_private : typeof e_private
->m_private : e_private
->e_private : e_private
-
- export import im_public_f_private = m_private.f_private;
->im_public_f_private : () => c_private
->m_private : () => c_private
->f_private : () => c_private
-
- export import im_public_v_private = m_private.v_private;
->im_public_v_private : c_private
->m_private : c_private
->v_private : c_private
-
- export import im_public_i_private = m_private.i_private;
->im_public_i_private : im_public_i_private
->m_private : i_private
->i_private : i_private
-
- export import im_public_mi_private = m_private.mi_private;
->im_public_mi_private : typeof mi_private
->m_private : typeof mi_private
->mi_private : typeof mi_private
-
- export import im_public_mu_private = m_private.mu_private;
->im_public_mu_private : im_public_mu_private
->m_private : m_private
->mu_private : mu_private
-
- // Usage of privacy error imports
- var privateUse_im_public_c_private = new im_public_c_private();
->privateUse_im_public_c_private : c_private
->new im_public_c_private() : c_private
->im_public_c_private : typeof c_private
-
- export var publicUse_im_public_c_private = new im_public_c_private();
->publicUse_im_public_c_private : c_private
->new im_public_c_private() : c_private
->im_public_c_private : typeof c_private
-
- var privateUse_im_public_e_private = im_public_e_private.Happy;
->privateUse_im_public_e_private : e_private
->im_public_e_private.Happy : e_private
->im_public_e_private : typeof e_private
->Happy : e_private
-
- export var publicUse_im_public_e_private = im_public_e_private.Grumpy;
->publicUse_im_public_e_private : e_private
->im_public_e_private.Grumpy : e_private
->im_public_e_private : typeof e_private
->Grumpy : e_private
-
- var privateUse_im_public_f_private = im_public_f_private();
->privateUse_im_public_f_private : c_private
->im_public_f_private() : c_private
->im_public_f_private : () => c_private
-
- export var publicUse_im_public_f_private = im_public_f_private();
->publicUse_im_public_f_private : c_private
->im_public_f_private() : c_private
->im_public_f_private : () => c_private
-
- var privateUse_im_public_v_private = im_public_v_private;
->privateUse_im_public_v_private : c_private
->im_public_v_private : c_private
-
- export var publicUse_im_public_v_private = im_public_v_private;
->publicUse_im_public_v_private : c_private
->im_public_v_private : c_private
-
- var privateUse_im_public_i_private: im_public_i_private;
->privateUse_im_public_i_private : i_private
->im_public_i_private : im_public_i_private
-
- export var publicUse_im_public_i_private: im_public_i_private;
->publicUse_im_public_i_private : i_private
->im_public_i_private : im_public_i_private
-
- var privateUse_im_public_mi_private = new im_public_mi_private.c();
->privateUse_im_public_mi_private : c
->new im_public_mi_private.c() : c
->im_public_mi_private.c : typeof c
->im_public_mi_private : typeof mi_private
->c : typeof c
-
- export var publicUse_im_public_mi_private = new im_public_mi_private.c();
->publicUse_im_public_mi_private : c
->new im_public_mi_private.c() : c
->im_public_mi_private.c : typeof c
->im_public_mi_private : typeof mi_private
->c : typeof c
-
- var privateUse_im_public_mu_private: im_public_mu_private.i;
->privateUse_im_public_mu_private : i
->im_public_mu_private : im_public_mu_private
->i : i
-
- export var publicUse_im_public_mu_private: im_public_mu_private.i;
->publicUse_im_public_mu_private : i
->im_public_mu_private : im_public_mu_private
->i : i
-
-
- // No Privacy errors - importing public elements
- export import im_public_c_public = m_public.c_public;
->im_public_c_public : typeof c_public
->m_public : c_public
->c_public : c_public
-
- export import im_public_e_public = m_public.e_public;
->im_public_e_public : typeof e_public
->m_public : e_public
->e_public : e_public
-
- export import im_public_f_public = m_public.f_public;
->im_public_f_public : () => c_public
->m_public : () => c_public
->f_public : () => c_public
-
- export import im_public_v_public = m_public.v_public;
->im_public_v_public : number
->m_public : number
->v_public : number
-
- export import im_public_i_public = m_public.i_public;
->im_public_i_public : im_public_i_public
->m_public : i_public
->i_public : i_public
-
- export import im_public_mi_public = m_public.mi_public;
->im_public_mi_public : typeof mi_public
->m_public : typeof mi_public
->mi_public : typeof mi_public
-
- export import im_public_mu_public = m_public.mu_public;
->im_public_mu_public : im_public_mu_public
->m_public : m_public
->mu_public : mu_public
-
- // Usage of above
- var privateUse_im_public_c_public = new im_public_c_public();
->privateUse_im_public_c_public : c_public
->new im_public_c_public() : c_public
->im_public_c_public : typeof c_public
-
- export var publicUse_im_public_c_public = new im_public_c_public();
->publicUse_im_public_c_public : c_public
->new im_public_c_public() : c_public
->im_public_c_public : typeof c_public
-
- var privateUse_im_public_e_public = im_public_e_public.Happy;
->privateUse_im_public_e_public : e_public
->im_public_e_public.Happy : e_public
->im_public_e_public : typeof e_public
->Happy : e_public
-
- export var publicUse_im_public_e_public = im_public_e_public.Grumpy;
->publicUse_im_public_e_public : e_public
->im_public_e_public.Grumpy : e_public
->im_public_e_public : typeof e_public
->Grumpy : e_public
-
- var privateUse_im_public_f_public = im_public_f_public();
->privateUse_im_public_f_public : c_public
->im_public_f_public() : c_public
->im_public_f_public : () => c_public
-
- export var publicUse_im_public_f_public = im_public_f_public();
->publicUse_im_public_f_public : c_public
->im_public_f_public() : c_public
->im_public_f_public : () => c_public
-
- var privateUse_im_public_v_public = im_public_v_public;
->privateUse_im_public_v_public : number
->im_public_v_public : number
-
- export var publicUse_im_public_v_public = im_public_v_public;
->publicUse_im_public_v_public : number
->im_public_v_public : number
-
- var privateUse_im_public_i_public: im_public_i_public;
->privateUse_im_public_i_public : i_public
->im_public_i_public : im_public_i_public
-
- export var publicUse_im_public_i_public: im_public_i_public;
->publicUse_im_public_i_public : i_public
->im_public_i_public : im_public_i_public
-
- var privateUse_im_public_mi_public = new im_public_mi_public.c();
->privateUse_im_public_mi_public : c
->new im_public_mi_public.c() : c
->im_public_mi_public.c : typeof c
->im_public_mi_public : typeof mi_public
->c : typeof c
-
- export var publicUse_im_public_mi_public = new im_public_mi_public.c();
->publicUse_im_public_mi_public : c
->new im_public_mi_public.c() : c
->im_public_mi_public.c : typeof c
->im_public_mi_public : typeof mi_public
->c : typeof c
-
- var privateUse_im_public_mu_public: im_public_mu_public.i;
->privateUse_im_public_mu_public : i
->im_public_mu_public : im_public_mu_public
->i : i
-
- export var publicUse_im_public_mu_public: im_public_mu_public.i;
->publicUse_im_public_mu_public : i
->im_public_mu_public : im_public_mu_public
->i : i
-}
-
-module import_private {
->import_private : typeof import_private
-
- // No Privacy errors - importing private elements
- export import im_private_c_private = m_private.c_private;
->im_private_c_private : typeof c_private
->m_private : c_private
->c_private : c_private
-
- export import im_private_e_private = m_private.e_private;
->im_private_e_private : typeof e_private
->m_private : e_private
->e_private : e_private
-
- export import im_private_f_private = m_private.f_private;
->im_private_f_private : () => c_private
->m_private : () => c_private
->f_private : () => c_private
-
- export import im_private_v_private = m_private.v_private;
->im_private_v_private : c_private
->m_private : c_private
->v_private : c_private
-
- export import im_private_i_private = m_private.i_private;
->im_private_i_private : im_private_i_private
->m_private : i_private
->i_private : i_private
-
- export import im_private_mi_private = m_private.mi_private;
->im_private_mi_private : typeof mi_private
->m_private : typeof mi_private
->mi_private : typeof mi_private
-
- export import im_private_mu_private = m_private.mu_private;
->im_private_mu_private : im_private_mu_private
->m_private : m_private
->mu_private : mu_private
-
- // Usage of above decls
- var privateUse_im_private_c_private = new im_private_c_private();
->privateUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
- export var publicUse_im_private_c_private = new im_private_c_private();
->publicUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
- var privateUse_im_private_e_private = im_private_e_private.Happy;
->privateUse_im_private_e_private : e_private
->im_private_e_private.Happy : e_private
->im_private_e_private : typeof e_private
->Happy : e_private
-
- export var publicUse_im_private_e_private = im_private_e_private.Grumpy;
->publicUse_im_private_e_private : e_private
->im_private_e_private.Grumpy : e_private
->im_private_e_private : typeof e_private
->Grumpy : e_private
-
- var privateUse_im_private_f_private = im_private_f_private();
->privateUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
- export var publicUse_im_private_f_private = im_private_f_private();
->publicUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
- var privateUse_im_private_v_private = im_private_v_private;
->privateUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
- export var publicUse_im_private_v_private = im_private_v_private;
->publicUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
- var privateUse_im_private_i_private: im_private_i_private;
->privateUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
- export var publicUse_im_private_i_private: im_private_i_private;
->publicUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
- var privateUse_im_private_mi_private = new im_private_mi_private.c();
->privateUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
- export var publicUse_im_private_mi_private = new im_private_mi_private.c();
->publicUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
- var privateUse_im_private_mu_private: im_private_mu_private.i;
->privateUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
- export var publicUse_im_private_mu_private: im_private_mu_private.i;
->publicUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
- // No privacy Error - importing public elements
- export import im_private_c_public = m_public.c_public;
->im_private_c_public : typeof c_public
->m_public : c_public
->c_public : c_public
-
- export import im_private_e_public = m_public.e_public;
->im_private_e_public : typeof e_public
->m_public : e_public
->e_public : e_public
-
- export import im_private_f_public = m_public.f_public;
->im_private_f_public : () => c_public
->m_public : () => c_public
->f_public : () => c_public
-
- export import im_private_v_public = m_public.v_public;
->im_private_v_public : number
->m_public : number
->v_public : number
-
- export import im_private_i_public = m_public.i_public;
->im_private_i_public : im_private_i_public
->m_public : i_public
->i_public : i_public
-
- export import im_private_mi_public = m_public.mi_public;
->im_private_mi_public : typeof mi_public
->m_public : typeof mi_public
->mi_public : typeof mi_public
-
- export import im_private_mu_public = m_public.mu_public;
->im_private_mu_public : im_private_mu_public
->m_public : m_public
->mu_public : mu_public
-
- // Usage of no privacy error imports
- var privateUse_im_private_c_public = new im_private_c_public();
->privateUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
- export var publicUse_im_private_c_public = new im_private_c_public();
->publicUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
- var privateUse_im_private_e_public = im_private_e_public.Happy;
->privateUse_im_private_e_public : e_public
->im_private_e_public.Happy : e_public
->im_private_e_public : typeof e_public
->Happy : e_public
-
- export var publicUse_im_private_e_public = im_private_e_public.Grumpy;
->publicUse_im_private_e_public : e_public
->im_private_e_public.Grumpy : e_public
->im_private_e_public : typeof e_public
->Grumpy : e_public
-
- var privateUse_im_private_f_public = im_private_f_public();
->privateUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
- export var publicUse_im_private_f_public = im_private_f_public();
->publicUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
- var privateUse_im_private_v_public = im_private_v_public;
->privateUse_im_private_v_public : number
->im_private_v_public : number
-
- export var publicUse_im_private_v_public = im_private_v_public;
->publicUse_im_private_v_public : number
->im_private_v_public : number
-
- var privateUse_im_private_i_public: im_private_i_public;
->privateUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
- export var publicUse_im_private_i_public: im_private_i_public;
->publicUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
- var privateUse_im_private_mi_public = new im_private_mi_public.c();
->privateUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
- export var publicUse_im_private_mi_public = new im_private_mi_public.c();
->publicUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
- var privateUse_im_private_mu_public: im_private_mu_public.i;
->privateUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-
- export var publicUse_im_private_mu_public: im_private_mu_public.i;
->publicUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-}
diff --git a/tests/baselines/reference/privacyLocalInternalReferenceImportWithoutExport.types b/tests/baselines/reference/privacyLocalInternalReferenceImportWithoutExport.types
deleted file mode 100644
index 3951ac5154..0000000000
--- a/tests/baselines/reference/privacyLocalInternalReferenceImportWithoutExport.types
+++ /dev/null
@@ -1,537 +0,0 @@
-=== tests/cases/compiler/privacyLocalInternalReferenceImportWithoutExport.ts ===
-// private elements
-module m_private {
->m_private : typeof m_private
-
- export class c_private {
->c_private : c_private
- }
- export enum e_private {
->e_private : e_private
-
- Happy,
->Happy : e_private
-
- Grumpy
->Grumpy : e_private
- }
- export function f_private() {
->f_private : () => c_private
-
- return new c_private();
->new c_private() : c_private
->c_private : typeof c_private
- }
- export var v_private = new c_private();
->v_private : c_private
->new c_private() : c_private
->c_private : typeof c_private
-
- export interface i_private {
->i_private : i_private
- }
- export module mi_private {
->mi_private : typeof mi_private
-
- export class c {
->c : c
- }
- }
- export module mu_private {
->mu_private : mu_private
-
- export interface i {
->i : i
- }
- }
-}
-
-// Public elements
-export module m_public {
->m_public : typeof m_public
-
- export class c_public {
->c_public : c_public
- }
- export enum e_public {
->e_public : e_public
-
- Happy,
->Happy : e_public
-
- Grumpy
->Grumpy : e_public
- }
- export function f_public() {
->f_public : () => c_public
-
- return new c_public();
->new c_public() : c_public
->c_public : typeof c_public
- }
- export var v_public = 10;
->v_public : number
-
- export interface i_public {
->i_public : i_public
- }
- export module mi_public {
->mi_public : typeof mi_public
-
- export class c {
->c : c
- }
- }
- export module mu_public {
->mu_public : mu_public
-
- export interface i {
->i : i
- }
- }
-}
-
-export module import_public {
->import_public : typeof import_public
-
- // No Privacy errors - importing private elements
- import im_private_c_private = m_private.c_private;
->im_private_c_private : typeof c_private
->m_private : c_private
->c_private : c_private
-
- import im_private_e_private = m_private.e_private;
->im_private_e_private : typeof e_private
->m_private : e_private
->e_private : e_private
-
- import im_private_f_private = m_private.f_private;
->im_private_f_private : () => c_private
->m_private : () => c_private
->f_private : () => c_private
-
- import im_private_v_private = m_private.v_private;
->im_private_v_private : c_private
->m_private : c_private
->v_private : c_private
-
- import im_private_i_private = m_private.i_private;
->im_private_i_private : im_private_i_private
->m_private : i_private
->i_private : i_private
-
- import im_private_mi_private = m_private.mi_private;
->im_private_mi_private : typeof mi_private
->m_private : typeof mi_private
->mi_private : typeof mi_private
-
- import im_private_mu_private = m_private.mu_private;
->im_private_mu_private : im_private_mu_private
->m_private : m_private
->mu_private : mu_private
-
- // Usage of above decls
- var privateUse_im_private_c_private = new im_private_c_private();
->privateUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
- export var publicUse_im_private_c_private = new im_private_c_private();
->publicUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
- var privateUse_im_private_e_private = im_private_e_private.Happy;
->privateUse_im_private_e_private : e_private
->im_private_e_private.Happy : e_private
->im_private_e_private : typeof e_private
->Happy : e_private
-
- export var publicUse_im_private_e_private = im_private_e_private.Grumpy;
->publicUse_im_private_e_private : e_private
->im_private_e_private.Grumpy : e_private
->im_private_e_private : typeof e_private
->Grumpy : e_private
-
- var privateUse_im_private_f_private = im_private_f_private();
->privateUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
- export var publicUse_im_private_f_private = im_private_f_private();
->publicUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
- var privateUse_im_private_v_private = im_private_v_private;
->privateUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
- export var publicUse_im_private_v_private = im_private_v_private;
->publicUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
- var privateUse_im_private_i_private: im_private_i_private;
->privateUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
- export var publicUse_im_private_i_private: im_private_i_private;
->publicUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
- var privateUse_im_private_mi_private = new im_private_mi_private.c();
->privateUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
- export var publicUse_im_private_mi_private = new im_private_mi_private.c();
->publicUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
- var privateUse_im_private_mu_private: im_private_mu_private.i;
->privateUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
- export var publicUse_im_private_mu_private: im_private_mu_private.i;
->publicUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
-
- // No Privacy errors - importing public elements
- import im_private_c_public = m_public.c_public;
->im_private_c_public : typeof c_public
->m_public : c_public
->c_public : c_public
-
- import im_private_e_public = m_public.e_public;
->im_private_e_public : typeof e_public
->m_public : e_public
->e_public : e_public
-
- import im_private_f_public = m_public.f_public;
->im_private_f_public : () => c_public
->m_public : () => c_public
->f_public : () => c_public
-
- import im_private_v_public = m_public.v_public;
->im_private_v_public : number
->m_public : number
->v_public : number
-
- import im_private_i_public = m_public.i_public;
->im_private_i_public : im_private_i_public
->m_public : i_public
->i_public : i_public
-
- import im_private_mi_public = m_public.mi_public;
->im_private_mi_public : typeof mi_public
->m_public : typeof mi_public
->mi_public : typeof mi_public
-
- import im_private_mu_public = m_public.mu_public;
->im_private_mu_public : im_private_mu_public
->m_public : m_public
->mu_public : mu_public
-
- // Usage of above decls
- var privateUse_im_private_c_public = new im_private_c_public();
->privateUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
- export var publicUse_im_private_c_public = new im_private_c_public();
->publicUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
- var privateUse_im_private_e_public = im_private_e_public.Happy;
->privateUse_im_private_e_public : e_public
->im_private_e_public.Happy : e_public
->im_private_e_public : typeof e_public
->Happy : e_public
-
- export var publicUse_im_private_e_public = im_private_e_public.Grumpy;
->publicUse_im_private_e_public : e_public
->im_private_e_public.Grumpy : e_public
->im_private_e_public : typeof e_public
->Grumpy : e_public
-
- var privateUse_im_private_f_public = im_private_f_public();
->privateUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
- export var publicUse_im_private_f_public = im_private_f_public();
->publicUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
- var privateUse_im_private_v_public = im_private_v_public;
->privateUse_im_private_v_public : number
->im_private_v_public : number
-
- export var publicUse_im_private_v_public = im_private_v_public;
->publicUse_im_private_v_public : number
->im_private_v_public : number
-
- var privateUse_im_private_i_public: im_private_i_public;
->privateUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
- export var publicUse_im_private_i_public: im_private_i_public;
->publicUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
- var privateUse_im_private_mi_public = new im_private_mi_public.c();
->privateUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
- export var publicUse_im_private_mi_public = new im_private_mi_public.c();
->publicUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
- var privateUse_im_private_mu_public: im_private_mu_public.i;
->privateUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-
- export var publicUse_im_private_mu_public: im_private_mu_public.i;
->publicUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-}
-
-module import_private {
->import_private : typeof import_private
-
- // No Privacy errors - importing private elements
- import im_private_c_private = m_private.c_private;
->im_private_c_private : typeof c_private
->m_private : c_private
->c_private : c_private
-
- import im_private_e_private = m_private.e_private;
->im_private_e_private : typeof e_private
->m_private : e_private
->e_private : e_private
-
- import im_private_f_private = m_private.f_private;
->im_private_f_private : () => c_private
->m_private : () => c_private
->f_private : () => c_private
-
- import im_private_v_private = m_private.v_private;
->im_private_v_private : c_private
->m_private : c_private
->v_private : c_private
-
- import im_private_i_private = m_private.i_private;
->im_private_i_private : im_private_i_private
->m_private : i_private
->i_private : i_private
-
- import im_private_mi_private = m_private.mi_private;
->im_private_mi_private : typeof mi_private
->m_private : typeof mi_private
->mi_private : typeof mi_private
-
- import im_private_mu_private = m_private.mu_private;
->im_private_mu_private : im_private_mu_private
->m_private : m_private
->mu_private : mu_private
-
- // Usage of above decls
- var privateUse_im_private_c_private = new im_private_c_private();
->privateUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
- export var publicUse_im_private_c_private = new im_private_c_private();
->publicUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
- var privateUse_im_private_e_private = im_private_e_private.Happy;
->privateUse_im_private_e_private : e_private
->im_private_e_private.Happy : e_private
->im_private_e_private : typeof e_private
->Happy : e_private
-
- export var publicUse_im_private_e_private = im_private_e_private.Grumpy;
->publicUse_im_private_e_private : e_private
->im_private_e_private.Grumpy : e_private
->im_private_e_private : typeof e_private
->Grumpy : e_private
-
- var privateUse_im_private_f_private = im_private_f_private();
->privateUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
- export var publicUse_im_private_f_private = im_private_f_private();
->publicUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
- var privateUse_im_private_v_private = im_private_v_private;
->privateUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
- export var publicUse_im_private_v_private = im_private_v_private;
->publicUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
- var privateUse_im_private_i_private: im_private_i_private;
->privateUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
- export var publicUse_im_private_i_private: im_private_i_private;
->publicUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
- var privateUse_im_private_mi_private = new im_private_mi_private.c();
->privateUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
- export var publicUse_im_private_mi_private = new im_private_mi_private.c();
->publicUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
- var privateUse_im_private_mu_private: im_private_mu_private.i;
->privateUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
- export var publicUse_im_private_mu_private: im_private_mu_private.i;
->publicUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
- // No privacy Error - importing public elements
- import im_private_c_public = m_public.c_public;
->im_private_c_public : typeof c_public
->m_public : c_public
->c_public : c_public
-
- import im_private_e_public = m_public.e_public;
->im_private_e_public : typeof e_public
->m_public : e_public
->e_public : e_public
-
- import im_private_f_public = m_public.f_public;
->im_private_f_public : () => c_public
->m_public : () => c_public
->f_public : () => c_public
-
- import im_private_v_public = m_public.v_public;
->im_private_v_public : number
->m_public : number
->v_public : number
-
- import im_private_i_public = m_public.i_public;
->im_private_i_public : im_private_i_public
->m_public : i_public
->i_public : i_public
-
- import im_private_mi_public = m_public.mi_public;
->im_private_mi_public : typeof mi_public
->m_public : typeof mi_public
->mi_public : typeof mi_public
-
- import im_private_mu_public = m_public.mu_public;
->im_private_mu_public : im_private_mu_public
->m_public : m_public
->mu_public : mu_public
-
- // Usage of above decls
- var privateUse_im_private_c_public = new im_private_c_public();
->privateUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
- export var publicUse_im_private_c_public = new im_private_c_public();
->publicUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
- var privateUse_im_private_e_public = im_private_e_public.Happy;
->privateUse_im_private_e_public : e_public
->im_private_e_public.Happy : e_public
->im_private_e_public : typeof e_public
->Happy : e_public
-
- export var publicUse_im_private_e_public = im_private_e_public.Grumpy;
->publicUse_im_private_e_public : e_public
->im_private_e_public.Grumpy : e_public
->im_private_e_public : typeof e_public
->Grumpy : e_public
-
- var privateUse_im_private_f_public = im_private_f_public();
->privateUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
- export var publicUse_im_private_f_public = im_private_f_public();
->publicUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
- var privateUse_im_private_v_public = im_private_v_public;
->privateUse_im_private_v_public : number
->im_private_v_public : number
-
- export var publicUse_im_private_v_public = im_private_v_public;
->publicUse_im_private_v_public : number
->im_private_v_public : number
-
- var privateUse_im_private_i_public: im_private_i_public;
->privateUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
- export var publicUse_im_private_i_public: im_private_i_public;
->publicUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
- var privateUse_im_private_mi_public = new im_private_mi_public.c();
->privateUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
- export var publicUse_im_private_mi_public = new im_private_mi_public.c();
->publicUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
- var privateUse_im_private_mu_public: im_private_mu_public.i;
->privateUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-
- export var publicUse_im_private_mu_public: im_private_mu_public.i;
->publicUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-}
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types
new file mode 100644
index 0000000000..bb52127b6a
--- /dev/null
+++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types
@@ -0,0 +1,113 @@
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts ===
+///
+///
+// Privacy errors - importing private elements
+export import im_public_mi_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require");
+>im_public_mi_private : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require"
+
+export import im_public_mu_private = require("privacyTopLevelAmbientExternalModuleImportWithExport_require1");
+>im_public_mu_private : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1"
+
+export import im_public_mi_public = require("m");
+>im_public_mi_public : typeof 'm'
+
+export import im_public_mu_public = require("m2");
+>im_public_mu_public : typeof 'm2'
+
+// Usage of privacy error imports
+var privateUse_im_public_mi_private = new im_public_mi_private.c_public();
+>privateUse_im_public_mi_private : c_public
+>new im_public_mi_private.c_public() : c_public
+>im_public_mi_private.c_public : typeof c_public
+>im_public_mi_private : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require"
+>c_public : typeof c_public
+
+export var publicUse_im_public_mi_private = new im_public_mi_private.c_public();
+>publicUse_im_public_mi_private : c_public
+>new im_public_mi_private.c_public() : c_public
+>im_public_mi_private.c_public : typeof c_public
+>im_public_mi_private : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require"
+>c_public : typeof c_public
+
+var privateUse_im_public_mu_private = new im_public_mu_private.c_public();
+>privateUse_im_public_mu_private : c_public
+>new im_public_mu_private.c_public() : c_public
+>im_public_mu_private.c_public : typeof c_public
+>im_public_mu_private : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1"
+>c_public : typeof c_public
+
+export var publicUse_im_public_mu_private = new im_public_mu_private.c_public();
+>publicUse_im_public_mu_private : c_public
+>new im_public_mu_private.c_public() : c_public
+>im_public_mu_private.c_public : typeof c_public
+>im_public_mu_private : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1"
+>c_public : typeof c_public
+
+var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
+>privateUse_im_public_mi_public : c_private
+>new im_public_mi_public.c_private() : c_private
+>im_public_mi_public.c_private : typeof c_private
+>im_public_mi_public : typeof 'm'
+>c_private : typeof c_private
+
+export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
+>publicUse_im_public_mi_public : c_private
+>new im_public_mi_public.c_private() : c_private
+>im_public_mi_public.c_private : typeof c_private
+>im_public_mi_public : typeof 'm'
+>c_private : typeof c_private
+
+var privateUse_im_public_mi_public = new im_public_mi_public.c_private();
+>privateUse_im_public_mi_public : c_private
+>new im_public_mi_public.c_private() : c_private
+>im_public_mi_public.c_private : typeof c_private
+>im_public_mi_public : typeof 'm'
+>c_private : typeof c_private
+
+export var publicUse_im_public_mi_public = new im_public_mi_public.c_private();
+>publicUse_im_public_mi_public : c_private
+>new im_public_mi_public.c_private() : c_private
+>im_public_mi_public.c_private : typeof c_private
+>im_public_mi_public : typeof 'm'
+>c_private : typeof c_private
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts ===
+// Public elements
+export class c_public {
+>c_public : c_public
+
+ foo: string;
+>foo : string
+}
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts ===
+export class c_public {
+>c_public : c_public
+
+ bar: string;
+>bar : string
+}
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts ===
+// private elements
+// Export - Error ambient modules allowed only in global
+declare module 'm' {
+ export class c_private {
+>c_private : c_private
+
+ baz: string;
+>baz : string
+ }
+}
+
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts ===
+declare module 'm2' {
+ export class c_private {
+>c_private : c_private
+
+ bing: string;
+>bing : string
+ }
+}
+
diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types
new file mode 100644
index 0000000000..3825f7e2a3
--- /dev/null
+++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types
@@ -0,0 +1,113 @@
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts ===
+///
+///
+// Privacy errors - importing private elements
+import im_private_mi_private = require("m");
+>im_private_mi_private : typeof 'm'
+
+import im_private_mu_private = require("m2");
+>im_private_mu_private : typeof 'm2'
+
+import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require");
+>im_private_mi_public : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require"
+
+import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1");
+>im_private_mu_public : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1"
+
+// Usage of privacy error imports
+var privateUse_im_private_mi_private = new im_private_mi_private.c_private();
+>privateUse_im_private_mi_private : c_private
+>new im_private_mi_private.c_private() : c_private
+>im_private_mi_private.c_private : typeof c_private
+>im_private_mi_private : typeof 'm'
+>c_private : typeof c_private
+
+export var publicUse_im_private_mi_private = new im_private_mi_private.c_private();
+>publicUse_im_private_mi_private : c_private
+>new im_private_mi_private.c_private() : c_private
+>im_private_mi_private.c_private : typeof c_private
+>im_private_mi_private : typeof 'm'
+>c_private : typeof c_private
+
+var privateUse_im_private_mu_private = new im_private_mu_private.c_private();
+>privateUse_im_private_mu_private : c_private
+>new im_private_mu_private.c_private() : c_private
+>im_private_mu_private.c_private : typeof c_private
+>im_private_mu_private : typeof 'm2'
+>c_private : typeof c_private
+
+export var publicUse_im_private_mu_private = new im_private_mu_private.c_private();
+>publicUse_im_private_mu_private : c_private
+>new im_private_mu_private.c_private() : c_private
+>im_private_mu_private.c_private : typeof c_private
+>im_private_mu_private : typeof 'm2'
+>c_private : typeof c_private
+
+var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
+>privateUse_im_private_mi_public : c_public
+>new im_private_mi_public.c_public() : c_public
+>im_private_mi_public.c_public : typeof c_public
+>im_private_mi_public : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require"
+>c_public : typeof c_public
+
+export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
+>publicUse_im_private_mi_public : c_public
+>new im_private_mi_public.c_public() : c_public
+>im_private_mi_public.c_public : typeof c_public
+>im_private_mi_public : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require"
+>c_public : typeof c_public
+
+var privateUse_im_private_mi_public = new im_private_mi_public.c_public();
+>privateUse_im_private_mi_public : c_public
+>new im_private_mi_public.c_public() : c_public
+>im_private_mi_public.c_public : typeof c_public
+>im_private_mi_public : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require"
+>c_public : typeof c_public
+
+export var publicUse_im_private_mi_public = new im_private_mi_public.c_public();
+>publicUse_im_private_mi_public : c_public
+>new im_private_mi_public.c_public() : c_public
+>im_private_mi_public.c_public : typeof c_public
+>im_private_mi_public : typeof "tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require"
+>c_public : typeof c_public
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts ===
+
+// Public elements
+export class c_public {
+>c_public : c_public
+
+ foo: string;
+>foo : string
+}
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts ===
+export class c_public {
+>c_public : c_public
+
+ bar: string;
+>bar : string
+}
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts ===
+// private elements
+// Export - Error ambient modules allowed only in global
+declare module 'm' {
+ export class c_private {
+>c_private : c_private
+
+ baz: string
+>baz : string
+ }
+}
+
+=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts ===
+declare module 'm2' {
+ export class c_private {
+>c_private : c_private
+
+ bing: string;
+>bing : string
+ }
+}
+
diff --git a/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.types b/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.types
deleted file mode 100644
index 18b574d212..0000000000
--- a/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithExport.types
+++ /dev/null
@@ -1,312 +0,0 @@
-=== tests/cases/compiler/privacyTopLevelInternalReferenceImportWithExport.ts ===
-// private elements
-module m_private {
->m_private : typeof m_private
-
- export class c_private {
->c_private : c_private
- }
- export enum e_private {
->e_private : e_private
-
- Happy,
->Happy : e_private
-
- Grumpy
->Grumpy : e_private
- }
- export function f_private() {
->f_private : () => c_private
-
- return new c_private();
->new c_private() : c_private
->c_private : typeof c_private
- }
- export var v_private = new c_private();
->v_private : c_private
->new c_private() : c_private
->c_private : typeof c_private
-
- export interface i_private {
->i_private : i_private
- }
- export module mi_private {
->mi_private : typeof mi_private
-
- export class c {
->c : c
- }
- }
- export module mu_private {
->mu_private : mu_private
-
- export interface i {
->i : i
- }
- }
-}
-
-// Public elements
-export module m_public {
->m_public : typeof m_public
-
- export class c_public {
->c_public : c_public
- }
- export enum e_public {
->e_public : e_public
-
- Happy,
->Happy : e_public
-
- Grumpy
->Grumpy : e_public
- }
- export function f_public() {
->f_public : () => c_public
-
- return new c_public();
->new c_public() : c_public
->c_public : typeof c_public
- }
- export var v_public = 10;
->v_public : number
-
- export interface i_public {
->i_public : i_public
- }
- export module mi_public {
->mi_public : typeof mi_public
-
- export class c {
->c : c
- }
- }
- export module mu_public {
->mu_public : mu_public
-
- export interface i {
->i : i
- }
- }
-}
-
-// Privacy errors - importing private elements
-export import im_public_c_private = m_private.c_private;
->im_public_c_private : typeof c_private
->m_private : c_private
->c_private : c_private
-
-export import im_public_e_private = m_private.e_private;
->im_public_e_private : typeof e_private
->m_private : e_private
->e_private : e_private
-
-export import im_public_f_private = m_private.f_private;
->im_public_f_private : () => c_private
->m_private : () => c_private
->f_private : () => c_private
-
-export import im_public_v_private = m_private.v_private;
->im_public_v_private : c_private
->m_private : c_private
->v_private : c_private
-
-export import im_public_i_private = m_private.i_private;
->im_public_i_private : im_public_i_private
->m_private : i_private
->i_private : i_private
-
-export import im_public_mi_private = m_private.mi_private;
->im_public_mi_private : typeof mi_private
->m_private : typeof mi_private
->mi_private : typeof mi_private
-
-export import im_public_mu_private = m_private.mu_private;
->im_public_mu_private : im_public_mu_private
->m_private : m_private
->mu_private : mu_private
-
-// Usage of privacy error imports
-var privateUse_im_public_c_private = new im_public_c_private();
->privateUse_im_public_c_private : c_private
->new im_public_c_private() : c_private
->im_public_c_private : typeof c_private
-
-export var publicUse_im_public_c_private = new im_public_c_private();
->publicUse_im_public_c_private : c_private
->new im_public_c_private() : c_private
->im_public_c_private : typeof c_private
-
-var privateUse_im_public_e_private = im_public_e_private.Happy;
->privateUse_im_public_e_private : e_private
->im_public_e_private.Happy : e_private
->im_public_e_private : typeof e_private
->Happy : e_private
-
-export var publicUse_im_public_e_private = im_public_e_private.Grumpy;
->publicUse_im_public_e_private : e_private
->im_public_e_private.Grumpy : e_private
->im_public_e_private : typeof e_private
->Grumpy : e_private
-
-var privateUse_im_public_f_private = im_public_f_private();
->privateUse_im_public_f_private : c_private
->im_public_f_private() : c_private
->im_public_f_private : () => c_private
-
-export var publicUse_im_public_f_private = im_public_f_private();
->publicUse_im_public_f_private : c_private
->im_public_f_private() : c_private
->im_public_f_private : () => c_private
-
-var privateUse_im_public_v_private = im_public_v_private;
->privateUse_im_public_v_private : c_private
->im_public_v_private : c_private
-
-export var publicUse_im_public_v_private = im_public_v_private;
->publicUse_im_public_v_private : c_private
->im_public_v_private : c_private
-
-var privateUse_im_public_i_private: im_public_i_private;
->privateUse_im_public_i_private : i_private
->im_public_i_private : im_public_i_private
-
-export var publicUse_im_public_i_private: im_public_i_private;
->publicUse_im_public_i_private : i_private
->im_public_i_private : im_public_i_private
-
-var privateUse_im_public_mi_private = new im_public_mi_private.c();
->privateUse_im_public_mi_private : c
->new im_public_mi_private.c() : c
->im_public_mi_private.c : typeof c
->im_public_mi_private : typeof mi_private
->c : typeof c
-
-export var publicUse_im_public_mi_private = new im_public_mi_private.c();
->publicUse_im_public_mi_private : c
->new im_public_mi_private.c() : c
->im_public_mi_private.c : typeof c
->im_public_mi_private : typeof mi_private
->c : typeof c
-
-var privateUse_im_public_mu_private: im_public_mu_private.i;
->privateUse_im_public_mu_private : i
->im_public_mu_private : im_public_mu_private
->i : i
-
-export var publicUse_im_public_mu_private: im_public_mu_private.i;
->publicUse_im_public_mu_private : i
->im_public_mu_private : im_public_mu_private
->i : i
-
-
-// No Privacy errors - importing public elements
-export import im_public_c_public = m_public.c_public;
->im_public_c_public : typeof c_public
->m_public : c_public
->c_public : c_public
-
-export import im_public_e_public = m_public.e_public;
->im_public_e_public : typeof e_public
->m_public : e_public
->e_public : e_public
-
-export import im_public_f_public = m_public.f_public;
->im_public_f_public : () => c_public
->m_public : () => c_public
->f_public : () => c_public
-
-export import im_public_v_public = m_public.v_public;
->im_public_v_public : number
->m_public : number
->v_public : number
-
-export import im_public_i_public = m_public.i_public;
->im_public_i_public : im_public_i_public
->m_public : i_public
->i_public : i_public
-
-export import im_public_mi_public = m_public.mi_public;
->im_public_mi_public : typeof mi_public
->m_public : typeof mi_public
->mi_public : typeof mi_public
-
-export import im_public_mu_public = m_public.mu_public;
->im_public_mu_public : im_public_mu_public
->m_public : m_public
->mu_public : mu_public
-
-// Usage of above decls
-var privateUse_im_public_c_public = new im_public_c_public();
->privateUse_im_public_c_public : c_public
->new im_public_c_public() : c_public
->im_public_c_public : typeof c_public
-
-export var publicUse_im_public_c_public = new im_public_c_public();
->publicUse_im_public_c_public : c_public
->new im_public_c_public() : c_public
->im_public_c_public : typeof c_public
-
-var privateUse_im_public_e_public = im_public_e_public.Happy;
->privateUse_im_public_e_public : e_public
->im_public_e_public.Happy : e_public
->im_public_e_public : typeof e_public
->Happy : e_public
-
-export var publicUse_im_public_e_public = im_public_e_public.Grumpy;
->publicUse_im_public_e_public : e_public
->im_public_e_public.Grumpy : e_public
->im_public_e_public : typeof e_public
->Grumpy : e_public
-
-var privateUse_im_public_f_public = im_public_f_public();
->privateUse_im_public_f_public : c_public
->im_public_f_public() : c_public
->im_public_f_public : () => c_public
-
-export var publicUse_im_public_f_public = im_public_f_public();
->publicUse_im_public_f_public : c_public
->im_public_f_public() : c_public
->im_public_f_public : () => c_public
-
-var privateUse_im_public_v_public = im_public_v_public;
->privateUse_im_public_v_public : number
->im_public_v_public : number
-
-export var publicUse_im_public_v_public = im_public_v_public;
->publicUse_im_public_v_public : number
->im_public_v_public : number
-
-var privateUse_im_public_i_public: im_public_i_public;
->privateUse_im_public_i_public : i_public
->im_public_i_public : im_public_i_public
-
-export var publicUse_im_public_i_public: im_public_i_public;
->publicUse_im_public_i_public : i_public
->im_public_i_public : im_public_i_public
-
-var privateUse_im_public_mi_public = new im_public_mi_public.c();
->privateUse_im_public_mi_public : c
->new im_public_mi_public.c() : c
->im_public_mi_public.c : typeof c
->im_public_mi_public : typeof mi_public
->c : typeof c
-
-export var publicUse_im_public_mi_public = new im_public_mi_public.c();
->publicUse_im_public_mi_public : c
->new im_public_mi_public.c() : c
->im_public_mi_public.c : typeof c
->im_public_mi_public : typeof mi_public
->c : typeof c
-
-var privateUse_im_public_mu_public: im_public_mu_public.i;
->privateUse_im_public_mu_public : i
->im_public_mu_public : im_public_mu_public
->i : i
-
-export var publicUse_im_public_mu_public: im_public_mu_public.i;
->publicUse_im_public_mu_public : i
->im_public_mu_public : im_public_mu_public
->i : i
-
diff --git a/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithoutExport.types b/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithoutExport.types
deleted file mode 100644
index 4a60c1e069..0000000000
--- a/tests/baselines/reference/privacyTopLevelInternalReferenceImportWithoutExport.types
+++ /dev/null
@@ -1,312 +0,0 @@
-=== tests/cases/compiler/privacyTopLevelInternalReferenceImportWithoutExport.ts ===
-// private elements
-module m_private {
->m_private : typeof m_private
-
- export class c_private {
->c_private : c_private
- }
- export enum e_private {
->e_private : e_private
-
- Happy,
->Happy : e_private
-
- Grumpy
->Grumpy : e_private
- }
- export function f_private() {
->f_private : () => c_private
-
- return new c_private();
->new c_private() : c_private
->c_private : typeof c_private
- }
- export var v_private = new c_private();
->v_private : c_private
->new c_private() : c_private
->c_private : typeof c_private
-
- export interface i_private {
->i_private : i_private
- }
- export module mi_private {
->mi_private : typeof mi_private
-
- export class c {
->c : c
- }
- }
- export module mu_private {
->mu_private : mu_private
-
- export interface i {
->i : i
- }
- }
-}
-
-// Public elements
-export module m_public {
->m_public : typeof m_public
-
- export class c_public {
->c_public : c_public
- }
- export enum e_public {
->e_public : e_public
-
- Happy,
->Happy : e_public
-
- Grumpy
->Grumpy : e_public
- }
- export function f_public() {
->f_public : () => c_public
-
- return new c_public();
->new c_public() : c_public
->c_public : typeof c_public
- }
- export var v_public = 10;
->v_public : number
-
- export interface i_public {
->i_public : i_public
- }
- export module mi_public {
->mi_public : typeof mi_public
-
- export class c {
->c : c
- }
- }
- export module mu_public {
->mu_public : mu_public
-
- export interface i {
->i : i
- }
- }
-}
-
-// No Privacy errors - importing private elements
-import im_private_c_private = m_private.c_private;
->im_private_c_private : typeof c_private
->m_private : c_private
->c_private : c_private
-
-import im_private_e_private = m_private.e_private;
->im_private_e_private : typeof e_private
->m_private : e_private
->e_private : e_private
-
-import im_private_f_private = m_private.f_private;
->im_private_f_private : () => c_private
->m_private : () => c_private
->f_private : () => c_private
-
-import im_private_v_private = m_private.v_private;
->im_private_v_private : c_private
->m_private : c_private
->v_private : c_private
-
-import im_private_i_private = m_private.i_private;
->im_private_i_private : im_private_i_private
->m_private : i_private
->i_private : i_private
-
-import im_private_mi_private = m_private.mi_private;
->im_private_mi_private : typeof mi_private
->m_private : typeof mi_private
->mi_private : typeof mi_private
-
-import im_private_mu_private = m_private.mu_private;
->im_private_mu_private : im_private_mu_private
->m_private : m_private
->mu_private : mu_private
-
-// Usage of above decls
-var privateUse_im_private_c_private = new im_private_c_private();
->privateUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
-export var publicUse_im_private_c_private = new im_private_c_private();
->publicUse_im_private_c_private : c_private
->new im_private_c_private() : c_private
->im_private_c_private : typeof c_private
-
-var privateUse_im_private_e_private = im_private_e_private.Happy;
->privateUse_im_private_e_private : e_private
->im_private_e_private.Happy : e_private
->im_private_e_private : typeof e_private
->Happy : e_private
-
-export var publicUse_im_private_e_private = im_private_e_private.Grumpy;
->publicUse_im_private_e_private : e_private
->im_private_e_private.Grumpy : e_private
->im_private_e_private : typeof e_private
->Grumpy : e_private
-
-var privateUse_im_private_f_private = im_private_f_private();
->privateUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
-export var publicUse_im_private_f_private = im_private_f_private();
->publicUse_im_private_f_private : c_private
->im_private_f_private() : c_private
->im_private_f_private : () => c_private
-
-var privateUse_im_private_v_private = im_private_v_private;
->privateUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
-export var publicUse_im_private_v_private = im_private_v_private;
->publicUse_im_private_v_private : c_private
->im_private_v_private : c_private
-
-var privateUse_im_private_i_private: im_private_i_private;
->privateUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
-export var publicUse_im_private_i_private: im_private_i_private;
->publicUse_im_private_i_private : i_private
->im_private_i_private : im_private_i_private
-
-var privateUse_im_private_mi_private = new im_private_mi_private.c();
->privateUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
-export var publicUse_im_private_mi_private = new im_private_mi_private.c();
->publicUse_im_private_mi_private : c
->new im_private_mi_private.c() : c
->im_private_mi_private.c : typeof c
->im_private_mi_private : typeof mi_private
->c : typeof c
-
-var privateUse_im_private_mu_private: im_private_mu_private.i;
->privateUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
-export var publicUse_im_private_mu_private: im_private_mu_private.i;
->publicUse_im_private_mu_private : i
->im_private_mu_private : im_private_mu_private
->i : i
-
-
-// No Privacy errors - importing public elements
-import im_private_c_public = m_public.c_public;
->im_private_c_public : typeof c_public
->m_public : c_public
->c_public : c_public
-
-import im_private_e_public = m_public.e_public;
->im_private_e_public : typeof e_public
->m_public : e_public
->e_public : e_public
-
-import im_private_f_public = m_public.f_public;
->im_private_f_public : () => c_public
->m_public : () => c_public
->f_public : () => c_public
-
-import im_private_v_public = m_public.v_public;
->im_private_v_public : number
->m_public : number
->v_public : number
-
-import im_private_i_public = m_public.i_public;
->im_private_i_public : im_private_i_public
->m_public : i_public
->i_public : i_public
-
-import im_private_mi_public = m_public.mi_public;
->im_private_mi_public : typeof mi_public
->m_public : typeof mi_public
->mi_public : typeof mi_public
-
-import im_private_mu_public = m_public.mu_public;
->im_private_mu_public : im_private_mu_public
->m_public : m_public
->mu_public : mu_public
-
-// Usage of above decls
-var privateUse_im_private_c_public = new im_private_c_public();
->privateUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
-export var publicUse_im_private_c_public = new im_private_c_public();
->publicUse_im_private_c_public : c_public
->new im_private_c_public() : c_public
->im_private_c_public : typeof c_public
-
-var privateUse_im_private_e_public = im_private_e_public.Happy;
->privateUse_im_private_e_public : e_public
->im_private_e_public.Happy : e_public
->im_private_e_public : typeof e_public
->Happy : e_public
-
-export var publicUse_im_private_e_public = im_private_e_public.Grumpy;
->publicUse_im_private_e_public : e_public
->im_private_e_public.Grumpy : e_public
->im_private_e_public : typeof e_public
->Grumpy : e_public
-
-var privateUse_im_private_f_public = im_private_f_public();
->privateUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
-export var publicUse_im_private_f_public = im_private_f_public();
->publicUse_im_private_f_public : c_public
->im_private_f_public() : c_public
->im_private_f_public : () => c_public
-
-var privateUse_im_private_v_public = im_private_v_public;
->privateUse_im_private_v_public : number
->im_private_v_public : number
-
-export var publicUse_im_private_v_public = im_private_v_public;
->publicUse_im_private_v_public : number
->im_private_v_public : number
-
-var privateUse_im_private_i_public: im_private_i_public;
->privateUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
-export var publicUse_im_private_i_public: im_private_i_public;
->publicUse_im_private_i_public : i_public
->im_private_i_public : im_private_i_public
-
-var privateUse_im_private_mi_public = new im_private_mi_public.c();
->privateUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
-export var publicUse_im_private_mi_public = new im_private_mi_public.c();
->publicUse_im_private_mi_public : c
->new im_private_mi_public.c() : c
->im_private_mi_public.c : typeof c
->im_private_mi_public : typeof mi_public
->c : typeof c
-
-var privateUse_im_private_mu_public: im_private_mu_public.i;
->privateUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-
-export var publicUse_im_private_mu_public: im_private_mu_public.i;
->publicUse_im_private_mu_public : i
->im_private_mu_public : im_private_mu_public
->i : i
-