Handle ts-only declaration export aliases in system transformer (#22919)

* handle ts declarations export alises in system transformer

* Retain end of declaration marker
This commit is contained in:
Wesley Wigham
2018-03-29 12:50:29 -07:00
committed by GitHub
parent 3365272f69
commit 51a4fe6d20
5 changed files with 104 additions and 0 deletions

View File

@@ -913,6 +913,12 @@ namespace ts {
delete deferredExports[id];
return append(statements, node);
}
else {
const original = getOriginalNode(node);
if (isModuleOrEnumDeclaration(original)) {
return append(appendExportsOfDeclaration(statements, original), node);
}
}
return node;
}

View File

@@ -0,0 +1,34 @@
//// [systemNamespaceAliasEmit.ts]
namespace ns {
const value = 1;
}
enum AnEnum {
ONE,
TWO
}
export {ns, AnEnum, ns as FooBar, AnEnum as BarEnum};
//// [systemNamespaceAliasEmit.js]
System.register([], function (exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var ns, AnEnum;
return {
setters: [],
execute: function () {
(function (ns) {
var value = 1;
})(ns || (ns = {}));
exports_1("ns", ns);
exports_1("FooBar", ns);
(function (AnEnum) {
AnEnum[AnEnum["ONE"] = 0] = "ONE";
AnEnum[AnEnum["TWO"] = 1] = "TWO";
})(AnEnum || (AnEnum = {}));
exports_1("AnEnum", AnEnum);
exports_1("BarEnum", AnEnum);
}
};
});

View File

@@ -0,0 +1,26 @@
=== tests/cases/compiler/systemNamespaceAliasEmit.ts ===
namespace ns {
>ns : Symbol(ns, Decl(systemNamespaceAliasEmit.ts, 0, 0))
const value = 1;
>value : Symbol(value, Decl(systemNamespaceAliasEmit.ts, 1, 9))
}
enum AnEnum {
>AnEnum : Symbol(AnEnum, Decl(systemNamespaceAliasEmit.ts, 2, 1))
ONE,
>ONE : Symbol(BarEnum.ONE, Decl(systemNamespaceAliasEmit.ts, 4, 13))
TWO
>TWO : Symbol(BarEnum.TWO, Decl(systemNamespaceAliasEmit.ts, 5, 8))
}
export {ns, AnEnum, ns as FooBar, AnEnum as BarEnum};
>ns : Symbol(ns, Decl(systemNamespaceAliasEmit.ts, 9, 8))
>AnEnum : Symbol(AnEnum, Decl(systemNamespaceAliasEmit.ts, 9, 11))
>ns : Symbol(FooBar, Decl(systemNamespaceAliasEmit.ts, 9, 19))
>FooBar : Symbol(FooBar, Decl(systemNamespaceAliasEmit.ts, 9, 19))
>AnEnum : Symbol(BarEnum, Decl(systemNamespaceAliasEmit.ts, 9, 33))
>BarEnum : Symbol(BarEnum, Decl(systemNamespaceAliasEmit.ts, 9, 33))

View File

@@ -0,0 +1,27 @@
=== tests/cases/compiler/systemNamespaceAliasEmit.ts ===
namespace ns {
>ns : typeof ns
const value = 1;
>value : 1
>1 : 1
}
enum AnEnum {
>AnEnum : AnEnum
ONE,
>ONE : AnEnum.ONE
TWO
>TWO : AnEnum.TWO
}
export {ns, AnEnum, ns as FooBar, AnEnum as BarEnum};
>ns : typeof ns
>AnEnum : typeof AnEnum
>ns : typeof ns
>FooBar : typeof ns
>AnEnum : typeof AnEnum
>BarEnum : typeof AnEnum

View File

@@ -0,0 +1,11 @@
// @module: system
namespace ns {
const value = 1;
}
enum AnEnum {
ONE,
TWO
}
export {ns, AnEnum, ns as FooBar, AnEnum as BarEnum};