use modulekind to check if initializer for shorthand property assignment should be emitted

This commit is contained in:
Vladimir Matveev 2015-11-09 13:34:30 -08:00
parent a4d10bd777
commit 6f08e89455
4 changed files with 61 additions and 1 deletions

View file

@ -2461,7 +2461,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
// let obj = { y };
// }
// Here we need to emit obj = { y : m.y } regardless of the output target.
if (languageVersion < ScriptTarget.ES6 || isNamespaceExportReference(node.name)) {
if (modulekind !== ModuleKind.ES6 || isNamespaceExportReference(node.name)) {
// Emit identifier as an identifier
write(": ");
emit(node.name);

View file

@ -0,0 +1,23 @@
tests/cases/compiler/test.ts(2,19): error TS2307: Cannot find module './foo2'.
tests/cases/compiler/test.ts(6,1): error TS2304: Cannot find name 'console'.
tests/cases/compiler/test.ts(7,1): error TS2304: Cannot find name 'console'.
==== tests/cases/compiler/foo1.ts (0 errors) ====
export var x = 1;
==== tests/cases/compiler/test.ts (3 errors) ====
import {x} from './foo1';
import {foo} from './foo2';
~~~~~~~~
!!! error TS2307: Cannot find module './foo2'.
const test = { x, foo };
console.log(x);
~~~~~~~
!!! error TS2304: Cannot find name 'console'.
console.log(foo);
~~~~~~~
!!! error TS2304: Cannot find name 'console'.

View file

@ -0,0 +1,23 @@
//// [tests/cases/compiler/shorthandPropertyAssignmentInES6Module.ts] ////
//// [foo1.ts]
export var x = 1;
//// [test.ts]
import {x} from './foo1';
import {foo} from './foo2';
const test = { x, foo };
console.log(x);
console.log(foo);
//// [foo1.js]
exports.x = 1;
//// [test.js]
var foo1_1 = require('./foo1');
var foo2_1 = require('./foo2');
const test = { x: foo1_1.x, foo: foo2_1.foo };
console.log(foo1_1.x);
console.log(foo2_1.foo);

View file

@ -0,0 +1,14 @@
// @target: ES6
// @module: commonjs
// @filename: foo1.ts
export var x = 1;
// @filename: test.ts
import {x} from './foo1';
import {foo} from './foo2';
const test = { x, foo };
console.log(x);
console.log(foo);