From 9a49b93442b4c4ea2b651d58cb2f15505a5ba86c Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Thu, 3 Nov 2022 12:32:55 +0900 Subject: [PATCH 1/2] feat: improve html-self-closing to report range --- src/rules/html-self-closing.ts | 20 ++++++++++++----- .../component-never-errors.yaml | 4 ++-- .../normal-ignore/normal-any-errors.yaml | 2 +- .../normal-never/component-never-errors.yaml | 2 +- .../presets/html/preset-html-errors.json | 22 ------------------- .../presets/html/preset-html-errors.yaml | 8 +++---- .../presets/none/preset-none-errors.json | 22 ------------------- .../presets/none/preset-none-errors.yaml | 8 +++---- .../svelte-never/svelte-never-errors.yaml | 2 +- .../invalid/test01-errors.yaml | 6 ++--- .../invalid/void-never/void-never-errors.yaml | 2 +- 11 files changed, 31 insertions(+), 67 deletions(-) delete mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json delete mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts index 186545c95..be15110a6 100644 --- a/src/rules/html-self-closing.ts +++ b/src/rules/html-self-closing.ts @@ -52,7 +52,7 @@ export default createRule("html-self-closing", { }, ], }, - create(ctx) { + create(context) { let options = { void: "always", normal: "always", @@ -60,7 +60,7 @@ export default createRule("html-self-closing", { svelte: "always", } - const option = ctx.options?.[0] + const option = context.options?.[0] switch (option) { case "none": options = { @@ -120,17 +120,25 @@ export default createRule("html-self-closing", { /** * Report */ - function report(node: AST.SvelteElement, close: boolean) { + function report(node: AST.SvelteElement, shouldBeClosed: boolean) { const elementType = getElementType(node) - ctx.report({ + context.report({ node, - messageId: close ? "requireClosing" : "disallowClosing", + loc: { + start: context + .getSourceCode() + .getLocFromIndex( + node.startTag.range[1] - (node.startTag.selfClosing ? 2 : 1), + ), + end: node.loc.end, + }, + messageId: shouldBeClosed ? "requireClosing" : "disallowClosing", data: { type: TYPE_MESSAGES[elementType], }, *fix(fixer) { - if (close) { + if (shouldBeClosed) { for (const child of node.children) { yield fixer.removeRange(child.range) } diff --git a/tests/fixtures/rules/html-self-closing/invalid/component-never/component-never-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/component-never/component-never-errors.yaml index 6cc3ce928..833955e58 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/component-never/component-never-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/component-never/component-never-errors.yaml @@ -1,8 +1,8 @@ - message: Disallow self-closing on Svelte custom components. line: 3 - column: 3 + column: 18 suggestions: null - message: Disallow self-closing on Svelte custom components. line: 4 - column: 3 + column: 15 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/normal-any-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/normal-any-errors.yaml index 1c9d1f3ab..8b067650c 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/normal-any-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/normal-any-errors.yaml @@ -1,4 +1,4 @@ - message: Require self-closing on HTML void elements. line: 5 - column: 3 + column: 7 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/normal-never/component-never-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/normal-never/component-never-errors.yaml index 3a1b45ada..d01ef5348 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/normal-never/component-never-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/normal-never/component-never-errors.yaml @@ -1,4 +1,4 @@ - message: Disallow self-closing on HTML elements. line: 3 - column: 3 + column: 8 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json deleted file mode 100644 index ecd2cc2d7..000000000 --- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "message": "Disallow self-closing on HTML elements.", - "line": 3, - "column": 3 - }, - { - "message": "Require self-closing on HTML void elements.", - "line": 4, - "column": 3 - }, - { - "message": "Disallow self-closing on Svelte custom components.", - "line": 5, - "column": 3 - }, - { - "message": "Require self-closing on Svelte special elements.", - "line": 8, - "column": 1 - } -] diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.yaml index b22c0655f..b2883996e 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.yaml @@ -1,16 +1,16 @@ - message: Disallow self-closing on HTML elements. line: 3 - column: 3 + column: 8 suggestions: null - message: Require self-closing on HTML void elements. line: 4 - column: 3 + column: 7 suggestions: null - message: Disallow self-closing on Svelte custom components. line: 5 - column: 3 + column: 18 suggestions: null - message: Require self-closing on Svelte special elements. line: 8 - column: 1 + column: 13 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json deleted file mode 100644 index e3fcdeb40..000000000 --- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "message": "Disallow self-closing on HTML elements.", - "line": 3, - "column": 3 - }, - { - "message": "Disallow self-closing on Svelte custom components.", - "line": 4, - "column": 3 - }, - { - "message": "Disallow self-closing on HTML void elements.", - "line": 5, - "column": 3 - }, - { - "message": "Disallow self-closing on Svelte special elements.", - "line": 8, - "column": 1 - } -] diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.yaml index cde3eff78..b15a06363 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.yaml @@ -1,16 +1,16 @@ - message: Disallow self-closing on HTML elements. line: 3 - column: 3 + column: 8 suggestions: null - message: Disallow self-closing on Svelte custom components. line: 4 - column: 3 + column: 18 suggestions: null - message: Disallow self-closing on HTML void elements. line: 5 - column: 3 + column: 8 suggestions: null - message: Disallow self-closing on Svelte special elements. line: 8 - column: 1 + column: 14 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/svelte-never/svelte-never-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/svelte-never/svelte-never-errors.yaml index 2824cb38e..ee5fd27d2 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/svelte-never/svelte-never-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/svelte-never/svelte-never-errors.yaml @@ -1,4 +1,4 @@ - message: Disallow self-closing on Svelte special elements. line: 2 - column: 1 + column: 14 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/test01-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/test01-errors.yaml index 7d6d178a0..3b98d6dae 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/test01-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/test01-errors.yaml @@ -1,12 +1,12 @@ - message: Require self-closing on HTML elements. line: 3 - column: 3 + column: 7 suggestions: null - message: Require self-closing on Svelte custom components. line: 4 - column: 3 + column: 17 suggestions: null - message: Require self-closing on HTML void elements. line: 5 - column: 3 + column: 7 suggestions: null diff --git a/tests/fixtures/rules/html-self-closing/invalid/void-never/void-never-errors.yaml b/tests/fixtures/rules/html-self-closing/invalid/void-never/void-never-errors.yaml index baf16208e..c5514ab43 100644 --- a/tests/fixtures/rules/html-self-closing/invalid/void-never/void-never-errors.yaml +++ b/tests/fixtures/rules/html-self-closing/invalid/void-never/void-never-errors.yaml @@ -1,4 +1,4 @@ - message: Disallow self-closing on HTML void elements. line: 3 - column: 3 + column: 8 suggestions: null From 3cf15d127abc8129e692fac8de31a83499816ea5 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Thu, 3 Nov 2022 12:36:52 +0900 Subject: [PATCH 2/2] Create poor-books-raise.md --- .changeset/poor-books-raise.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/poor-books-raise.md diff --git a/.changeset/poor-books-raise.md b/.changeset/poor-books-raise.md new file mode 100644 index 000000000..392c3049d --- /dev/null +++ b/.changeset/poor-books-raise.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": patch +--- + +feat: improve reporting range for `svelte/html-self-closing` rule.