Skip to content
This repository was archived by the owner on Jan 11, 2023. It is now read-only.

Commit 2c00135

Browse files
nyrosmithjasonLaster
authored andcommitted
show default value parameters in Outline (#5294)
1 parent e7018a1 commit 2c00135

File tree

3 files changed

+96
-1
lines changed

3 files changed

+96
-1
lines changed

src/workers/parser/getSymbols.js

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,39 @@ export type SymbolDeclarations = {
4444

4545
function getFunctionParameterNames(path: NodePath): string[] {
4646
if (path.node.params != null) {
47-
return path.node.params.map(param => param.name);
47+
return path.node.params.map(param => {
48+
if (param.type !== "AssignmentPattern") {
49+
return param.name;
50+
}
51+
52+
// Parameter with default value
53+
if (
54+
param.left.type === "Identifier" &&
55+
param.right.type === "Identifier"
56+
) {
57+
return `${param.left.name} = ${param.right.name}`;
58+
} else if (
59+
param.left.type === "Identifier" &&
60+
param.right.type === "StringLiteral"
61+
) {
62+
return `${param.left.name} = ${param.right.value}`;
63+
} else if (
64+
param.left.type === "Identifier" &&
65+
param.right.type === "ObjectExpression"
66+
) {
67+
return `${param.left.name} = {}`;
68+
} else if (
69+
param.left.type === "Identifier" &&
70+
param.right.type === "ArrayExpression"
71+
) {
72+
return `${param.left.name} = []`;
73+
} else if (
74+
param.left.type === "Identifier" &&
75+
param.right.type === "NullLiteral"
76+
) {
77+
return `${param.left.name} = null`;
78+
}
79+
});
4880
}
4981
return [];
5082
}

src/workers/parser/tests/__snapshots__/getSymbols.spec.js.snap

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,13 @@ exports[`Parser.getSymbols function names 1`] = `
869869
[(35, 2), (35, 9)] 42() Cls
870870
[(38, 1), (38, 13)] anonymous()
871871
[(40, 15), (40, 28)] default()
872+
[(44, 0), (44, 27)] a(first, second)
873+
[(45, 0), (45, 35)] b(first = bla, second)
874+
[(46, 0), (46, 32)] c(first = {}, second)
875+
[(47, 0), (47, 32)] d(first = [], second)
876+
[(48, 0), (48, 40)] e(first = defaultObj, second)
877+
[(49, 0), (49, 40)] f(first = defaultArr, second)
878+
[(50, 0), (50, 34)] g(first = null, second)
872879
873880
variables:
874881
[(16, 4), (16, 22)] foo
@@ -881,6 +888,23 @@ variables:
881888
[(25, 13), (25, 31)] foo
882889
[(26, 12), (26, 42)]
883890
[(26, 13), (26, 36)] foo
891+
[(42, 6), (42, 25)] defaultObj
892+
[(42, 20), (42, 24)] a
893+
[(43, 6), (43, 29)] defaultArr
894+
[(44, 11), (44, 16)] first
895+
[(44, 18), (44, 24)] second
896+
[(45, 11), (45, 24)]
897+
[(45, 26), (45, 32)] second
898+
[(46, 11), (46, 21)]
899+
[(46, 23), (46, 29)] second
900+
[(47, 11), (47, 21)]
901+
[(47, 23), (47, 29)] second
902+
[(48, 11), (48, 29)]
903+
[(48, 31), (48, 37)] second
904+
[(49, 11), (49, 29)]
905+
[(49, 31), (49, 37)] second
906+
[(50, 11), (50, 23)]
907+
[(50, 25), (50, 31)] second
884908
885909
callExpressions:
886910
@@ -897,6 +921,7 @@ objectProperties:
897921
[(22, 2), (22, 5)] undefined.bar bar
898922
[(25, 13), (25, 16)] foo
899923
[(26, 13), (26, 16)] bar
924+
[(42, 20), (42, 21)] defaultObj.a a
900925
901926
comments:
902927
[(1, 0), (1, 20)]
@@ -929,6 +954,34 @@ identifiers:
929954
[(28, 6), (28, 9)] Cls Cls
930955
[(29, 2), (29, 5)] foo foo
931956
[(33, 2), (33, 5)] foo foo
957+
[(42, 6), (42, 25)] defaultObj defaultObj
958+
[(42, 6), (42, 16)] defaultObj defaultObj
959+
[(42, 20), (42, 21)] a a
960+
[(43, 6), (43, 29)] defaultArr defaultArr
961+
[(43, 6), (43, 16)] defaultArr defaultArr
962+
[(44, 9), (44, 10)] a a
963+
[(44, 11), (44, 16)] first first
964+
[(44, 18), (44, 24)] second second
965+
[(45, 9), (45, 10)] b b
966+
[(45, 11), (45, 16)] first first
967+
[(45, 26), (45, 32)] second second
968+
[(46, 9), (46, 10)] c c
969+
[(46, 11), (46, 16)] first first
970+
[(46, 23), (46, 29)] second second
971+
[(47, 9), (47, 10)] d d
972+
[(47, 11), (47, 16)] first first
973+
[(47, 23), (47, 29)] second second
974+
[(48, 9), (48, 10)] e e
975+
[(48, 11), (48, 16)] first first
976+
[(48, 19), (48, 29)] defaultObj defaultObj
977+
[(48, 31), (48, 37)] second second
978+
[(49, 9), (49, 10)] f f
979+
[(49, 11), (49, 16)] first first
980+
[(49, 19), (49, 29)] defaultArr defaultArr
981+
[(49, 31), (49, 37)] second second
982+
[(50, 9), (50, 10)] g g
983+
[(50, 11), (50, 16)] first first
984+
[(50, 25), (50, 31)] second second
932985
933986
classes:
934987
[(28, 0), (36, 1)] Cls

src/workers/parser/tests/fixtures/functionNames.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,13 @@ class Cls {
3838
(function(){});
3939

4040
export default function (){}
41+
42+
const defaultObj = {a: 1};
43+
const defaultArr = ['smthng'];
44+
function a(first, second){}
45+
function b(first = 'bla', second){}
46+
function c(first = {}, second){}
47+
function d(first = [], second){}
48+
function e(first = defaultObj, second){}
49+
function f(first = defaultArr, second){}
50+
function g(first = null, second){}

0 commit comments

Comments
 (0)