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:
parent
7241ff3967
commit
0255c8d976
4 changed files with 55 additions and 9 deletions
|
@ -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("");
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue