mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 12:51:30 -05:00
fix export * as default syntax (#39803)
* fix export * as default syntax * update comments
This commit is contained in:
@@ -490,7 +490,7 @@ namespace ts {
|
||||
*/
|
||||
export function getLocalNameForExternalImport(factory: NodeFactory, node: ImportDeclaration | ExportDeclaration | ImportEqualsDeclaration, sourceFile: SourceFile): Identifier | undefined {
|
||||
const namespaceDeclaration = getNamespaceDeclarationNode(node);
|
||||
if (namespaceDeclaration && !isDefaultImport(node)) {
|
||||
if (namespaceDeclaration && !isDefaultImport(node) && !isExportNamespaceAsDefaultDeclaration(node)) {
|
||||
const name = namespaceDeclaration.name;
|
||||
return isGeneratedIdentifier(name) ? name : factory.createIdentifier(getSourceTextOfNodeFromSourceFile(sourceFile, name) || idText(name));
|
||||
}
|
||||
|
||||
@@ -6996,7 +6996,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
function parseNamespaceExport(pos: number): NamespaceExport {
|
||||
return finishNode(factory.createNamespaceExport(parseIdentifier()), pos);
|
||||
return finishNode(factory.createNamespaceExport(parseIdentifierName()), pos);
|
||||
}
|
||||
|
||||
function parseExportDeclaration(pos: number, hasJSDoc: boolean, decorators: NodeArray<Decorator> | undefined, modifiers: NodeArray<Modifier> | undefined): ExportDeclaration {
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace ts {
|
||||
);
|
||||
setOriginalNode(importDecl, node.exportClause);
|
||||
|
||||
const exportDecl = factory.createExportDeclaration(
|
||||
const exportDecl = isExportNamespaceAsDefaultDeclaration(node) ? factory.createExportDefault(synthName) : factory.createExportDeclaration(
|
||||
/*decorators*/ undefined,
|
||||
/*modifiers*/ undefined,
|
||||
/*isTypeOnly*/ false,
|
||||
|
||||
@@ -1043,6 +1043,7 @@ namespace ts {
|
||||
else if (node.exportClause) {
|
||||
const statements: Statement[] = [];
|
||||
// export * as ns from "mod";
|
||||
// export * as default from "mod";
|
||||
statements.push(
|
||||
setOriginalNode(
|
||||
setTextRange(
|
||||
@@ -1051,7 +1052,8 @@ namespace ts {
|
||||
factory.cloneNode(node.exportClause.name),
|
||||
getHelperExpressionForExport(node, moduleKind !== ModuleKind.AMD ?
|
||||
createRequireCall(node) :
|
||||
factory.createIdentifier(idText(node.exportClause.name)))
|
||||
isExportNamespaceAsDefaultDeclaration(node) ? generatedName :
|
||||
factory.createIdentifier(idText(node.exportClause.name)))
|
||||
)
|
||||
),
|
||||
node
|
||||
|
||||
@@ -519,6 +519,10 @@ namespace ts {
|
||||
return !!findAncestor(node, isJSDocTypeExpression);
|
||||
}
|
||||
|
||||
export function isExportNamespaceAsDefaultDeclaration(node: Node): boolean {
|
||||
return !!(isExportDeclaration(node) && node.exportClause && isNamespaceExport(node.exportClause) && node.exportClause.name.escapedText === "default");
|
||||
}
|
||||
|
||||
export function getTextOfNodeFromSourceText(sourceText: string, node: Node, includeTrivia = false): string {
|
||||
if (nodeIsMissing(node)) {
|
||||
return "";
|
||||
|
||||
Reference in New Issue
Block a user