-
-
Notifications
You must be signed in to change notification settings - Fork 490
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(transformer/class-properties): create temp var for class where required #7516
fix(transformer/class-properties): create temp var for class where required #7516
Conversation
Your org has enabled the Graphite merge queue for merging into mainAdd the label “0-merge” to the PR and Graphite will automatically add it to the merge queue when it’s ready to merge. Or use the label “hotfix” to add to the merge queue as a hot fix. You must have a Graphite account and log in to Graphite in order to use the merge queue. Sign up using this link. |
d7f5fd1
to
32d3ca9
Compare
CodSpeed Performance ReportMerging #7516 will not alter performanceComparing Summary
|
d77528d
to
2ea88cf
Compare
32d3ca9
to
afcf033
Compare
2ea88cf
to
6b7c4f5
Compare
afcf033
to
0727af9
Compare
6b7c4f5
to
2509562
Compare
0727af9
to
0036051
Compare
2509562
to
2728d4b
Compare
33e0cfc
to
7b1b1df
Compare
2728d4b
to
0282aa3
Compare
1ce483f
to
5c867b5
Compare
0282aa3
to
b9200ad
Compare
c594277
to
0bb0da9
Compare
0bb0da9
to
29fed4e
Compare
3547117
to
1a33bd2
Compare
efb778a
to
66dc1b0
Compare
Merge activity
|
…quired (#7516) Fix class properties transform to create a temp var for class when it's required. Input: ```js class C { static getSelf = () => this; } const C2 = C; C = 123; assert(C2.getSelf() === C); ``` Output: ```js var _C; class C {} _C = C; _defineProperty(C, "getSelf", () => _C); const C2 = C; C = 123; assert(C2.getSelf() === C); ``` Previously, temp var wasn't used so code was `_defineProperty(C, "getSelf", () => C);`. `C` is altered later by `C = 123`, so `C2.getSelf()` returned `123`, instead of reference to the class. The logic around when a temp var is required and when it's not, and when/where it's referenced is ridiculously complicated. So add some debug assert mechanisms to double-check the logic.
1a33bd2
to
a07f278
Compare
66dc1b0
to
0eadd9f
Compare
#7516 removed the need for a special method to handle `export default class {}`. Delete it.
…ith temp var in static prop initializers (#7610) Similar to #7516. Fix class properties transform to replace references to class name in static prop initializers with temp var. Input: ```js class C { static getSelf = () => C; } const C2 = C; C = 123; assert(C2.getSelf() === C); ``` Output: ```js var _C; class C {} _C = C; _defineProperty(C, "getSelf", () => _C); const C2 = C; C = 123; assert(C2.getSelf() === C); ``` Previously, temp var wasn't used so code was `_defineProperty(C, "getSelf", () => C);`. `C` is altered later by `C = 123`, so `C2.getSelf()` returned `123`, instead of reference to the class.
Fix class properties transform to create a temp var for class when it's required.
Input:
Output:
Previously, temp var wasn't used so code was
_defineProperty(C, "getSelf", () => C);
.C
is altered later byC = 123
, soC2.getSelf()
returned123
, instead of reference to the class.The logic around when a temp var is required and when it's not, and when/where it's referenced is ridiculously complicated. So add some debug assert mechanisms to double-check the logic.