Visit default export expressions (#18977)

This commit is contained in:
Wesley Wigham 2017-10-05 16:47:24 -07:00 committed by GitHub
parent 28658de66c
commit 7a4c3314e8
6 changed files with 56 additions and 2 deletions

View file

@ -861,10 +861,10 @@ namespace ts {
if (original && hasAssociatedEndOfDeclarationMarker(original)) {
// Defer exports until we encounter an EndOfDeclarationMarker node
const id = getOriginalNodeId(node);
deferredExports[id] = appendExportStatement(deferredExports[id], createIdentifier("default"), node.expression, /*location*/ node, /*allowComments*/ true);
deferredExports[id] = appendExportStatement(deferredExports[id], createIdentifier("default"), visitNode(node.expression, importCallExpressionVisitor), /*location*/ node, /*allowComments*/ true);
}
else {
statements = appendExportStatement(statements, createIdentifier("default"), node.expression, /*location*/ node, /*allowComments*/ true);
statements = appendExportStatement(statements, createIdentifier("default"), visitNode(node.expression, importCallExpressionVisitor), /*location*/ node, /*allowComments*/ true);
}
return singleOrMany(statements);

View file

@ -0,0 +1,11 @@
tests/cases/compiler/dynamicImportInDefaultExportExpression.ts(3,23): error TS2307: Cannot find module './foo2'.
==== tests/cases/compiler/dynamicImportInDefaultExportExpression.ts (1 errors) ====
export default {
getInstance: function () {
return import('./foo2');
~~~~~~~~
!!! error TS2307: Cannot find module './foo2'.
}
}

View file

@ -0,0 +1,15 @@
//// [dynamicImportInDefaultExportExpression.ts]
export default {
getInstance: function () {
return import('./foo2');
}
}
//// [dynamicImportInDefaultExportExpression.js]
"use strict";
exports.__esModule = true;
exports["default"] = {
getInstance: function () {
return Promise.resolve().then(function () { return require('./foo2'); });
}
};

View file

@ -0,0 +1,8 @@
=== tests/cases/compiler/dynamicImportInDefaultExportExpression.ts ===
export default {
getInstance: function () {
>getInstance : Symbol(getInstance, Decl(dynamicImportInDefaultExportExpression.ts, 0, 16))
return import('./foo2');
}
}

View file

@ -0,0 +1,13 @@
=== tests/cases/compiler/dynamicImportInDefaultExportExpression.ts ===
export default {
>{ getInstance: function () { return import('./foo2'); }} : { getInstance: () => Promise<any>; }
getInstance: function () {
>getInstance : () => Promise<any>
>function () { return import('./foo2'); } : () => Promise<any>
return import('./foo2');
>import('./foo2') : Promise<any>
>'./foo2' : "./foo2"
}
}

View file

@ -0,0 +1,7 @@
// @skipLibCheck: true
// @lib: es6
export default {
getInstance: function () {
return import('./foo2');
}
}