1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 08:25:07 +00:00

Only apply auto-naming of function expressions based on syntax

The auto naming of function expressions is a purely syntactic
decision, so shouldn't be decided based on the dynamic type of
an assignment. This moves the decision making into the parser.

One icky hack is that we add a field to FunctionExpression to
indicate whether we can autoname. The real solution is to actually
generate a CompoundExpression node so that the parser can make
the correct decision, however this would have a potentially
significant run time cost.

This does not correct the behaviour for class expressions.

Patch from Anonymous.
This commit is contained in:
Andreas Kling 2021-03-22 12:44:07 +01:00
parent 7241ff3967
commit 0255c8d976
4 changed files with 55 additions and 9 deletions

View file

@ -48,3 +48,17 @@ test("names of native functions", () => {
expect((console.debug.name = "warn")).toBe("warn");
expect(console.debug.name).toBe("debug");
});
test("no invalid autonaming of anonymous functions", () => {
// prettier-ignore
let f1 = (function () {});
expect(f1.name).toBe("");
let f2 = f1;
expect(f2.name).toBe("");
let f3;
f3 = false || f2;
expect(f3.name).toBe("");
let f4 = false;
f4 ||= function () {};
expect(f4.name).toBe("");
});