From 7f159c01a14488ca02c6aec1571b58be559a80db Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Wed, 30 Nov 2022 18:24:05 +0000 Subject: [PATCH] relax extends-correct-class rule for imports --- lib/rules/extends-correct-class.js | 1 + test/extends-correct-class.js | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/rules/extends-correct-class.js b/lib/rules/extends-correct-class.js index c5c0b01..eec57cf 100644 --- a/lib/rules/extends-correct-class.js +++ b/lib/rules/extends-correct-class.js @@ -51,6 +51,7 @@ module.exports = { [s.customElements.define](node) { const classRef = classes.get(node.arguments[1]) if (!classRef) return + if (classRef.type === 'ImportDefaultSpecifier' || classRef.type === 'ImportSpecifier') return const extendsTag = getExtendsOption(node.arguments[2]) // Allowed super names is an array of allowed names. diff --git a/test/extends-correct-class.js b/test/extends-correct-class.js index 4ebe398..29a7afe 100644 --- a/test/extends-correct-class.js +++ b/test/extends-correct-class.js @@ -1,7 +1,7 @@ const rule = require('../lib/rules/extends-correct-class') const RuleTester = require('eslint').RuleTester -const ruleTester = new RuleTester({env: {es2020: true}}) +const ruleTester = new RuleTester({env: {es2020: true}, parserOptions: {sourceType: 'module'}}) ruleTester.run('extends-correct-class', rule, { valid: [ @@ -15,6 +15,12 @@ ruleTester.run('extends-correct-class', rule, { { code: 'customElements.define("foo-bar", class extends HTMLElement {})', options: [{allowedSuperNames: ['HTMLGitHubElement']}] + }, + { + code: 'import Foo from "other";customElements.define("foo-bar", Foo)' + }, + { + code: 'import {Foo} from "other";customElements.define("foo-bar", Foo)' } ], invalid: [