Skip to content

Commit c5574ce

Browse files
authored
✨ Give FunctionExpression names if possible (#14)
1 parent 994ee18 commit c5574ce

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

docs/api/ast-utils.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,12 @@ Get the name and kind of a given function node.
160160
- `const foo = async () => {}` ........... `async arrow function 'foo'`
161161
- `foo = () => {}` ....................... `arrow function 'foo'`
162162
- `foo = async () => {}` ................. `async arrow function 'foo'`
163+
- `const foo = function() {}` ............ `function 'foo'`
164+
- `const foo = function* () {}` .......... `generator function 'foo'`
165+
- `const foo = async function() {}` ...... `async function 'foo'`
166+
- `foo = function() {}` .................. `function 'foo'`
167+
- `foo = function* () {}` ................ `generator function 'foo'`
168+
- `foo = async function() {}` ............ `async function 'foo'`
163169
- `({ foo: function foo() {} })` ......... `method 'foo'`
164170
- `({ foo: function() {} })` ............. `method 'foo'`
165171
- `({ ['foo']: function() {} })` ......... `method 'foo'`

src/get-function-name-with-kind.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ export function getFunctionNameWithKind(node) {
4949
}
5050
}
5151

52-
if (node.type === "ArrowFunctionExpression") {
52+
if (
53+
node.type === "ArrowFunctionExpression" ||
54+
(node.type === "FunctionExpression" && node.id === null)
55+
) {
5356
if (
5457
parent.type === "VariableDeclarator" &&
5558
parent.id &&

test/get-function-name-with-kind.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ describe("The 'getFunctionNameWithKind' function", () => {
1818
"foo = async () => {}": "async arrow function 'foo'",
1919
"foo.bar = () => {}": "arrow function",
2020
"foo.bar = async () => {}": "async arrow function",
21+
"const foo = function() {}": "function 'foo'",
22+
"const foo = function* () {}": "generator function 'foo'",
23+
"const foo = async function() {}": "async function 'foo'",
24+
"foo = function() {}": "function 'foo'",
25+
"foo = function* () {}": "generator function 'foo'",
26+
"foo = async function() {}": "async function 'foo'",
27+
"const foo = function bar() {}": "function 'bar'",
28+
"foo = function bar() {}": "function 'bar'",
29+
"foo.bar = function() {}": "function",
30+
"foo.bar = function* () {}": "generator function",
31+
"foo.bar = async function() {}": "async function",
2132
"({ foo: function foo() {} })": "method 'foo'",
2233
"({ foo: function() {} })": "method 'foo'",
2334
"({ ['foo']: function() {} })": "method 'foo'",

0 commit comments

Comments
 (0)