Skip to content

Commit fcf2850

Browse files
authored
Fix overzealous renaming of emit helpers in es module emit (#36541)
1 parent 24d8f79 commit fcf2850

10 files changed

+237
-1
lines changed

src/compiler/transformers/module/esnextAnd2015.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ namespace ts {
105105
*/
106106
function onEmitNode(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void {
107107
if (isSourceFile(node)) {
108-
helperNameSubstitutions = createMap<Identifier>();
108+
if ((isExternalModule(node) || compilerOptions.isolatedModules) && compilerOptions.importHelpers) {
109+
helperNameSubstitutions = createMap<Identifier>();
110+
}
109111
previousOnEmitNode(hint, node, emitCallback);
110112
helperNameSubstitutions = undefined;
111113
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15+
return c > 3 && r && Object.defineProperty(target, key, r), r;
16+
};
17+
define(["require", "exports"], function (require, exports) {
18+
"use strict";
19+
Object.defineProperty(exports, "__esModule", { value: true });
20+
let A = class A {
21+
};
22+
A = __decorate([
23+
dec
24+
], A);
25+
exports.A = A;
26+
const o = { a: 1 };
27+
const y = Object.assign({}, o);
28+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
"use strict";
12+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16+
return c > 3 && r && Object.defineProperty(target, key, r), r;
17+
};
18+
Object.defineProperty(exports, "__esModule", { value: true });
19+
let A = class A {
20+
};
21+
A = __decorate([
22+
dec
23+
], A);
24+
exports.A = A;
25+
const o = { a: 1 };
26+
const y = Object.assign({}, o);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15+
return c > 3 && r && Object.defineProperty(target, key, r), r;
16+
};
17+
let A = class A {
18+
};
19+
A = __decorate([
20+
dec
21+
], A);
22+
export { A };
23+
const o = { a: 1 };
24+
const y = Object.assign({}, o);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15+
return c > 3 && r && Object.defineProperty(target, key, r), r;
16+
};
17+
let A = class A {
18+
};
19+
A = __decorate([
20+
dec
21+
], A);
22+
export { A };
23+
const o = { a: 1 };
24+
const y = Object.assign({}, o);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15+
return c > 3 && r && Object.defineProperty(target, key, r), r;
16+
};
17+
let A = class A {
18+
};
19+
A = __decorate([
20+
dec
21+
], A);
22+
export { A };
23+
const o = { a: 1 };
24+
const y = Object.assign({}, o);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
"use strict";
12+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16+
return c > 3 && r && Object.defineProperty(target, key, r), r;
17+
};
18+
Object.defineProperty(exports, "__esModule", { value: true });
19+
let A = class A {
20+
};
21+
A = __decorate([
22+
dec
23+
], A);
24+
exports.A = A;
25+
const o = { a: 1 };
26+
const y = Object.assign({}, o);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
System.register([], function (exports_1, context_1) {
12+
"use strict";
13+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
14+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17+
return c > 3 && r && Object.defineProperty(target, key, r), r;
18+
};
19+
var A, o, y;
20+
var __moduleName = context_1 && context_1.id;
21+
return {
22+
setters: [],
23+
execute: function () {
24+
A = class A {
25+
};
26+
A = __decorate([
27+
dec
28+
], A);
29+
exports_1("A", A);
30+
o = { a: 1 };
31+
y = Object.assign({}, o);
32+
}
33+
};
34+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//// [a.ts]
2+
declare var dec: any, __decorate: any;
3+
@dec export class A {
4+
}
5+
6+
const o = { a: 1 };
7+
const y = { ...o };
8+
9+
10+
//// [a.js]
11+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15+
return c > 3 && r && Object.defineProperty(target, key, r), r;
16+
};
17+
(function (factory) {
18+
if (typeof module === "object" && typeof module.exports === "object") {
19+
var v = factory(require, exports);
20+
if (v !== undefined) module.exports = v;
21+
}
22+
else if (typeof define === "function" && define.amd) {
23+
define(["require", "exports"], factory);
24+
}
25+
})(function (require, exports) {
26+
"use strict";
27+
Object.defineProperty(exports, "__esModule", { value: true });
28+
let A = class A {
29+
};
30+
A = __decorate([
31+
dec
32+
], A);
33+
exports.A = A;
34+
const o = { a: 1 };
35+
const y = Object.assign({}, o);
36+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// @target: es6
2+
// @module: *
3+
// @moduleResolution: classic
4+
// @experimentalDecorators: true
5+
// @filename: a.ts
6+
// @noTypesAndSymbols: true
7+
declare var dec: any, __decorate: any;
8+
@dec export class A {
9+
}
10+
11+
const o = { a: 1 };
12+
const y = { ...o };

0 commit comments

Comments
 (0)