-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Closed
Description
TypeScript Version: 2.4.1
Code
filename: test.ts
export async function fn() {
const req = await import('./test') // ONE
}
export class cl1 {
public async m() {
const req = await import('./test') // TWO
}
}
export const obj = {
m: async () => {
const req = await import('./test') // THREE
}
}
export class cl2 {
public p = {
m: async () => {
const req = await import('./test') // FOUR
}
}
}
export const l = async () => {
const req = await import('./test') // FIVE
}
Command Line
tsc test.ts -t es6 -m commonjs
Expected behavior:
All dynamic imports should be converted to es6+commonjs compatible wrapped require
s
Actual behavior:
Import ONE
, THREE
and FIVE
are transpiled successfully, but imports TWO
and FOUR
are left as import
statements.
It looks like a problem with transpiling imports within class definitions themselves.
Output js:
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
function fn() {
return __awaiter(this, void 0, void 0, function* () {
const req = yield Promise.resolve().then(function () { return require('./test'); }); // ONE
});
}
exports.fn = fn;
class cl1 {
m() {
return __awaiter(this, void 0, void 0, function* () {
const req = yield import('./test'); // TWO
});
}
}
exports.cl1 = cl1;
exports.obj = {
m: () => __awaiter(this, void 0, void 0, function* () {
const req = yield Promise.resolve().then(function () { return require('./test'); }); // THREE
})
};
class cl2 {
constructor() {
this.p = {
m: () => __awaiter(this, void 0, void 0, function* () {
const req = yield import('./test'); // FOUR
})
};
}
}
exports.cl2 = cl2;
exports.l = () => __awaiter(this, void 0, void 0, function* () {
const req = yield Promise.resolve().then(function () { return require('./test'); }); // FIVE
});
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScript