Skip to content

Commit 1bd74f4

Browse files
committed
Add support for tracking function names
1 parent 86c4a89 commit 1bd74f4

7 files changed

Lines changed: 38 additions & 1 deletion

File tree

lib/node_modules/@stdlib/_tools/js/program-summary/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ var summary = analyze( 'var beep = "boop";' );
391391
...
392392
```
393393
394-
- Function declaration summaries include an extra `params` field which is the number of function parameters for a given function.
394+
- A function declaration summary includes a `params` field which is the number of function parameters for a given function and a `name` field which is the function identifier. For anonymous functions, the `name` is `(anonymous)`.
395395
396396
```text
397397
...,
@@ -418,6 +418,7 @@ var summary = analyze( 'var beep = "boop";' );
418418
"forin": {...},
419419
"var": 0,
420420
"function": {...},
421+
"name": "foo", // function identifier
421422
"params": 2 // number of parameters
422423
}
423424
]

lib/node_modules/@stdlib/_tools/js/program-summary/lib/analyze.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ function analyze( results, ast, src, lines, scope, opts ) {
9797
if ( type === 'SwitchStatement' ) {
9898
res.case = node.cases.length;
9999
} else if ( type === 'FunctionDeclaration' ) {
100+
res.name = node.id.name || '(anonymous)';
100101
res.params = node.params.length;
101102
res.scope -= 1; // while contents are in a nested scope, declaration is in parent scope
102103
}

lib/node_modules/@stdlib/_tools/js/program-summary/test/fixtures/1.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,6 +1231,7 @@
12311231
"count": 0,
12321232
"data": []
12331233
},
1234+
"name": "add",
12341235
"params": 2
12351236
}
12361237
]

lib/node_modules/@stdlib/_tools/js/program-summary/test/fixtures/2.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,6 +949,7 @@
949949
"count": 0,
950950
"data": []
951951
},
952+
"name": "hypot",
952953
"params": 2
953954
}
954955
]

lib/node_modules/@stdlib/_tools/js/program-summary/test/fixtures/empty_function_declaration.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131
"count": 0,
132132
"data": []
133133
},
134+
"name": "noop",
134135
"params": 0
135136
}
136137
]

lib/node_modules/@stdlib/_tools/js/program-summary/test/fixtures/function_declaration.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131
"count": 0,
132132
"data": []
133133
},
134+
"name": "add",
134135
"params": 2
135136
}
136137
]

lib/node_modules/@stdlib/_tools/js/program-summary/test/fixtures/nested_function_declarations.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131
"count": 0,
132132
"data": []
133133
},
134+
"name": "padd5",
134135
"params": 1
135136
},
136137
{
@@ -266,10 +267,12 @@
266267
"count": 0,
267268
"data": []
268269
},
270+
"name": "padd5",
269271
"params": 1
270272
}
271273
]
272274
},
275+
"name": "padd4",
273276
"params": 1
274277
},
275278
{
@@ -405,6 +408,7 @@
405408
"count": 0,
406409
"data": []
407410
},
411+
"name": "padd5",
408412
"params": 1
409413
},
410414
{
@@ -540,14 +544,17 @@
540544
"count": 0,
541545
"data": []
542546
},
547+
"name": "padd5",
543548
"params": 1
544549
}
545550
]
546551
},
552+
"name": "padd4",
547553
"params": 1
548554
}
549555
]
550556
},
557+
"name": "padd3",
551558
"params": 1
552559
},
553560
{
@@ -683,6 +690,7 @@
683690
"count": 0,
684691
"data": []
685692
},
693+
"name": "padd5",
686694
"params": 1
687695
},
688696
{
@@ -818,10 +826,12 @@
818826
"count": 0,
819827
"data": []
820828
},
829+
"name": "padd5",
821830
"params": 1
822831
}
823832
]
824833
},
834+
"name": "padd4",
825835
"params": 1
826836
},
827837
{
@@ -957,6 +967,7 @@
957967
"count": 0,
958968
"data": []
959969
},
970+
"name": "padd5",
960971
"params": 1
961972
},
962973
{
@@ -1092,18 +1103,22 @@
10921103
"count": 0,
10931104
"data": []
10941105
},
1106+
"name": "padd5",
10951107
"params": 1
10961108
}
10971109
]
10981110
},
1111+
"name": "padd4",
10991112
"params": 1
11001113
}
11011114
]
11021115
},
1116+
"name": "padd3",
11031117
"params": 1
11041118
}
11051119
]
11061120
},
1121+
"name": "padd2",
11071122
"params": 1
11081123
},
11091124
{
@@ -1239,6 +1254,7 @@
12391254
"count": 0,
12401255
"data": []
12411256
},
1257+
"name": "padd5",
12421258
"params": 1
12431259
},
12441260
{
@@ -1374,10 +1390,12 @@
13741390
"count": 0,
13751391
"data": []
13761392
},
1393+
"name": "padd5",
13771394
"params": 1
13781395
}
13791396
]
13801397
},
1398+
"name": "padd4",
13811399
"params": 1
13821400
},
13831401
{
@@ -1513,6 +1531,7 @@
15131531
"count": 0,
15141532
"data": []
15151533
},
1534+
"name": "padd5",
15161535
"params": 1
15171536
},
15181537
{
@@ -1648,14 +1667,17 @@
16481667
"count": 0,
16491668
"data": []
16501669
},
1670+
"name": "padd5",
16511671
"params": 1
16521672
}
16531673
]
16541674
},
1675+
"name": "padd4",
16551676
"params": 1
16561677
}
16571678
]
16581679
},
1680+
"name": "padd3",
16591681
"params": 1
16601682
},
16611683
{
@@ -1791,6 +1813,7 @@
17911813
"count": 0,
17921814
"data": []
17931815
},
1816+
"name": "padd5",
17941817
"params": 1
17951818
},
17961819
{
@@ -1926,10 +1949,12 @@
19261949
"count": 0,
19271950
"data": []
19281951
},
1952+
"name": "padd5",
19291953
"params": 1
19301954
}
19311955
]
19321956
},
1957+
"name": "padd4",
19331958
"params": 1
19341959
},
19351960
{
@@ -2065,6 +2090,7 @@
20652090
"count": 0,
20662091
"data": []
20672092
},
2093+
"name": "padd5",
20682094
"params": 1
20692095
},
20702096
{
@@ -2200,22 +2226,27 @@
22002226
"count": 0,
22012227
"data": []
22022228
},
2229+
"name": "padd5",
22032230
"params": 1
22042231
}
22052232
]
22062233
},
2234+
"name": "padd4",
22072235
"params": 1
22082236
}
22092237
]
22102238
},
2239+
"name": "padd3",
22112240
"params": 1
22122241
}
22132242
]
22142243
},
2244+
"name": "padd2",
22152245
"params": 1
22162246
}
22172247
]
22182248
},
2249+
"name": "padd1",
22192250
"params": 1
22202251
}
22212252
]

0 commit comments

Comments
 (0)