Skip to content

Commit 40ad3bc

Browse files
Only wrap functions in superPropertyGet helper (#16769)
1 parent 94713fa commit 40ad3bc

5 files changed

Lines changed: 30 additions & 7 deletions

File tree

packages/babel-helpers/src/helpers-generated.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,10 +1134,10 @@ const helpers: Record<string, Helper> = {
11341134
},
11351135
},
11361136
),
1137-
// size: 131, gzip size: 126
1137+
// size: 153, gzip size: 136
11381138
superPropGet: helper(
11391139
"7.25.0",
1140-
"function _superPropertyGet(t,e,r,o){var p=get(getPrototypeOf(1&o?t.prototype:t),e,r);return 2&o?function(t){return p.apply(r,t)}:p}",
1140+
'function _superPropertyGet(t,e,o,r){var p=get(getPrototypeOf(1&r?t.prototype:t),e,o);return 2&r&&"function"==typeof p?function(t){return p.apply(o,t)}:p}',
11411141
{
11421142
globals: [],
11431143
locals: { _superPropertyGet: ["body.0.id"] },

packages/babel-helpers/src/helpers/superPropGet.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default function _superPropertyGet(
2323
receiver,
2424
);
2525
// @ts-expect-error flags may be undefined
26-
return flags & Flags.Call
26+
return flags & Flags.Call && typeof result === "function"
2727
? function (args: any[]) {
2828
return result.apply(receiver, args);
2929
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class SS {
2+
constructor(name){
3+
this.name = 'ss'+name;
4+
}
5+
}
6+
7+
class AA extends SS {
8+
constructor(name){
9+
super(name);
10+
this.name = 'aa' +name;
11+
}
12+
13+
aaGreet(s){
14+
super.greet?.(s + 'hhh');
15+
}
16+
}
17+
18+
const a = new AA('jack');
19+
20+
expect(() => a.aaGreet('d')).not.toThrow();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"plugins": ["transform-optional-chaining", "transform-classes"]
3+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import get from "./get.js";
22
import getPrototypeOf from "./getPrototypeOf.js";
3-
function _superPropertyGet(t, e, r, o) {
4-
var p = get(getPrototypeOf(1 & o ? t.prototype : t), e, r);
5-
return 2 & o ? function (t) {
6-
return p.apply(r, t);
3+
function _superPropertyGet(t, e, o, r) {
4+
var p = get(getPrototypeOf(1 & r ? t.prototype : t), e, o);
5+
return 2 & r && "function" == typeof p ? function (t) {
6+
return p.apply(o, t);
77
} : p;
88
}
99
export { _superPropertyGet as default };

0 commit comments

Comments
 (0)