Skip to content

Commit 5eda842

Browse files
authored
Stage 3 Decorators normative changes (microsoft#56955)
1 parent b2c6a56 commit 5eda842

File tree

74 files changed

+1532
-1105
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1532
-1105
lines changed

src/compiler/transformers/esDecorators.ts

Lines changed: 205 additions & 99 deletions
Large diffs are not rendered by default.

src/testRunner/unittests/evaluation/esDecorators.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2183,24 +2183,25 @@ describe("unittests:: evaluation:: esDecorators", () => {
21832183
"static method extra initializer evaluation 2b",
21842184
"static method extra initializer evaluation 1a",
21852185
"static method extra initializer evaluation 1b",
2186-
"static auto-accessor extra initializer evaluation 2a",
2187-
"static auto-accessor extra initializer evaluation 2b",
2188-
"static auto-accessor extra initializer evaluation 1a",
2189-
"static auto-accessor extra initializer evaluation 1b",
2190-
"static field extra initializer evaluation 2a",
2191-
"static field extra initializer evaluation 2b",
2192-
"static field extra initializer evaluation 1a",
2193-
"static field extra initializer evaluation 1b",
21942186

21952187
// next, static initializers (i.e., fields, auto-accessors, and static blocks) are evaluated in document
21962188
// order and applied to the replacement class:
21972189
"static block evaluation",
21982190
"static field initializer evaluation",
21992191
"static field injected initializer evaluation 1",
22002192
"static field injected initializer evaluation 2",
2193+
"static field extra initializer evaluation 2a",
2194+
"static field extra initializer evaluation 2b",
2195+
"static field extra initializer evaluation 1a",
2196+
"static field extra initializer evaluation 1b",
2197+
22012198
"static auto-accessor initializer evaluation",
22022199
"static auto-accessor injected initializer evaluation 1",
22032200
"static auto-accessor injected initializer evaluation 2",
2201+
"static auto-accessor extra initializer evaluation 2a",
2202+
"static auto-accessor extra initializer evaluation 2b",
2203+
"static auto-accessor extra initializer evaluation 1a",
2204+
"static auto-accessor extra initializer evaluation 1b",
22042205
// NOTE: at this point, static private fields will be installed (TODO: on the replacement class)
22052206

22062207
// finally, class extra initializers are applied in the order they were added (i.e., methods before fields,
@@ -2230,23 +2231,23 @@ describe("unittests:: evaluation:: esDecorators", () => {
22302231
"instance method extra initializer evaluation 2b",
22312232
"instance method extra initializer evaluation 1a",
22322233
"instance method extra initializer evaluation 1b",
2233-
"instance auto-accessor extra initializer evaluation 2a",
2234-
"instance auto-accessor extra initializer evaluation 2b",
2235-
"instance auto-accessor extra initializer evaluation 1a",
2236-
"instance auto-accessor extra initializer evaluation 1b",
2237-
"instance field extra initializer evaluation 2a",
2238-
"instance field extra initializer evaluation 2b",
2239-
"instance field extra initializer evaluation 1a",
2240-
"instance field extra initializer evaluation 1b",
22412234

22422235
// next, instance initializers (i.e., fields, auto-accessors, and static blocks) are evaluated in document
22432236
// order:
22442237
"instance field initializer evaluation",
22452238
"instance field injected initializer evaluation 1",
22462239
"instance field injected initializer evaluation 2",
2240+
"instance field extra initializer evaluation 2a",
2241+
"instance field extra initializer evaluation 2b",
2242+
"instance field extra initializer evaluation 1a",
2243+
"instance field extra initializer evaluation 1b",
22472244
"instance auto-accessor initializer evaluation",
22482245
"instance auto-accessor injected initializer evaluation 1",
22492246
"instance auto-accessor injected initializer evaluation 2",
2247+
"instance auto-accessor extra initializer evaluation 2a",
2248+
"instance auto-accessor extra initializer evaluation 2b",
2249+
"instance auto-accessor extra initializer evaluation 1a",
2250+
"instance auto-accessor extra initializer evaluation 1b",
22502251
// NOTE: at this point, instance private fields will be installed.
22512252

22522253
// finally, statements in the constructor after the call to `super()` are evaluated:

tests/baselines/reference/esDecorators-classDeclaration-commentPreservation(module=commonjs,target=es2015).js

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -137,22 +137,21 @@ let C = (() => {
137137
let _static_private_set_x_descriptor;
138138
let _static_private_y_decorators;
139139
let _static_private_y_initializers = [];
140+
let _static_private_y_extraInitializers = [];
140141
let _static_private_z_decorators;
141142
let _static_private_z_initializers = [];
143+
let _static_private_z_extraInitializers = [];
142144
let _static_private_z_descriptor;
143145
let _method_decorators;
144146
let _get_x_decorators;
145147
let _set_x_decorators;
146148
let _y_decorators;
147149
let _y_initializers = [];
150+
let _y_extraInitializers = [];
148151
let _z_decorators;
149152
let _z_initializers = [];
153+
let _z_extraInitializers = [];
150154
var C = _classThis = class {
151-
constructor() {
152-
/*13*/
153-
this.y = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _y_initializers, 1));
154-
_C_z_1_accessor_storage.set(this, __runInitializers(this, _z_initializers, 1));
155-
}
156155
/*4*/
157156
method() { }
158157
/*7*/
@@ -162,6 +161,12 @@ let C = (() => {
162161
/*16*/
163162
get z() { return __classPrivateFieldGet(this, _C_z_1_accessor_storage, "f"); }
164163
set z(value) { __classPrivateFieldSet(this, _C_z_1_accessor_storage, value, "f"); }
164+
constructor() {
165+
/*13*/
166+
this.y = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _y_initializers, 1));
167+
_C_z_1_accessor_storage.set(this, (__runInitializers(this, _y_extraInitializers), __runInitializers(this, _z_initializers, 1)));
168+
__runInitializers(this, _z_extraInitializers);
169+
}
165170
};
166171
_C_z_1_accessor_storage = new WeakMap();
167172
_C_method_get = function _C_method_get() { return _static_private_method_descriptor.value; };
@@ -185,22 +190,22 @@ let C = (() => {
185190
__esDecorate(_classThis, _static_private_method_descriptor = { value: __setFunctionName(function () { }, "#method") }, _static_private_method_decorators, { kind: "method", name: "#method", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), get: obj => __classPrivateFieldGet(obj, _classThis, "a", _C_method_get) }, metadata: _metadata }, null, _staticExtraInitializers);
186191
__esDecorate(_classThis, _static_private_get_x_descriptor = { get: __setFunctionName(function () { return 1; }, "#x", "get") }, _static_private_get_x_decorators, { kind: "getter", name: "#x", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), get: obj => __classPrivateFieldGet(obj, _classThis, "a", _C_x_get) }, metadata: _metadata }, null, _staticExtraInitializers);
187192
__esDecorate(_classThis, _static_private_set_x_descriptor = { set: __setFunctionName(function (value) { }, "#x", "set") }, _static_private_set_x_decorators, { kind: "setter", name: "#x", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), set: (obj, value) => { __classPrivateFieldSet(obj, _classThis, value, "a", _C_x_set); } }, metadata: _metadata }, null, _staticExtraInitializers);
188-
__esDecorate(_classThis, _static_private_z_descriptor = { get: __setFunctionName(function () { return __classPrivateFieldGet(_classThis, _classThis, "f", _C_z_accessor_storage); }, "#z", "get"), set: __setFunctionName(function (value) { __classPrivateFieldSet(_classThis, _classThis, value, "f", _C_z_accessor_storage); }, "#z", "set") }, _static_private_z_decorators, { kind: "accessor", name: "#z", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), get: obj => __classPrivateFieldGet(obj, _classThis, "a", _C_z_get), set: (obj, value) => { __classPrivateFieldSet(obj, _classThis, value, "a", _C_z_set); } }, metadata: _metadata }, _static_private_z_initializers, _staticExtraInitializers);
193+
__esDecorate(_classThis, _static_private_z_descriptor = { get: __setFunctionName(function () { return __classPrivateFieldGet(_classThis, _classThis, "f", _C_z_accessor_storage); }, "#z", "get"), set: __setFunctionName(function (value) { __classPrivateFieldSet(_classThis, _classThis, value, "f", _C_z_accessor_storage); }, "#z", "set") }, _static_private_z_decorators, { kind: "accessor", name: "#z", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), get: obj => __classPrivateFieldGet(obj, _classThis, "a", _C_z_get), set: (obj, value) => { __classPrivateFieldSet(obj, _classThis, value, "a", _C_z_set); } }, metadata: _metadata }, _static_private_z_initializers, _static_private_z_extraInitializers);
189194
__esDecorate(_classThis, null, _method_decorators, { kind: "method", name: "method", static: false, private: false, access: { has: obj => "method" in obj, get: obj => obj.method }, metadata: _metadata }, null, _instanceExtraInitializers);
190195
__esDecorate(_classThis, null, _get_x_decorators, { kind: "getter", name: "x", static: false, private: false, access: { has: obj => "x" in obj, get: obj => obj.x }, metadata: _metadata }, null, _instanceExtraInitializers);
191196
__esDecorate(_classThis, null, _set_x_decorators, { kind: "setter", name: "x", static: false, private: false, access: { has: obj => "x" in obj, set: (obj, value) => { obj.x = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
192-
__esDecorate(_classThis, null, _z_decorators, { kind: "accessor", name: "z", static: false, private: false, access: { has: obj => "z" in obj, get: obj => obj.z, set: (obj, value) => { obj.z = value; } }, metadata: _metadata }, _z_initializers, _instanceExtraInitializers);
193-
__esDecorate(null, null, _static_private_y_decorators, { kind: "field", name: "#y", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), get: obj => __classPrivateFieldGet(obj, _classThis, "f", _C_y), set: (obj, value) => { __classPrivateFieldSet(obj, _classThis, value, "f", _C_y); } }, metadata: _metadata }, _static_private_y_initializers, _staticExtraInitializers);
194-
__esDecorate(null, null, _y_decorators, { kind: "field", name: "y", static: false, private: false, access: { has: obj => "y" in obj, get: obj => obj.y, set: (obj, value) => { obj.y = value; } }, metadata: _metadata }, _y_initializers, _instanceExtraInitializers);
197+
__esDecorate(_classThis, null, _z_decorators, { kind: "accessor", name: "z", static: false, private: false, access: { has: obj => "z" in obj, get: obj => obj.z, set: (obj, value) => { obj.z = value; } }, metadata: _metadata }, _z_initializers, _z_extraInitializers);
198+
__esDecorate(null, null, _static_private_y_decorators, { kind: "field", name: "#y", static: true, private: true, access: { has: obj => __classPrivateFieldIn(_classThis, obj), get: obj => __classPrivateFieldGet(obj, _classThis, "f", _C_y), set: (obj, value) => { __classPrivateFieldSet(obj, _classThis, value, "f", _C_y); } }, metadata: _metadata }, _static_private_y_initializers, _static_private_y_extraInitializers);
199+
__esDecorate(null, null, _y_decorators, { kind: "field", name: "y", static: false, private: false, access: { has: obj => "y" in obj, get: obj => obj.y, set: (obj, value) => { obj.y = value; } }, metadata: _metadata }, _y_initializers, _y_extraInitializers);
195200
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
196201
C = _classThis = _classDescriptor.value;
197202
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
198-
__runInitializers(_classThis, _staticExtraInitializers);
199203
})();
200204
/*28*/
201-
_C_y = { value: __runInitializers(_classThis, _static_private_y_initializers, 1) };
202-
_C_z_accessor_storage = { value: __runInitializers(_classThis, _static_private_z_initializers, 1) };
205+
_C_y = { value: (__runInitializers(_classThis, _staticExtraInitializers), __runInitializers(_classThis, _static_private_y_initializers, 1)) };
206+
_C_z_accessor_storage = { value: (__runInitializers(_classThis, _static_private_y_extraInitializers), __runInitializers(_classThis, _static_private_z_initializers, 1)) };
203207
(() => {
208+
__runInitializers(_classThis, _static_private_z_extraInitializers);
204209
__runInitializers(_classThis, _classExtraInitializers);
205210
})();
206211
return C = _classThis;

0 commit comments

Comments
 (0)