From 15ca0af646e8273dfae4498f348b19457e37704a Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Tue, 21 Mar 2017 15:08:15 -0700 Subject: [PATCH] Add tests --- .../importCallExpression1ES2018.ts | 6 ++++- .../importCallExpressionCheckSpecifier1.ts | 12 +++++++++ .../importCallExpressionCheckSpecifier2.ts | 13 ++++++++++ .../importCallExpressionErrorInES2015.ts | 15 +++++++++++ .../importCallExpressionInAMD1.ts | 6 ++++- .../importCallExpressionInAMD2.ts | 17 ++++++++++++ .../importCallExpressionInAMD3.ts | 14 ++++++++++ .../importCallExpressionInAMD4.ts | 26 +++++++++++++++++++ .../importCallExpressionInCJS1.ts | 6 ++++- .../importCallExpressionInSystem1.ts | 15 +++++++++++ .../importCallExpressionInSystem2.ts | 17 ++++++++++++ .../importCallExpressionInSystem3.ts | 14 ++++++++++ .../importCallExpressionInSystem4.ts | 26 +++++++++++++++++++ .../importCallExpressionInUMD1.ts | 6 ++++- .../importCallExpressionReturnAny1.ts | 12 +++++++++ 15 files changed, 201 insertions(+), 4 deletions(-) create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier2.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionErrorInES2015.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD2.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD3.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD4.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem1.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem2.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem3.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem4.ts create mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnAny1.ts diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpression1ES2018.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpression1ES2018.ts index f0fd00f9c79..f7abb325d99 100644 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpression1ES2018.ts +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpression1ES2018.ts @@ -8,4 +8,8 @@ import("./0"); var p1 = import("./0"); p1.then(zero => { return zero.foo(); -}) \ No newline at end of file +}) + +function foo() { + const p2 = import("./0"); +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts new file mode 100644 index 00000000000..e4de1109b1a --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier1.ts @@ -0,0 +1,12 @@ +// @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/importCallExpressionCheckSpecifier2.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier2.ts new file mode 100644 index 00000000000..37e3c65be8d --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionCheckSpecifier2.ts @@ -0,0 +1,13 @@ +// @module: commonjs +// @target: es6 +// @noImplicitAny: false + +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 diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionErrorInES2015.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionErrorInES2015.ts new file mode 100644 index 00000000000..a7fcd8533a3 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionErrorInES2015.ts @@ -0,0 +1,15 @@ +// @module: es2015 +// @target: esnext +// @filename: 0.ts +export function foo() { return "foo"; } + +// @filename: 1.ts +import("./0"); +var p1 = import("./0"); +p1.then(zero => { + return zero.foo(); +}) + +function foo() { + const p2 = import("./0"); +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD1.ts index 28d3ca8a044..63cfc54c732 100644 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD1.ts +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD1.ts @@ -8,4 +8,8 @@ import("./0"); var p1 = import("./0"); p1.then(zero => { return zero.foo(); -}); \ No newline at end of file +}); + +function foo() { + const p2 = import("./0"); +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD2.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD2.ts new file mode 100644 index 00000000000..96b2fd4ceff --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD2.ts @@ -0,0 +1,17 @@ +// @module: amd +// @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/importCallExpressionInAMD3.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD3.ts new file mode 100644 index 00000000000..a2b287b4d95 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD3.ts @@ -0,0 +1,14 @@ +// @module: amd +// @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/importCallExpressionInAMD4.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD4.ts new file mode 100644 index 00000000000..10044ab674c --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInAMD4.ts @@ -0,0 +1,26 @@ +// @module: amd +// @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/importCallExpressionInCJS1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInCJS1.ts index 9287e8462e9..e1457017552 100644 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInCJS1.ts +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInCJS1.ts @@ -8,4 +8,8 @@ import("./0"); var p1 = import("./0"); p1.then(zero => { return zero.foo(); -}); \ No newline at end of file +}); + +function foo() { + const p2 = import("./0"); +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem1.ts new file mode 100644 index 00000000000..a69e844c7a7 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem1.ts @@ -0,0 +1,15 @@ +// @module: system +// @target: esnext +// @filename: 0.ts +export function foo() { return "foo"; } + +// @filename: 1.ts +import("./0"); +var p1 = import("./0"); +p1.then(zero => { + return zero.foo(); +}); + +function foo() { + const p2 = import("./0"); +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem2.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem2.ts new file mode 100644 index 00000000000..c6fac3683ee --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem2.ts @@ -0,0 +1,17 @@ +// @module: system +// @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/importCallExpressionInSystem3.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem3.ts new file mode 100644 index 00000000000..7f4485d8962 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem3.ts @@ -0,0 +1,14 @@ +// @module: system +// @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/importCallExpressionInSystem4.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem4.ts new file mode 100644 index 00000000000..1ab3040862c --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInSystem4.ts @@ -0,0 +1,26 @@ +// @module: system +// @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/importCallExpressionInUMD1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD1.ts index 73793673c22..05c4d699104 100644 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD1.ts +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionInUMD1.ts @@ -8,4 +8,8 @@ import("./0"); var p1 = import("./0"); p1.then(zero => { return zero.foo(); -}); \ No newline at end of file +}); + +function foo() { + const p2 = import("./0"); +} \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnAny1.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnAny1.ts new file mode 100644 index 00000000000..01f3b3c9281 --- /dev/null +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnAny1.ts @@ -0,0 +1,12 @@ +// @module: es2018 +// @target: esnext +// @filename: 0.ts +// @noImplicitAny: true + +// @filename: 1.ts +declare function ValidSomeCondition(): boolean; +import(ValidSomeCondition() ? "./0" : "externalModule"); // implicit any error +var p1 = import(ValidSomeCondition() ? "./0" : "externalModule"); // implicit any error +p1.then(zero => { + return zero.foo(); // ok +}); \ No newline at end of file