Skip to content

Commit 7fc84e9

Browse files
committed
fix(check-param-names, require-param): properly check object parameters with default values; fixes gajus#635
1 parent c750c86 commit 7fc84e9

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2456,6 +2456,22 @@ function quux ({ foo: { bar } }) {}
24562456
* @param {FooBar} options.baz
24572457
*/
24582458
function quux ({ foo: { bar }, baz: { cfg } }) {}
2459+
2460+
/**
2461+
* Item
2462+
*
2463+
* @param {object} props
2464+
* @param {object} props.data - case data
2465+
* @param {string} props.data.className - additional css class
2466+
* @param props.val
2467+
*/
2468+
export default function Item({
2469+
data: {
2470+
className,
2471+
} = {},
2472+
val = 4
2473+
}) {
2474+
}
24592475
````
24602476

24612477

src/jsdocUtils.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,13 @@ const getFunctionParameterNames = (functionNode : Object) : Array<T> => {
140140
return getParamName(prop, isProperty);
141141
})];
142142
}
143+
if (param.value.type === 'AssignmentPattern' &&
144+
param.value.left.type === 'ObjectPattern'
145+
) {
146+
return [param.key.name, param.value.left.properties.map((prop) => {
147+
return getParamName(prop, isProperty);
148+
})];
149+
}
143150

144151
// As function parameters, these do not allow dynamic properties, etc.
145152
/* istanbul ignore else */

test/rules/assertions/checkParamNames.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,5 +1382,27 @@ export default {
13821382
function quux ({ foo: { bar }, baz: { cfg } }) {}
13831383
`,
13841384
},
1385+
{
1386+
code: `
1387+
/**
1388+
* Item
1389+
*
1390+
* @param {object} props
1391+
* @param {object} props.data - case data
1392+
* @param {string} props.data.className - additional css class
1393+
* @param props.val
1394+
*/
1395+
export default function Item({
1396+
data: {
1397+
className,
1398+
} = {},
1399+
val = 4
1400+
}) {
1401+
}
1402+
`,
1403+
parserOptions: {
1404+
sourceType: 'module',
1405+
},
1406+
},
13851407
],
13861408
};

0 commit comments

Comments
 (0)