Add tests and update baselines

This commit is contained in:
Kanchalai Tanglertsampan 2017-04-28 16:01:44 -07:00
parent a2d9fd4ac7
commit 1b0d020082
36 changed files with 511 additions and 54 deletions

View File

@ -29,7 +29,8 @@ class C {
exports.C = C;
//// [1.js]
"use strict";
var __resolved = new Promise(function (resolve) { resolve(); });
Object.defineProperty(exports, "__esModule", { value: true });
let p1 = Promise.resolve().then(() => require("./defaultPath"));
let p2 = Promise.resolve().then(() => require("./defaultPath"));
let p3 = Promise.resolve().then(() => require("./defaultPath"));
let p1 = __resolved.then(function () { return require("./defaultPath"); });
let p2 = __resolved.then(function () { return require("./defaultPath"); });
let p3 = __resolved.then(function () { return require("./defaultPath"); });

View File

@ -15,12 +15,13 @@ function returnDynamicLoad(path: string) {
}
//// [importCallExpressionDeclarationEmit1.js]
Promise.resolve().then(() => require(getSpecifier()));
var p0 = Promise.resolve().then(() => require(`${directory}\${moduleFile}`));
var p1 = Promise.resolve().then(() => require(getSpecifier()));
const p2 = Promise.resolve().then(() => require(whatToLoad ? getSpecifier() : "defaulPath"));
var __resolved = new Promise(function (resolve) { resolve(); });
__resolved.then(function () { return require(getSpecifier()); });
var p0 = __resolved.then(function () { return require(`${directory}\${moduleFile}`); });
var p1 = __resolved.then(function () { return require(getSpecifier()); });
const p2 = __resolved.then(function () { return require(whatToLoad ? getSpecifier() : "defaulPath"); });
function returnDynamicLoad(path) {
return Promise.resolve().then(() => require(path));
return __resolved.then(function () { return require(path); });
}

View File

@ -0,0 +1,35 @@
//// [tests/cases/conformance/es2018/dynamicImport/importCallExpressionES5AMD.ts] ////
//// [0.ts]
export function foo() { return "foo"; }
//// [1.ts]
import("./0");
var p1 = import("./0");
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = import("./0");
}
//// [0.js]
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function foo() { return "foo"; }
exports.foo = foo;
});
//// [1.js]
define(["require", "exports"], function (require, exports) {
"use strict";
new Promise(function (_a, _b) { require(["./0"], _a, _b); });
var p1 = new Promise(function (_a, _b) { require(["./0"], _a, _b); });
p1.then(function (zero) {
return zero.foo();
});
function foo() {
var p2 = new Promise(function (_a, _b) { require(["./0"], _a, _b); });
}
});

View File

@ -0,0 +1,28 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : Symbol(foo, Decl(0.ts, 0, 0))
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
var p1 = import("./0");
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
p1.then(zero => {
>p1.then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
>then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
return zero.foo();
>zero.foo : Symbol(foo, Decl(0.ts, 0, 0))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
>foo : Symbol(foo, Decl(0.ts, 0, 0))
});
function foo() {
>foo : Symbol(foo, Decl(1.ts, 4, 3))
const p2 = import("./0");
>p2 : Symbol(p2, Decl(1.ts, 7, 9))
}

View File

@ -0,0 +1,39 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : () => string
>"foo" : "foo"
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
var p1 = import("./0");
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
p1.then(zero => {
>p1.then(zero => { return zero.foo();}) : Promise<string>
>p1.then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>zero => { return zero.foo();} : (zero: typeof "tests/cases/conformance/es2018/dynamicImport/0") => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
return zero.foo();
>zero.foo() : string
>zero.foo : () => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
>foo : () => string
});
function foo() {
>foo : () => void
const p2 = import("./0");
>p2 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
}

View File

@ -0,0 +1,31 @@
//// [tests/cases/conformance/es2018/dynamicImport/importCallExpressionES5CJS.ts] ////
//// [0.ts]
export function foo() { return "foo"; }
//// [1.ts]
import("./0");
var p1 = import("./0");
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = import("./0");
}
//// [0.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function foo() { return "foo"; }
exports.foo = foo;
//// [1.js]
var __resolved = new Promise(function (resolve) { resolve(); });
__resolved.then(function () { return require("./0"); });
var p1 = __resolved.then(function () { return require("./0"); });
p1.then(function (zero) {
return zero.foo();
});
function foo() {
var p2 = __resolved.then(function () { return require("./0"); });
}

View File

@ -0,0 +1,28 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : Symbol(foo, Decl(0.ts, 0, 0))
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
var p1 = import("./0");
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
p1.then(zero => {
>p1.then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
>then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
return zero.foo();
>zero.foo : Symbol(foo, Decl(0.ts, 0, 0))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
>foo : Symbol(foo, Decl(0.ts, 0, 0))
});
function foo() {
>foo : Symbol(foo, Decl(1.ts, 4, 3))
const p2 = import("./0");
>p2 : Symbol(p2, Decl(1.ts, 7, 9))
}

View File

@ -0,0 +1,39 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : () => string
>"foo" : "foo"
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
var p1 = import("./0");
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
p1.then(zero => {
>p1.then(zero => { return zero.foo();}) : Promise<string>
>p1.then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>zero => { return zero.foo();} : (zero: typeof "tests/cases/conformance/es2018/dynamicImport/0") => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
return zero.foo();
>zero.foo() : string
>zero.foo : () => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
>foo : () => string
});
function foo() {
>foo : () => void
const p2 = import("./0");
>p2 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
}

View File

@ -0,0 +1,46 @@
//// [tests/cases/conformance/es2018/dynamicImport/importCallExpressionES5System.ts] ////
//// [0.ts]
export function foo() { return "foo"; }
//// [1.ts]
import("./0");
var p1 = import("./0");
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = import("./0");
}
//// [0.js]
System.register([], function (exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
function foo() { return "foo"; }
exports_1("foo", foo);
return {
setters: [],
execute: function () {
}
};
});
//// [1.js]
System.register([], function (exports_1, context_1) {
var __moduleName = context_1 && context_1.id;
function foo() {
var p2 = context_1.import("./0");
}
var p1;
return {
setters: [],
execute: function () {
context_1.import("./0");
p1 = context_1.import("./0");
p1.then(function (zero) {
return zero.foo();
});
}
};
});

View File

@ -0,0 +1,28 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : Symbol(foo, Decl(0.ts, 0, 0))
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
var p1 = import("./0");
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
p1.then(zero => {
>p1.then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
>then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
return zero.foo();
>zero.foo : Symbol(foo, Decl(0.ts, 0, 0))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
>foo : Symbol(foo, Decl(0.ts, 0, 0))
});
function foo() {
>foo : Symbol(foo, Decl(1.ts, 4, 3))
const p2 = import("./0");
>p2 : Symbol(p2, Decl(1.ts, 7, 9))
}

View File

@ -0,0 +1,39 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : () => string
>"foo" : "foo"
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
var p1 = import("./0");
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
p1.then(zero => {
>p1.then(zero => { return zero.foo();}) : Promise<string>
>p1.then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>zero => { return zero.foo();} : (zero: typeof "tests/cases/conformance/es2018/dynamicImport/0") => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
return zero.foo();
>zero.foo() : string
>zero.foo : () => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
>foo : () => string
});
function foo() {
>foo : () => void
const p2 = import("./0");
>p2 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
}

View File

@ -0,0 +1,53 @@
//// [tests/cases/conformance/es2018/dynamicImport/importCallExpressionES5UMD.ts] ////
//// [0.ts]
export function foo() { return "foo"; }
//// [1.ts]
import("./0");
var p1 = import("./0");
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = import("./0");
}
//// [0.js]
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function foo() { return "foo"; }
exports.foo = foo;
});
//// [1.js]
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
var __resolved = new Promise(function (resolve) { resolve(); });
__syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
var p1 = __syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
p1.then(function (zero) {
return zero.foo();
});
function foo() {
var p2 = __syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
}
});

View File

@ -0,0 +1,28 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : Symbol(foo, Decl(0.ts, 0, 0))
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
var p1 = import("./0");
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
p1.then(zero => {
>p1.then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>p1 : Symbol(p1, Decl(1.ts, 1, 3))
>then : Symbol(Promise.then, Decl(lib.es5.d.ts, --, --))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
return zero.foo();
>zero.foo : Symbol(foo, Decl(0.ts, 0, 0))
>zero : Symbol(zero, Decl(1.ts, 2, 8))
>foo : Symbol(foo, Decl(0.ts, 0, 0))
});
function foo() {
>foo : Symbol(foo, Decl(1.ts, 4, 3))
const p2 = import("./0");
>p2 : Symbol(p2, Decl(1.ts, 7, 9))
}

View File

@ -0,0 +1,39 @@
=== tests/cases/conformance/es2018/dynamicImport/0.ts ===
export function foo() { return "foo"; }
>foo : () => string
>"foo" : "foo"
=== tests/cases/conformance/es2018/dynamicImport/1.ts ===
import("./0");
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
var p1 = import("./0");
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
p1.then(zero => {
>p1.then(zero => { return zero.foo();}) : Promise<string>
>p1.then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>p1 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>then : <TResult1 = typeof "tests/cases/conformance/es2018/dynamicImport/0", TResult2 = never>(onfulfilled?: (value: typeof "tests/cases/conformance/es2018/dynamicImport/0") => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>
>zero => { return zero.foo();} : (zero: typeof "tests/cases/conformance/es2018/dynamicImport/0") => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
return zero.foo();
>zero.foo() : string
>zero.foo : () => string
>zero : typeof "tests/cases/conformance/es2018/dynamicImport/0"
>foo : () => string
});
function foo() {
>foo : () => void
const p2 = import("./0");
>p2 : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>import("./0") : Promise<typeof "tests/cases/conformance/es2018/dynamicImport/0">
>"./0" : "./0"
}

View File

@ -11,9 +11,10 @@ const p3 = import(,);
const p4 = import("pathToModule", "secondModule");
//// [importCallExpressionGrammarError.js]
var __resolved = new Promise(function (resolve) { resolve(); });
var a = ["./0"];
Promise.resolve().then(() => require(...["PathModule"]));
var p1 = Promise.resolve().then(() => require(...a));
const p2 = Promise.resolve().then(() => require());
const p3 = Promise.resolve().then(() => require());
const p4 = Promise.resolve().then(() => require("pathToModule", "secondModule"));
__resolved.then(function () { return require(...["PathModule"]); });
var p1 = __resolved.then(function () { return require(...a); });
const p2 = __resolved.then(function () { return require(); });
const p3 = __resolved.then(function () { return require(); });
const p4 = __resolved.then(function () { return require("pathToModule", "secondModule"); });

View File

@ -24,12 +24,12 @@ define(["require", "exports"], function (require, exports) {
//// [1.js]
define(["require", "exports"], function (require, exports) {
"use strict";
new Promise(resolve => require(["./0"], resolve));
var p1 = new Promise(resolve => require(["./0"], resolve));
new Promise(function (_a, _b) { require(["./0"], _a, _b); });
var p1 = new Promise(function (_a, _b) { require(["./0"], _a, _b); });
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = new Promise(resolve => require(["./0"], resolve));
const p2 = new Promise(function (_a, _b) { require(["./0"], _a, _b); });
}
});

View File

@ -35,5 +35,5 @@ define(["require", "exports"], function (require, exports) {
b.print();
});
}
foo(new Promise(resolve => require(["./0"], resolve)));
foo(new Promise(function (_a, _b) { require(["./0"], _a, _b); }));
});

View File

@ -26,7 +26,7 @@ define(["require", "exports"], function (require, exports) {
define(["require", "exports"], function (require, exports) {
"use strict";
async function foo() {
class C extends (await new Promise(resolve => require(["./0"], resolve))).B {
class C extends (await new Promise(function (_a, _b) { require(["./0"], _a, _b); })).B {
}
var c = new C();
c.print();

View File

@ -48,14 +48,14 @@ define(["require", "exports"], function (require, exports) {
"use strict";
class C {
constructor() {
this.myModule = new Promise(resolve => require(["./0"], resolve));
this.myModule = new Promise(function (_a, _b) { require(["./0"], _a, _b); });
}
method() {
this.myModule.then(Zero => {
console.log(Zero.foo());
}, async (err) => {
console.log(err);
let one = await new Promise(resolve => require(["./1"], resolve));
let one = await new Promise(function (_a, _b) { require(["./1"], _a, _b); });
console.log(one.backup());
});
}

View File

@ -20,11 +20,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
function foo() { return "foo"; }
exports.foo = foo;
//// [1.js]
Promise.resolve().then(() => require("./0"));
var p1 = Promise.resolve().then(() => require("./0"));
var __resolved = new Promise(function (resolve) { resolve(); });
__resolved.then(function () { return require("./0"); });
var p1 = __resolved.then(function () { return require("./0"); });
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = Promise.resolve().then(() => require("./0"));
const p2 = __resolved.then(function () { return require("./0"); });
}

View File

@ -29,12 +29,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
function backup() { return "backup"; }
exports.backup = backup;
//// [2.js]
var __resolved = new Promise(function (resolve) { resolve(); });
async function compute(promise) {
let j = await promise;
if (!j) {
j = await Promise.resolve().then(() => require("./1"));
j = await __resolved.then(function () { return require("./1"); });
return j.backup();
}
return j.foo();
}
compute(Promise.resolve().then(() => require("./0")));
compute(__resolved.then(function () { return require("./0"); }));

View File

@ -24,6 +24,7 @@ class B {
}
exports.B = B;
//// [2.js]
var __resolved = new Promise(function (resolve) { resolve(); });
// We use Promise<any> for now as there is no way to specify shape of module object
function foo(x) {
x.then(value => {
@ -31,4 +32,4 @@ function foo(x) {
b.print();
});
}
foo(Promise.resolve().then(() => require("./0")));
foo(__resolved.then(function () { return require("./0"); }));

View File

@ -21,8 +21,9 @@ class B {
}
exports.B = B;
//// [2.js]
var __resolved = new Promise(function (resolve) { resolve(); });
async function foo() {
class C extends (await Promise.resolve().then(() => require("./0"))).B {
class C extends (await __resolved.then(function () { return require("./0"); })).B {
}
var c = new C();
c.print();

View File

@ -40,16 +40,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
function backup() { return "backup"; }
exports.backup = backup;
//// [2.js]
var __resolved = new Promise(function (resolve) { resolve(); });
class C {
constructor() {
this.myModule = Promise.resolve().then(() => require("./0"));
this.myModule = __resolved.then(function () { return require("./0"); });
}
method() {
this.myModule.then(Zero => {
console.log(Zero.foo());
}, async (err) => {
console.log(err);
let one = await Promise.resolve().then(() => require("./1"));
let one = await __resolved.then(function () { return require("./1"); });
console.log(one.backup());
});
}

View File

@ -13,5 +13,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
function foo() { return "foo"; }
exports.foo = foo;
//// [1.js]
var p1 = Promise.resolve().then(() => require("./0"));
var __resolved = new Promise(function (resolve) { resolve(); });
var p1 = __resolved.then(function () { return require("./0"); });
function arguments() { } // this is allow as the file doesn't have implicit "use strict"

View File

@ -15,5 +15,6 @@ function foo() { return "foo"; }
exports.foo = foo;
//// [1.js]
"use strict";
var p1 = Promise.resolve().then(() => require("./0"));
var __resolved = new Promise(function (resolve) { resolve(); });
var p1 = __resolved.then(function () { return require("./0"); });
function arguments() { }

View File

@ -40,12 +40,14 @@ function foo() {
}
})(function (require, exports) {
"use strict";
require.length === 1 ? Promise.resolve().then(() => require("./0")) : new Promise(resolve => require(["./0"], resolve));
var p1 = require.length === 1 ? Promise.resolve().then(() => require("./0")) : new Promise(resolve => require(["./0"], resolve));
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
var __resolved = new Promise(function (resolve) { resolve(); });
__syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
var p1 = __syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
p1.then(zero => {
return zero.foo();
});
function foo() {
const p2 = require.length === 1 ? Promise.resolve().then(() => require("./0")) : new Promise(resolve => require(["./0"], resolve));
const p2 = __syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
}
});

View File

@ -44,6 +44,8 @@ foo(import("./0"));
}
})(function (require, exports) {
"use strict";
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
var __resolved = new Promise(function (resolve) { resolve(); });
// We use Promise<any> for now as there is no way to specify shape of module object
function foo(x) {
x.then(value => {
@ -51,5 +53,5 @@ foo(import("./0"));
b.print();
});
}
foo(require.length === 1 ? Promise.resolve().then(() => require("./0")) : new Promise(resolve => require(["./0"], resolve)));
foo(__syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); }));
});

View File

@ -41,8 +41,10 @@ foo();
}
})(function (require, exports) {
"use strict";
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
var __resolved = new Promise(function (resolve) { resolve(); });
async function foo() {
class C extends (await (require.length === 1 ? Promise.resolve().then(() => require("./0")) : new Promise(resolve => require(["./0"], resolve)))).B {
class C extends (await (__syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); }))).B {
}
var c = new C();
c.print();

View File

@ -70,16 +70,18 @@ class C {
}
})(function (require, exports) {
"use strict";
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
var __resolved = new Promise(function (resolve) { resolve(); });
class C {
constructor() {
this.myModule = require.length === 1 ? Promise.resolve().then(() => require("./0")) : new Promise(resolve => require(["./0"], resolve));
this.myModule = __syncRequire ? __resolved.then(function () { return require("./0"); }) : new Promise(function (_a, _b) { require(["./0"], _a, _b); });
}
method() {
this.myModule.then(Zero => {
console.log(Zero.foo());
}, async (err) => {
console.log(err);
let one = await (require.length === 1 ? Promise.resolve().then(() => require("./1")) : new Promise(resolve => require(["./1"], resolve)));
let one = await (__syncRequire ? __resolved.then(function () { return require("./1"); }) : new Promise(function (_a, _b) { require(["./1"], _a, _b); }));
console.log(one.backup());
});
}

View File

@ -41,21 +41,22 @@ class C {
exports.C = C;
//// [1.js]
"use strict";
var __resolved = new Promise(function (resolve) { resolve(); });
Object.defineProperty(exports, "__esModule", { value: true });
Promise.resolve().then(() => require(`${directory}\${moduleFile}`));
Promise.resolve().then(() => require(getSpecifier()));
var p1 = Promise.resolve().then(() => require(ValidSomeCondition() ? "./0" : "externalModule"));
var p1 = Promise.resolve().then(() => require(getSpecifier()));
var p11 = Promise.resolve().then(() => require(getSpecifier()));
const p2 = Promise.resolve().then(() => require(whatToLoad ? getSpecifier() : "defaulPath"));
__resolved.then(function () { return require(`${directory}\${moduleFile}`); });
__resolved.then(function () { return require(getSpecifier()); });
var p1 = __resolved.then(function () { return require(ValidSomeCondition() ? "./0" : "externalModule"); });
var p1 = __resolved.then(function () { return require(getSpecifier()); });
var p11 = __resolved.then(function () { return require(getSpecifier()); });
const p2 = __resolved.then(function () { return require(whatToLoad ? getSpecifier() : "defaulPath"); });
p1.then(zero => {
return zero.foo(); // ok, zero is any
});
let j;
var p3 = Promise.resolve().then(() => require(j = getSpecifier()));
var p3 = __resolved.then(function () { return require(j = getSpecifier()); });
function* loadModule(directories) {
for (const directory of directories) {
const path = `${directory}\moduleFile`;
Promise.resolve().then(() => require(yield path));
__resolved.then(function () { return require(yield path); });
}
}

View File

@ -14,12 +14,13 @@ var p3 = import(["path1", "path2"]);
var p4 = import(()=>"PathToModule");
//// [importCallExpressionSpecifierNotStringTypeError.js]
var __resolved = new Promise(function (resolve) { resolve(); });
// Error specifier is not assignable to string
Promise.resolve().then(() => require(getSpecifier()));
var p1 = Promise.resolve().then(() => require(getSpecifier()));
const p2 = Promise.resolve().then(() => require(whatToLoad ? getSpecifier() : "defaulPath"));
__resolved.then(function () { return require(getSpecifier()); });
var p1 = __resolved.then(function () { return require(getSpecifier()); });
const p2 = __resolved.then(function () { return require(whatToLoad ? getSpecifier() : "defaulPath"); });
p1.then(zero => {
return zero.foo(); // ok, zero is any
});
var p3 = Promise.resolve().then(() => require(["path1", "path2"]));
var p4 = Promise.resolve().then(() => require(() => "PathToModule"));
var p3 = __resolved.then(function () { return require(["path1", "path2"]); });
var p4 = __resolved.then(function () { return require(() => "PathToModule"); });

View File

@ -1,5 +1,6 @@
// @module: amd
// @target: es5
// @lib: es6
// @filename: 0.ts
export function foo() { return "foo"; }

View File

@ -1,5 +1,6 @@
// @module: commonjs
// @target: esnext
// @target: es5
// @lib: es6
// @filename: 0.ts
export function foo() { return "foo"; }

View File

@ -1,5 +1,6 @@
// @module: system
// @target: esnext
// @target: es5
// @lib: es6
// @filename: 0.ts
export function foo() { return "foo"; }

View File

@ -1,5 +1,6 @@
// @module: umd
// @target: esnext
// @target: es5
// @lib: es6
// @filename: 0.ts
export function foo() { return "foo"; }