diff --git a/lib/rules/require-default-prop.js b/lib/rules/require-default-prop.js
index d35c2f8ea..e3a8a4076 100644
--- a/lib/rules/require-default-prop.js
+++ b/lib/rules/require-default-prop.js
@@ -175,6 +175,12 @@ module.exports = {
withDefaults &&
withDefaultsExpressions
) {
+ if (prop.required) {
+ continue
+ }
+ if (prop.types.length === 1 && prop.types[0] === 'Boolean') {
+ continue
+ }
if (!withDefaultsExpressions[prop.propName]) {
context.report({
node: prop.node,
diff --git a/tests/lib/rules/require-default-prop.js b/tests/lib/rules/require-default-prop.js
index d93c5e5da..e129ae84d 100644
--- a/tests/lib/rules/require-default-prop.js
+++ b/tests/lib/rules/require-default-prop.js
@@ -235,7 +235,7 @@ ruleTester.run('require-default-prop', rule, {
code: `
@@ -251,7 +251,7 @@ ruleTester.run('require-default-prop', rule, {
code: `
@@ -267,7 +267,7 @@ ruleTester.run('require-default-prop', rule, {
code: `
+ `,
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions: {
+ ...parserOptions,
+ parser: require.resolve('@typescript-eslint/parser')
+ }
+ },
+ {
+ filename: 'test.vue',
+ code: `
+
+ `,
+ parser: require.resolve('vue-eslint-parser'),
+ parserOptions: {
+ ...parserOptions,
+ parser: require.resolve('@typescript-eslint/parser')
+ }
}
],
@@ -503,7 +550,7 @@ ruleTester.run('require-default-prop', rule, {
code: `
diff --git a/tests/lib/utils/index.js b/tests/lib/utils/index.js
index df45da856..b4a052090 100644
--- a/tests/lib/utils/index.js
+++ b/tests/lib/utils/index.js
@@ -1,13 +1,13 @@
'use strict'
-const babelEslint = require('babel-eslint')
const espree = require('espree')
const utils = require('../../../lib/utils/index')
const assert = require('assert')
describe('getComputedProperties', () => {
const parse = function (code) {
- return babelEslint.parse(code).body[0].declarations[0].init
+ return espree.parse(code, { ecmaVersion: 2020 }).body[0].declarations[0]
+ .init
}
it('should return empty array when there is no computed property', () => {
@@ -112,7 +112,8 @@ describe('getComputedProperties', () => {
describe('getStaticPropertyName', () => {
const parse = function (code) {
- return babelEslint.parse(code).body[0].declarations[0].init
+ return espree.parse(code, { ecmaVersion: 2020 }).body[0].declarations[0]
+ .init
}
it('should parse property expression with identifier', () => {
@@ -137,7 +138,8 @@ describe('getStaticPropertyName', () => {
describe('getStringLiteralValue', () => {
const parse = function (code) {
- return babelEslint.parse(code).body[0].declarations[0].init
+ return espree.parse(code, { ecmaVersion: 2020 }).body[0].declarations[0]
+ .init
}
it('should parse literal', () => {
@@ -275,7 +277,8 @@ describe('getMemberChaining', () => {
describe('getRegisteredComponents', () => {
const parse = function (code) {
- return babelEslint.parse(code).body[0].declarations[0].init
+ return espree.parse(code, { ecmaVersion: 2020 }).body[0].declarations[0]
+ .init
}
it('should return empty array when there are no components registered', () => {
@@ -335,7 +338,8 @@ describe('getRegisteredComponents', () => {
describe('getComponentProps', () => {
const parse = function (code) {
- const data = babelEslint.parse(code).body[0].declarations[0].init
+ const data = espree.parse(code, { ecmaVersion: 2020 }).body[0]
+ .declarations[0].init
return utils.getComponentProps(data)
}