Skip to content

Commit 706b5a1

Browse files
committed
Updated emit for __decorator and __metadata helpers
1 parent f1392ad commit 706b5a1

40 files changed

+283
-242
lines changed

src/compiler/emitter.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ var __extends = this.__extends || function (d, b) {
3434

3535
// emit output for the __decorate helper function
3636
const decorateHelper = `
37-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
37+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
38+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
3839
switch (arguments.length) {
3940
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
4041
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);
@@ -44,7 +45,9 @@ var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.deco
4445

4546
// emit output for the __metadata helper function
4647
const metadataHelper = `
47-
var __metadata = this.__metadata || (typeof Reflect === "object" && Reflect.metadata) || function () { };`;
48+
var __metadata = this.__metadata || function (k, v) {
49+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
50+
};`;
4851

4952
// emit output for the __param helper function
5053
const paramHelper = `

tests/baselines/reference/classExpressionWithDecorator1.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
var v = @decorate class C { static p = 1 };
33

44
//// [classExpressionWithDecorator1.js]
5-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
5+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
6+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
67
switch (arguments.length) {
78
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
89
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratedClassFromExternalModule.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ export default class Decorated { }
1010
import Decorated from 'decorated';
1111

1212
//// [decorated.js]
13-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
13+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
14+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1415
switch (arguments.length) {
1516
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1617
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClass1.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class C {
66
}
77

88
//// [decoratorOnClass1.js]
9-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
9+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
10+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1011
switch (arguments.length) {
1112
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1213
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClass2.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ export class C {
66
}
77

88
//// [decoratorOnClass2.js]
9-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
9+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
10+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1011
switch (arguments.length) {
1112
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1213
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClass3.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ class C {
77
}
88

99
//// [decoratorOnClass3.js]
10-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
10+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
11+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1112
switch (arguments.length) {
1213
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1314
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClass4.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class C {
66
}
77

88
//// [decoratorOnClass4.js]
9-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
9+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
10+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1011
switch (arguments.length) {
1112
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1213
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClass5.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class C {
66
}
77

88
//// [decoratorOnClass5.js]
9-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
9+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
10+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1011
switch (arguments.length) {
1112
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1213
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClass8.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class C {
66
}
77

88
//// [decoratorOnClass8.js]
9-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
9+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
10+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1011
switch (arguments.length) {
1112
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1213
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

tests/baselines/reference/decoratorOnClassAccessor1.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class C {
66
}
77

88
//// [decoratorOnClassAccessor1.js]
9-
var __decorate = this.__decorate || (typeof Reflect === "object" && Reflect.decorate) || function (decorators, target, key, desc) {
9+
var __decorate = this.__decorate || function (decorators, target, key, desc) {
10+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
1011
switch (arguments.length) {
1112
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
1213
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);

0 commit comments

Comments
 (0)