From 9a039cc34f53c6566b7b59a15718cd5a068091ee Mon Sep 17 00:00:00 2001 From: Armano Date: Wed, 9 Aug 2017 14:42:59 +0200 Subject: [PATCH 1/2] Fix small mistakes in `require-valid-default-prop` - Improve coverage for FunctionExpression and ArrowFunctionExpression - Fix traversing over many types (return -> continue) --- lib/rules/require-valid-default-prop.js | 10 ++++++---- tests/lib/rules/require-valid-default-prop.js | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/rules/require-valid-default-prop.js b/lib/rules/require-valid-default-prop.js index 22dbe5b4d..46a8ce1ab 100644 --- a/lib/rules/require-valid-default-prop.js +++ b/lib/rules/require-valid-default-prop.js @@ -103,7 +103,7 @@ module.exports = { for (const prop of properties) { const type = getPropertyNode(prop.value, 'type') if (!type) { - return + continue } const typeNames = new Set(getTypes(type.value) @@ -111,14 +111,16 @@ module.exports = { .filter(item => NATIVE_TYPES.has(item))) if (typeNames.size === 0) { // There is no native types detected - return + continue } const def = getPropertyNode(prop.value, 'default') - if (!def) return + if (!def) { + continue + } const defType = getValueType(def.value) - if (typeNames.has(defType)) return + if (!defType || typeNames.has(defType)) continue context.report({ node: def, diff --git a/tests/lib/rules/require-valid-default-prop.js b/tests/lib/rules/require-valid-default-prop.js index 8c4a84abf..b95fa71ae 100644 --- a/tests/lib/rules/require-valid-default-prop.js +++ b/tests/lib/rules/require-valid-default-prop.js @@ -65,6 +65,7 @@ ruleTester.run('require-valid-default-prop', rule, { foo: null, foo: Number, foo: [String, Number], + foo: { type: Number, default: VAR_BAR }, foo: { type: Number, default: 100 }, foo: { type: [String, Number], default: '' }, foo: { type: [String, Number], default: 0 }, From 52ae435d19340b46fdb5b7fc7bdf468fb7a3a6a4 Mon Sep 17 00:00:00 2001 From: Armano Date: Wed, 9 Aug 2017 14:44:42 +0200 Subject: [PATCH 2/2] Cleanup code --- lib/rules/require-valid-default-prop.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/rules/require-valid-default-prop.js b/lib/rules/require-valid-default-prop.js index 46a8ce1ab..659df0183 100644 --- a/lib/rules/require-valid-default-prop.js +++ b/lib/rules/require-valid-default-prop.js @@ -102,22 +102,17 @@ module.exports = { for (const prop of properties) { const type = getPropertyNode(prop.value, 'type') - if (!type) { - continue - } + if (!type) continue const typeNames = new Set(getTypes(type.value) .map(item => item === 'Object' || item === 'Array' ? 'Function' : item) // Object and Array require function .filter(item => NATIVE_TYPES.has(item))) - if (typeNames.size === 0) { // There is no native types detected - continue - } + // There is no native types detected + if (typeNames.size === 0) continue const def = getPropertyNode(prop.value, 'default') - if (!def) { - continue - } + if (!def) continue const defType = getValueType(def.value) if (!defType || typeNames.has(defType)) continue