diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts deleted file mode 100644 index e4de1109b1a..00000000000 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts +++ /dev/null @@ -1,12 +0,0 @@ -// @module: commonjs -// @target: es6 -// @noImplicitAny: false - -declare function getSpecifier(): string; -declare var whatToLoad: boolean; -import(getSpecifier()); -var p1 = import(getSpecifier()); -const p2 = import(whatToLoad ? getSpecifier() : "defaulPath") -p1.then(zero => { - return zero.foo(); // ok, zero is any -}); \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionGrammarError.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionGrammarError.ts new file mode 100644 index 00000000000..38dc47f3207 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionGrammarError.ts @@ -0,0 +1,14 @@ +// @module: commonjs +// @target: es6 +// @noImplicitAny: false + +declare function getSpecifier(): string; +declare var whatToLoad: boolean; + +var a = ["./0"]; +import(...["PathModule"]); + +var p1 = import(...a); +const p2 = import(); +const p3 = import(,); +const p4 = import("pathToModule", "secondModule"); \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD2.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD2.ts new file mode 100644 index 00000000000..2f76d0aa267 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD2.ts @@ -0,0 +1,17 @@ +// @module: umd +// @target: esnext +// @filename: 0.ts +export class B { + print() { return "I am B"} +} + +// @filename: 2.ts +// We use Promise for now as there is no way to specify shape of module object +function foo(x: Promise) { + x.then(value => { + let b = new value.B(); + b.print(); + }) +} + +foo(import("./0")); \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD3.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD3.ts new file mode 100644 index 00000000000..58d21ee52d0 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD3.ts @@ -0,0 +1,14 @@ +// @module: umd +// @target: esnext +// @filename: 0.ts +export class B { + print() { return "I am B"} +} + +// @filename: 2.ts +async function foo() { + class C extends (await import("./0")).B {} + var c = new C(); + c.print(); +} +foo(); \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD4.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD4.ts new file mode 100644 index 00000000000..ef0f0999407 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD4.ts @@ -0,0 +1,26 @@ +// @module: umd +// @target: esnext +// @filename: 0.ts +export class B { + print() { return "I am B"} +} + +export function foo() { return "foo" } + +// @filename: 1.ts +export function backup() { return "backup"; } + +// @filename: 2.ts +declare var console: any; +class C { + private myModule = import("./0"); + method() { + this.myModule.then(Zero => { + console.log(Zero.foo()); + }, async err => { + console.log(err); + let one = await import("./1"); + console.log(one.backup()); + }); + } +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnAny1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionNoImplicitAnyError.ts similarity index 100% rename from tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnAny1.ts rename to tests/cases/conformance/es2018/dynamicImport/importCallExpressionNoImplicitAnyError.ts diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts new file mode 100644 index 00000000000..737e2ce42f9 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts @@ -0,0 +1,26 @@ +// @module: commonjs +// @target: es6 +// @noImplicitAny: false + +declare function getSpecifier(): string; +declare var whatToLoad: boolean; +declare const directory: string; +declare const moduleFile: number; + +import(`${directory}\${moduleFile}`); +import(getSpecifier()); +var p1 = import(getSpecifier()); +const p2 = import(whatToLoad ? getSpecifier() : "defaulPath") +p1.then(zero => { + return zero.foo(); // ok, zero is any +}); + +let j: string; +var p3 = import(j=getSpecifier()); + +function * loadModule(directories: string[]) { + for (const directory of directories) { + const path = `${directory}\moduleFile`; + import(yield path); + } +} diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier2.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionSpecifierNotStringTypeError.ts similarity index 79% rename from tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier2.ts rename to tests/cases/conformance/es2018/dynamicImport/importCallExpressionSpecifierNotStringTypeError.ts index 37e3c65be8d..3af0ec89ac2 100644 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier2.ts +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionSpecifierNotStringTypeError.ts @@ -4,10 +4,14 @@ declare function getSpecifier(): boolean; declare var whatToLoad: boolean; + // Error specifier is not assignable to string import(getSpecifier()); var p1 = import(getSpecifier()); const p2 = import(whatToLoad ? getSpecifier() : "defaulPath") p1.then(zero => { return zero.foo(); // ok, zero is any -}); \ No newline at end of file +}); + +var p3 = import(["path1", "path2"]); +var p4 = import(()=>"PathToModule"); \ No newline at end of file