Skip to content

Commit 2418da7

Browse files
authored
Fixed an issue that caused an error when extra commas were included in require-prop-type-constructor (#963)
1 parent b412783 commit 2418da7

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed

lib/rules/require-prop-type-constructor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ module.exports = {
5858
})
5959
} else if (node.type === 'ArrayExpression') {
6060
node.elements
61-
.filter(prop => isForbiddenType(prop))
61+
.filter(prop => prop && isForbiddenType(prop))
6262
.forEach(prop => context.report({
6363
node: prop,
6464
message,

lib/utils/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,7 @@ module.exports = {
453453
})
454454
} else {
455455
props = propsNode.value.elements
456+
.filter(prop => prop)
456457
.map(prop => {
457458
const key = prop.type === 'Literal' && typeof prop.value === 'string' ? prop : null
458459
return { key, value: null, node: prop, propName: key != null ? prop.value : null }

tests/lib/rules/require-prop-type-constructor.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,56 @@ ruleTester.run('require-prop-type-constructor', rule, {
4444
}
4545
}
4646
`
47+
},
48+
{
49+
filename: 'ExtraCommas.vue',
50+
code: `
51+
export default {
52+
props: {
53+
name: [String,,]
54+
}
55+
}
56+
`
57+
},
58+
{
59+
filename: 'ExtraCommas.vue',
60+
code: `
61+
export default {
62+
props: {
63+
name: {
64+
type: [String,,]
65+
}
66+
}
67+
}
68+
`
69+
},
70+
{
71+
filename: 'ExtraCommas.vue',
72+
code: `
73+
export default {
74+
props: {
75+
name: [String,,Number]
76+
}
77+
}
78+
`
79+
},
80+
{
81+
filename: 'ExtraCommas.vue',
82+
code: `
83+
export default {
84+
props: {
85+
name: [,,Number]
86+
}
87+
}
88+
`
89+
},
90+
{
91+
filename: 'ExtraCommas.vue',
92+
code: `
93+
export default {
94+
props: ['name',,,]
95+
}
96+
`
4797
}
4898
],
4999

@@ -165,6 +215,28 @@ ruleTester.run('require-prop-type-constructor', rule, {
165215
line: 5
166216
}],
167217
parser: require.resolve('@typescript-eslint/parser')
218+
},
219+
{
220+
filename: 'ExtraCommas.vue',
221+
code: `
222+
export default {
223+
props: {
224+
name: ['String',,]
225+
}
226+
}
227+
`,
228+
output: `
229+
export default {
230+
props: {
231+
name: [String,,]
232+
}
233+
}
234+
`,
235+
errors: [{
236+
message: 'The "name" property should be a constructor.',
237+
line: 4
238+
}],
239+
parser: require.resolve('@typescript-eslint/parser')
168240
}
169241
]
170242
})

0 commit comments

Comments
 (0)