//// [moduledecl.ts] module a { } module b.a { } module c.a.b { import ma = a; } module mImport { import d = a; import e = b.a; import d1 = a; import e1 = b.a; } module m0 { function f1() { } function f2(s: string); function f2(n: number); function f2(ns: any) { } class c1 { public a : ()=>string; private b: ()=>number; private static s1; public static s2; } interface i1 { () : Object; [n: number]: c1; } import m2 = a; import m3 = b; import m4 = b.a; import m5 = c; import m6 = c.a; import m7 = c.a.b; } module m1 { export function f1() { } export function f2(s: string); export function f2(n: number); export function f2(ns: any) { } export class c1 { public a: () =>string; private b: () =>number; private static s1; public static s2; public d() { return "Hello"; } public e: { x: number; y: string; }; constructor (public n, public n2: number, private n3, private n4: string) { } } export interface i1 { () : Object; [n: number]: c1; } import m2 = a; import m3 = b; import m4 = b.a; import m5 = c; import m6 = c.a; import m7 = c.a.b; } module m { export module m2 { var a = 10; export var b: number; } export module m3 { export var c: number; } } module m { export module m25 { export module m5 { export var c: number; } } } module m13 { export module m4 { export module m2 { export module m3 { export var c: number; } } export function f() { return 20; } } } declare module m4 { export var b; } declare module m5 { export var c; } declare module m43 { export var b; } declare module m55 { export var c; } declare module "m3" { export var b: number; } module exportTests { export class C1_public { private f2() { return 30; } public f3() { return "string"; } } class C2_private { private f2() { return 30; } public f3() { return "string"; } } export class C3_public { private getC2_private() { return new C2_private(); } private setC2_private(arg: C2_private) { } private get c2() { return new C2_private(); } public getC1_public() { return new C1_public(); } public setC1_public(arg: C1_public) { } public get c1() { return new C1_public(); } } } declare module mAmbient { class C { public myProp: number; } function foo() : C; var aVar: C; interface B { x: number; y: C; } enum e { x, y, z } module m3 { class C { public myProp: number; } function foo(): C; var aVar: C; interface B { x: number; y: C; } enum e { x, y, z } } } function foo() { return mAmbient.foo(); } var cVar = new mAmbient.C(); var aVar = mAmbient.aVar; var bB: mAmbient.B; var eVar: mAmbient.e; function m3foo() { return mAmbient.m3.foo(); } var m3cVar = new mAmbient.m3.C(); var m3aVar = mAmbient.m3.aVar; var m3bB: mAmbient.m3.B; var m3eVar: mAmbient.m3.e; //// [moduledecl.js] var m0; (function (m0) { function f1() { } function f2(ns) { } var c1 = (function () { function c1() { } return c1; })(); })(m0 || (m0 = {})); var m1; (function (m1) { function f1() { } m1.f1 = f1; function f2(ns) { } m1.f2 = f2; var c1 = (function () { function c1(n, n2, n3, n4) { this.n = n; this.n2 = n2; this.n3 = n3; this.n4 = n4; } c1.prototype.d = function () { return "Hello"; }; return c1; })(); m1.c1 = c1; })(m1 || (m1 = {})); var m; (function (m) { var m2; (function (m2) { var a = 10; })(m2 = m.m2 || (m.m2 = {})); var m3; (function (m3) { })(m3 = m.m3 || (m.m3 = {})); })(m || (m = {})); var m; (function (m) { var m25; (function (m25) { var m5; (function (m5) { })(m5 = m25.m5 || (m25.m5 = {})); })(m25 = m.m25 || (m.m25 = {})); })(m || (m = {})); var m13; (function (m13) { var m4; (function (m4) { var m2; (function (m2) { var m3; (function (m3) { })(m3 = m2.m3 || (m2.m3 = {})); })(m2 = m4.m2 || (m4.m2 = {})); function f() { return 20; } m4.f = f; })(m4 = m13.m4 || (m13.m4 = {})); })(m13 || (m13 = {})); var exportTests; (function (exportTests) { var C1_public = (function () { function C1_public() { } C1_public.prototype.f2 = function () { return 30; }; C1_public.prototype.f3 = function () { return "string"; }; return C1_public; })(); exportTests.C1_public = C1_public; var C2_private = (function () { function C2_private() { } C2_private.prototype.f2 = function () { return 30; }; C2_private.prototype.f3 = function () { return "string"; }; return C2_private; })(); var C3_public = (function () { function C3_public() { } C3_public.prototype.getC2_private = function () { return new C2_private(); }; C3_public.prototype.setC2_private = function (arg) { }; Object.defineProperty(C3_public.prototype, "c2", { get: function () { return new C2_private(); }, enumerable: true, configurable: true }); C3_public.prototype.getC1_public = function () { return new C1_public(); }; C3_public.prototype.setC1_public = function (arg) { }; Object.defineProperty(C3_public.prototype, "c1", { get: function () { return new C1_public(); }, enumerable: true, configurable: true }); return C3_public; })(); exportTests.C3_public = C3_public; })(exportTests || (exportTests = {})); function foo() { return mAmbient.foo(); } var cVar = new mAmbient.C(); var aVar = mAmbient.aVar; var bB; var eVar; function m3foo() { return mAmbient.m3.foo(); } var m3cVar = new mAmbient.m3.C(); var m3aVar = mAmbient.m3.aVar; var m3bB; var m3eVar; //// [moduledecl.d.ts] declare module a { } declare module b.a { } declare module c.a.b { } declare module mImport { } declare module m0 { } declare module m1 { function f1(): void; function f2(s: string): any; function f2(n: number): any; class c1 { n: any; n2: number; private n3; private n4; a: () => string; private b; private static s1; static s2: any; d(): string; e: { x: number; y: string; }; constructor(n: any, n2: number, n3: any, n4: string); } interface i1 { (): Object; [n: number]: c1; } } declare module m { module m2 { var b: number; } module m3 { var c: number; } } declare module m { module m25 { module m5 { var c: number; } } } declare module m13 { module m4 { module m2 { module m3 { var c: number; } } function f(): number; } } declare module m4 { var b: any; } declare module m5 { var c: any; } declare module m43 { var b: any; } declare module m55 { var c: any; } declare module "m3" { var b: number; } declare module exportTests { class C1_public { private f2(); f3(): string; } class C3_public { private getC2_private(); private setC2_private(arg); private c2; getC1_public(): C1_public; setC1_public(arg: C1_public): void; c1: C1_public; } } declare module mAmbient { class C { myProp: number; } function foo(): C; var aVar: C; interface B { x: number; y: C; } enum e { x, y, z, } module m3 { class C { myProp: number; } function foo(): C; var aVar: C; interface B { x: number; y: C; } enum e { x, y, z, } } } declare function foo(): mAmbient.C; declare var cVar: mAmbient.C; declare var aVar: mAmbient.C; declare var bB: mAmbient.B; declare var eVar: mAmbient.e; declare function m3foo(): mAmbient.m3.C; declare var m3cVar: mAmbient.m3.C; declare var m3aVar: mAmbient.m3.C; declare var m3bB: mAmbient.m3.B; declare var m3eVar: mAmbient.m3.e;