mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-07-02 14:48:32 -05:00
Ellide uninstantiated exports in ES6
This commit is contained in:
@@ -3706,18 +3706,7 @@ module ts {
|
||||
}
|
||||
else {
|
||||
write("{ ");
|
||||
let importSpecifiers = (<NamedImports>node.importClause.namedBindings).elements;
|
||||
let currentTextPos = writer.getTextPos();
|
||||
let needsComma = false;
|
||||
for (var i = 0, n = importSpecifiers.length; i < n; i++) {
|
||||
if (resolver.isReferencedAliasDeclaration(importSpecifiers[i])) {
|
||||
if (needsComma) {
|
||||
write(", ");
|
||||
}
|
||||
needsComma = true;
|
||||
emit(importSpecifiers[i]);
|
||||
}
|
||||
}
|
||||
emitExportOrImportSpecifierList((<NamedImports>node.importClause.namedBindings).elements);
|
||||
write(" }");
|
||||
}
|
||||
emitEnd(node.importClause.namedBindings);
|
||||
@@ -3758,15 +3747,6 @@ module ts {
|
||||
}
|
||||
}
|
||||
|
||||
function emitImportOrExportSpecifier(node: ImportSpecifier) {
|
||||
Debug.assert(languageVersion >= ScriptTarget.ES6);
|
||||
if (node.propertyName) {
|
||||
emit(node.propertyName);
|
||||
write(" as ");
|
||||
}
|
||||
emit(node.name);
|
||||
}
|
||||
|
||||
function emitExternalImportDeclaration(node: ImportDeclaration | ImportEqualsDeclaration) {
|
||||
if (contains(externalImports, node)) {
|
||||
let exportedImport = node.kind === SyntaxKind.ImportEqualsDeclaration && (node.flags & NodeFlags.Export) !== 0;
|
||||
@@ -3902,24 +3882,50 @@ module ts {
|
||||
}
|
||||
write(");");
|
||||
}
|
||||
emitEnd(node);
|
||||
}
|
||||
}
|
||||
else {
|
||||
write("export ");
|
||||
if (node.exportClause) {
|
||||
// export { x, y, ... }
|
||||
write("{ ");
|
||||
emitCommaList(node.exportClause.elements);
|
||||
write(" }");
|
||||
if (!node.exportClause || resolver.isValueAliasDeclaration(node)) {
|
||||
emitStart(node);
|
||||
write("export ");
|
||||
if (node.exportClause) {
|
||||
// export { x, y, ... }
|
||||
write("{ ");
|
||||
emitExportOrImportSpecifierList(node.exportClause.elements);
|
||||
write(" }");
|
||||
}
|
||||
else {
|
||||
write("*");
|
||||
}
|
||||
if (node.moduleSpecifier) {
|
||||
write(" from ");
|
||||
emitNodeWithoutSourceMap(node.moduleSpecifier);
|
||||
}
|
||||
write(";");
|
||||
emitEnd(node);
|
||||
}
|
||||
else {
|
||||
write("*");
|
||||
}
|
||||
}
|
||||
|
||||
function emitExportOrImportSpecifierList(specifiers: ImportOrExportSpecifier[]) {
|
||||
Debug.assert(languageVersion >= ScriptTarget.ES6);
|
||||
|
||||
let needsComma = false;
|
||||
for (let specifier of specifiers) {
|
||||
if (resolver.isValueAliasDeclaration(specifier)) {
|
||||
if (needsComma) {
|
||||
write(", ");
|
||||
}
|
||||
emitStart(specifier);
|
||||
if (specifier.propertyName) {
|
||||
emitNodeWithoutSourceMap(specifier.propertyName);
|
||||
write(" as ");
|
||||
}
|
||||
emitNodeWithoutSourceMap(specifier.name);
|
||||
emitEnd(specifier);
|
||||
needsComma = true;
|
||||
}
|
||||
if (node.moduleSpecifier) {
|
||||
write(" from ");
|
||||
emit(node.moduleSpecifier);
|
||||
}
|
||||
write(";");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4386,9 +4392,6 @@ module ts {
|
||||
return emitModuleDeclaration(<ModuleDeclaration>node);
|
||||
case SyntaxKind.ImportDeclaration:
|
||||
return emitImportDeclaration(<ImportDeclaration>node);
|
||||
case SyntaxKind.ImportSpecifier:
|
||||
case SyntaxKind.ExportSpecifier:
|
||||
return emitImportOrExportSpecifier(<ImportOrExportSpecifier>node);
|
||||
case SyntaxKind.ImportEqualsDeclaration:
|
||||
return emitImportEqualsDeclaration(<ImportEqualsDeclaration>node);
|
||||
case SyntaxKind.ExportDeclaration:
|
||||
|
||||
@@ -26,8 +26,7 @@ var m;
|
||||
var x = 10;
|
||||
export { c };
|
||||
export { c as c2 };
|
||||
export { i, m as instantiatedModule };
|
||||
export { uninstantiated };
|
||||
export { m as instantiatedModule };
|
||||
export { x };
|
||||
|
||||
|
||||
|
||||
@@ -32,8 +32,7 @@ export var x = 10;
|
||||
//// [client.js]
|
||||
export { c } from "server";
|
||||
export { c as c2 } from "server";
|
||||
export { i, m as instantiatedModule } from "server";
|
||||
export { uninstantiated } from "server";
|
||||
export { m as instantiatedModule } from "server";
|
||||
export { x } from "server";
|
||||
|
||||
|
||||
|
||||
@@ -24,5 +24,5 @@ from;
|
||||
}
|
||||
from;
|
||||
"es6ImportNamedImportParsingError_0";
|
||||
import { a } from , from;
|
||||
import { } from , from;
|
||||
"es6ImportNamedImportParsingError_0";
|
||||
|
||||
Reference in New Issue
Block a user