From 97742f66a68721f39baef2c5316d94dae9fced8c Mon Sep 17 00:00:00 2001 From: Guillaume Guerin Date: Fri, 26 Apr 2024 11:41:33 +0200 Subject: [PATCH 1/2] fix: Prevent spread operator from disabling the rule --- lib/utils/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/index.js b/lib/utils/index.js index f16bcef2c..9a1f8aafe 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -3121,7 +3121,7 @@ function getWithDefaultsProps(node) { for (const prop of param.properties) { if (prop.type !== 'Property') { - return {} + continue } const name = getStaticPropertyName(prop) if (name != null) { From edceab2fbb15548570312c3b54572afc713e2377 Mon Sep 17 00:00:00 2001 From: Guillaume Guerin Date: Fri, 26 Apr 2024 13:06:01 +0200 Subject: [PATCH 2/2] test: Add destructuring test for vue/require-default-props --- tests/lib/rules/require-default-prop.js | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/lib/rules/require-default-prop.js b/tests/lib/rules/require-default-prop.js index 97aea4919..834f319aa 100644 --- a/tests/lib/rules/require-default-prop.js +++ b/tests/lib/rules/require-default-prop.js @@ -329,6 +329,28 @@ ruleTester.run('require-default-prop', rule, { ...languageOptions, parserOptions: { parser: require.resolve('@typescript-eslint/parser') } } + }, + { + filename: 'test.vue', + code: ` + + `, + languageOptions: { + parser: require('vue-eslint-parser'), + ...languageOptions, + parserOptions: { parser: require.resolve('@typescript-eslint/parser') } + } } ], @@ -544,6 +566,33 @@ ruleTester.run('require-default-prop', rule, { ...languageOptions } }, + { + filename: 'test.vue', + code: ` + + `, + errors: [ + { + message: "Prop 'bar' requires default value to be set.", + line: 8 + } + ], + languageOptions: { + parser: require('vue-eslint-parser'), + ...languageOptions, + parserOptions: { parser: require.resolve('@typescript-eslint/parser') } + } + }, ...(semver.lt( require('@typescript-eslint/parser/package.json').version, '4.0.0'