Fix shorthand properties for non-es6 module formats
This commit is contained in:
parent
cc57ae0205
commit
d742ca50f4
|
@ -379,6 +379,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
const compilerOptions = host.getCompilerOptions();
|
const compilerOptions = host.getCompilerOptions();
|
||||||
const languageVersion = getEmitScriptTarget(compilerOptions);
|
const languageVersion = getEmitScriptTarget(compilerOptions);
|
||||||
const modulekind = getEmitModuleKind(compilerOptions);
|
const modulekind = getEmitModuleKind(compilerOptions);
|
||||||
|
const hasIndirectAccessToImportedIdentifiers = modulekind !== ModuleKind.ES6 && modulekind !== ModuleKind.System;
|
||||||
const sourceMapDataList: SourceMapData[] = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined;
|
const sourceMapDataList: SourceMapData[] = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined;
|
||||||
const emitterDiagnostics = createDiagnosticCollection();
|
const emitterDiagnostics = createDiagnosticCollection();
|
||||||
let emitSkipped = false;
|
let emitSkipped = false;
|
||||||
|
@ -1575,7 +1576,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
if (container) {
|
if (container) {
|
||||||
if (container.kind === SyntaxKind.SourceFile) {
|
if (container.kind === SyntaxKind.SourceFile) {
|
||||||
// Identifier references module export
|
// Identifier references module export
|
||||||
if (modulekind !== ModuleKind.ES6 && modulekind !== ModuleKind.System) {
|
if (hasIndirectAccessToImportedIdentifiers) {
|
||||||
write("exports.");
|
write("exports.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2138,6 +2139,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
return container && container.kind !== SyntaxKind.SourceFile;
|
return container && container.kind !== SyntaxKind.SourceFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return true if identifier resolves to an imported identifier
|
||||||
|
function isImportedReference(node: Identifier) {
|
||||||
|
const declaration = resolver.getReferencedImportDeclaration(node);
|
||||||
|
return declaration && (declaration.kind === SyntaxKind.ImportClause || declaration.kind === SyntaxKind.ImportSpecifier);
|
||||||
|
}
|
||||||
|
|
||||||
function emitShorthandPropertyAssignment(node: ShorthandPropertyAssignment) {
|
function emitShorthandPropertyAssignment(node: ShorthandPropertyAssignment) {
|
||||||
// The name property of a short-hand property assignment is considered an expression position, so here
|
// The name property of a short-hand property assignment is considered an expression position, so here
|
||||||
// we manually emit the identifier to avoid rewriting.
|
// we manually emit the identifier to avoid rewriting.
|
||||||
|
@ -2151,7 +2158,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
// let obj = { y };
|
// let obj = { y };
|
||||||
// }
|
// }
|
||||||
// Here we need to emit obj = { y : m.y } regardless of the output target.
|
// Here we need to emit obj = { y : m.y } regardless of the output target.
|
||||||
if (modulekind !== ModuleKind.ES6 || isNamespaceExportReference(node.name)) {
|
// The same rules apply for imported identifiers when targeting module formats with indirect access to
|
||||||
|
// the imported identifiers. For example, when targeting CommonJS:
|
||||||
|
//
|
||||||
|
// import {foo} from './foo';
|
||||||
|
// export const baz = { foo };
|
||||||
|
//
|
||||||
|
// Must be transformed into:
|
||||||
|
//
|
||||||
|
// const foo_1 = require('./foo');
|
||||||
|
// exports.baz = { foo: foo_1.foo };
|
||||||
|
//
|
||||||
|
if (languageVersion < ScriptTarget.ES6 || (hasIndirectAccessToImportedIdentifiers && isImportedReference(node.name)) || isNamespaceExportReference(node.name) ) {
|
||||||
// Emit identifier as an identifier
|
// Emit identifier as an identifier
|
||||||
write(": ");
|
write(": ");
|
||||||
emit(node.name);
|
emit(node.name);
|
||||||
|
|
Loading…
Reference in a new issue