Skip to content

Commit 98e030a

Browse files
fix: Prevent spread operator from disabling the rule (vuejs#2456)
1 parent f0aa5dc commit 98e030a

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

Diff for: lib/utils/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3133,7 +3133,7 @@ function getWithDefaultsProps(node) {
31333133

31343134
for (const prop of param.properties) {
31353135
if (prop.type !== 'Property') {
3136-
return {}
3136+
continue
31373137
}
31383138
const name = getStaticPropertyName(prop)
31393139
if (name != null) {

Diff for: tests/lib/rules/require-default-prop.js

+49
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,28 @@ ruleTester.run('require-default-prop', rule, {
329329
...languageOptions,
330330
parserOptions: { parser: require.resolve('@typescript-eslint/parser') }
331331
}
332+
},
333+
{
334+
filename: 'test.vue',
335+
code: `
336+
<script setup lang="ts">
337+
const defaultProps = {
338+
foo: 'foo',
339+
}
340+
withDefaults(defineProps<{
341+
foo: string;
342+
bar?: number;
343+
}>(), {
344+
...defaultProps,
345+
bar: 42,
346+
})
347+
</script>
348+
`,
349+
languageOptions: {
350+
parser: require('vue-eslint-parser'),
351+
...languageOptions,
352+
parserOptions: { parser: require.resolve('@typescript-eslint/parser') }
353+
}
332354
}
333355
],
334356

@@ -544,6 +566,33 @@ ruleTester.run('require-default-prop', rule, {
544566
...languageOptions
545567
}
546568
},
569+
{
570+
filename: 'test.vue',
571+
code: `
572+
<script setup lang="ts">
573+
const defaultProps = {
574+
foo: 'foo',
575+
}
576+
withDefaults(defineProps<{
577+
foo: string;
578+
bar?: number;
579+
}>(), {
580+
...defaultProps,
581+
})
582+
</script>
583+
`,
584+
errors: [
585+
{
586+
message: "Prop 'bar' requires default value to be set.",
587+
line: 8
588+
}
589+
],
590+
languageOptions: {
591+
parser: require('vue-eslint-parser'),
592+
...languageOptions,
593+
parserOptions: { parser: require.resolve('@typescript-eslint/parser') }
594+
}
595+
},
547596
...(semver.lt(
548597
require('@typescript-eslint/parser/package.json').version,
549598
'4.0.0'

0 commit comments

Comments
 (0)