From 45643b7cd5b6101fb6a87a932ebff39b04d5eaf9 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Thu, 31 Jan 2019 22:34:22 +0900 Subject: [PATCH] fix(no-unused-components): crash when `:is` in `` is empty Fixed #789 --- lib/rules/no-unused-components.js | 6 ++- tests/lib/rules/no-unused-components.js | 54 +++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-unused-components.js b/lib/rules/no-unused-components.js index 4382cbbca..a12b7d43d 100644 --- a/lib/rules/no-unused-components.js +++ b/lib/rules/no-unused-components.js @@ -56,7 +56,11 @@ module.exports = { usedComponents.add(node.rawName) }, "VAttribute[directive=true][key.name='bind'][key.argument='is']" (node) { - if (node.value.type !== 'VExpressionContainer') return + if ( + !node.value || // `` + node.value.type !== 'VExpressionContainer' || + !node.value.expression // `` + ) return if (node.value.expression.type === 'Literal') { usedComponents.add(node.value.expression.value) diff --git a/tests/lib/rules/no-unused-components.js b/tests/lib/rules/no-unused-components.js index f62b83fb1..b8dfcaaf2 100644 --- a/tests/lib/rules/no-unused-components.js +++ b/tests/lib/rules/no-unused-components.js @@ -411,6 +411,22 @@ tester.run('no-unused-components', rule, { } } ` + }, + + // empty `:is` + { + filename: 'test.vue', + code: ` + ` + }, + { + filename: 'test.vue', + code: ` + ` } ], invalid: [ @@ -512,6 +528,44 @@ tester.run('no-unused-components', rule, { message: 'The "Bar" component has been registered but not used.', line: 14 }] + }, + + // empty `:is` + { + filename: 'test.vue', + code: ` + + `, + errors: [{ + message: 'The "Foo" component has been registered but not used.', + line: 8 + }] + }, + { + filename: 'test.vue', + code: ` + + `, + errors: [{ + message: 'The "Foo" component has been registered but not used.', + line: 8 + }] } ] })