From ec5ec05e9ee4af7d71ff84850178881b583f7e38 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Sun, 27 Nov 2022 23:40:04 +0900 Subject: [PATCH 1/6] feat: improve `svelte/indent` rule to support more ts syntax --- src/rules/indent-helpers/es.ts | 36 ++++++++++++----- src/rules/indent-helpers/ts.ts | 25 ++++++++++-- .../ts-instantiation-expression01-errors.yaml | 20 ++++++++++ ...ts-instantiation-expression01-input.svelte | 8 ++++ ...s-instantiation-expression01-output.svelte | 8 ++++ .../ts-satisfies-operators01-errors.yaml | 20 ++++++++++ .../ts-satisfies-operators01-input.svelte | 8 ++++ .../ts-satisfies-operators01-output.svelte | 8 ++++ .../ts/ts-type-parameters01-errors.yaml | 36 +++++++++++++++++ .../ts/ts-type-parameters01-input.svelte | 12 ++++++ .../ts/ts-type-parameters01-output.svelte | 12 ++++++ .../ts/ts-type-parameters02-errors.yaml | 40 +++++++++++++++++++ .../ts/ts-type-parameters02-input.svelte | 13 ++++++ .../ts/ts-type-parameters02-output.svelte | 13 ++++++ 14 files changed, 246 insertions(+), 13 deletions(-) create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-output.svelte diff --git a/src/rules/indent-helpers/es.ts b/src/rules/indent-helpers/es.ts index b193a5801..cd1fdc635 100644 --- a/src/rules/indent-helpers/es.ts +++ b/src/rules/indent-helpers/es.ts @@ -187,14 +187,25 @@ export function defineVisitor(context: IndentContext): NodeListener { }, CallExpression(node: TSESTree.CallExpression) { const firstToken = sourceCode.getFirstToken(node) - const leftParenToken = sourceCode.getTokenAfter(node.callee, { - filter: isOpeningParenToken, - includeComments: false, - })! + const leftParenToken = sourceCode.getTokenAfter( + node.typeParameters || node.callee, + { + filter: isOpeningParenToken, + includeComments: false, + }, + )! const rightParenToken = sourceCode.getLastToken(node) + if (node.typeParameters) { + offsets.setOffsetToken( + sourceCode.getFirstToken(node.typeParameters), + 1, + firstToken, + ) + } + for (const optionalToken of sourceCode.getTokensBetween( - sourceCode.getLastToken(node.callee), + sourceCode.getLastToken(node.typeParameters || node.callee), leftParenToken, { filter: isOptionalToken, includeComments: false }, )) { @@ -817,12 +828,17 @@ export function defineVisitor(context: IndentContext): NodeListener { const calleeTokens = getFirstAndLastTokens(sourceCode, node.callee) offsets.setOffsetToken(calleeTokens.firstToken, 1, newToken) - if ( - node.arguments.length || - calleeTokens.lastToken.range[1] < node.range[1] - ) { + if (node.typeParameters) { + offsets.setOffsetToken( + sourceCode.getFirstToken(node.typeParameters), + 1, + calleeTokens.firstToken, + ) + } + const leftParenBefore = node.typeParameters || calleeTokens.lastToken + if (node.arguments.length || leftParenBefore.range[1] < node.range[1]) { const rightParenToken = sourceCode.getLastToken(node) - const leftParenToken = sourceCode.getTokenAfter(calleeTokens.lastToken)! + const leftParenToken = sourceCode.getTokenAfter(leftParenBefore)! offsets.setOffsetToken(leftParenToken, 1, calleeTokens.firstToken) offsets.setOffsetElementList( diff --git a/src/rules/indent-helpers/ts.ts b/src/rules/indent-helpers/ts.ts index 33a1ebd39..3595ea31a 100644 --- a/src/rules/indent-helpers/ts.ts +++ b/src/rules/indent-helpers/ts.ts @@ -41,22 +41,31 @@ export function defineVisitor(context: IndentContext): NodeListener { offsets.setOffsetToken(before, 1, baseToken) } }, - TSAsExpression(node: TSESTree.TSAsExpression) { + TSAsExpression( + node: TSESTree.TSAsExpression | TSESTree.TSSatisfiesExpression, + ) { // foo as T + // foo satisfies T const expressionTokens = getFirstAndLastTokens( sourceCode, node.expression, ) - const asToken = sourceCode.getTokenAfter(expressionTokens.lastToken)! + const asOrSatisfiesToken = sourceCode.getTokenAfter( + expressionTokens.lastToken, + )! offsets.setOffsetToken( [ - asToken, + asOrSatisfiesToken, getFirstAndLastTokens(sourceCode, node.typeAnnotation).firstToken, ], 1, expressionTokens.firstToken, ) }, + TSSatisfiesExpression(node: TSESTree.TSSatisfiesExpression) { + // foo satisfies T + visitor.TSAsExpression(node) + }, TSTypeReference(node: TSESTree.TSTypeReference) { // T if (node.typeParameters) { @@ -68,6 +77,16 @@ export function defineVisitor(context: IndentContext): NodeListener { ) } }, + TSInstantiationExpression(node: TSESTree.TSInstantiationExpression) { + // const ErrorMap = Map + // ^^^^^^^^^^^^^^^^^^ + const firstToken = sourceCode.getFirstToken(node) + offsets.setOffsetToken( + sourceCode.getFirstToken(node.typeParameters), + 1, + firstToken, + ) + }, TSTypeParameterInstantiation( node: | TSESTree.TSTypeParameterInstantiation diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-errors.yaml new file mode 100644 index 000000000..ae342ac7e --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-errors.yaml @@ -0,0 +1,20 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-input.svelte new file mode 100644 index 000000000..850e86e45 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-input.svelte @@ -0,0 +1,8 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-output.svelte new file mode 100644 index 000000000..f03733b74 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-instantiation-expression01-output.svelte @@ -0,0 +1,8 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-errors.yaml new file mode 100644 index 000000000..e1fb48802 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-errors.yaml @@ -0,0 +1,20 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-input.svelte new file mode 100644 index 000000000..8210fd3fb --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-input.svelte @@ -0,0 +1,8 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-output.svelte new file mode 100644 index 000000000..52bd3d428 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-satisfies-operators01-output.svelte @@ -0,0 +1,8 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-errors.yaml b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-errors.yaml new file mode 100644 index 000000000..cbdad173e --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-errors.yaml @@ -0,0 +1,36 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 8 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 9 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 10 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 11 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-input.svelte b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-input.svelte new file mode 100644 index 000000000..1269332ab --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-input.svelte @@ -0,0 +1,12 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-output.svelte b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-output.svelte new file mode 100644 index 000000000..8a88ef874 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters01-output.svelte @@ -0,0 +1,12 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-errors.yaml b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-errors.yaml new file mode 100644 index 000000000..aa468a9b0 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-errors.yaml @@ -0,0 +1,40 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 8 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 8 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 8 spaces but found 0 spaces. + line: 8 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 9 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 10 + column: 1 + suggestions: null +- message: Expected indentation of 8 spaces but found 0 spaces. + line: 11 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 12 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-input.svelte b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-input.svelte new file mode 100644 index 000000000..84afba6e2 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-input.svelte @@ -0,0 +1,13 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-output.svelte b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-output.svelte new file mode 100644 index 000000000..3b48b3644 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts/ts-type-parameters02-output.svelte @@ -0,0 +1,13 @@ + + From ad41da96051925f6f7de64d6b1bd8e81b3396320 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Sun, 27 Nov 2022 23:42:13 +0900 Subject: [PATCH 2/6] Create kind-boats-clean.md --- .changeset/kind-boats-clean.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/kind-boats-clean.md diff --git a/.changeset/kind-boats-clean.md b/.changeset/kind-boats-clean.md new file mode 100644 index 000000000..0699df1ec --- /dev/null +++ b/.changeset/kind-boats-clean.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": minor +--- + +feat: improve `svelte/indent` rule to support more ts syntax From 96da4cb67f79b5f87eb15e662330fafdf4b2a934 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Sun, 27 Nov 2022 23:46:42 +0900 Subject: [PATCH 3/6] fix: refactor --- src/rules/indent-helpers/ts.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/rules/indent-helpers/ts.ts b/src/rules/indent-helpers/ts.ts index 3595ea31a..ff9efafe9 100644 --- a/src/rules/indent-helpers/ts.ts +++ b/src/rules/indent-helpers/ts.ts @@ -45,6 +45,7 @@ export function defineVisitor(context: IndentContext): NodeListener { node: TSESTree.TSAsExpression | TSESTree.TSSatisfiesExpression, ) { // foo as T + // or // foo satisfies T const expressionTokens = getFirstAndLastTokens( sourceCode, @@ -66,26 +67,26 @@ export function defineVisitor(context: IndentContext): NodeListener { // foo satisfies T visitor.TSAsExpression(node) }, - TSTypeReference(node: TSESTree.TSTypeReference) { + TSTypeReference( + node: TSESTree.TSTypeReference | TSESTree.TSInstantiationExpression, + ) { // T + // or + // const ErrorMap = Map + // ^^^^^^^^^^^^^^^^^^ if (node.typeParameters) { - const typeNameTokens = getFirstAndLastTokens(sourceCode, node.typeName) + const firstToken = sourceCode.getFirstToken(node) offsets.setOffsetToken( sourceCode.getFirstToken(node.typeParameters), 1, - typeNameTokens.firstToken, + firstToken, ) } }, TSInstantiationExpression(node: TSESTree.TSInstantiationExpression) { // const ErrorMap = Map // ^^^^^^^^^^^^^^^^^^ - const firstToken = sourceCode.getFirstToken(node) - offsets.setOffsetToken( - sourceCode.getFirstToken(node.typeParameters), - 1, - firstToken, - ) + visitor.TSTypeReference(node) }, TSTypeParameterInstantiation( node: From 0bffb75af887303e35f066d8f2b8cf05d650bd7c Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Mon, 28 Nov 2022 21:22:42 +0900 Subject: [PATCH 4/6] feat: add support for accessor property --- package.json | 4 +- src/rules/indent-helpers/ts.ts | 48 ++++++++++++++++++- .../ts-abstract-accessor-property-errors.yaml | 28 +++++++++++ ...ts-abstract-accessor-property-input.svelte | 12 +++++ ...s-abstract-accessor-property-output.svelte | 12 +++++ .../ts-v5/ts-accessor-property01-errors.yaml | 20 ++++++++ .../ts-v5/ts-accessor-property01-input.svelte | 8 ++++ .../ts-accessor-property01-output.svelte | 8 ++++ .../ts-v5/ts-accessor-property02-errors.yaml | 28 +++++++++++ .../ts-v5/ts-accessor-property02-input.svelte | 10 ++++ .../ts-accessor-property02-output.svelte | 10 ++++ .../ts-v5/ts-accessor-property03-errors.yaml | 24 ++++++++++ .../ts-v5/ts-accessor-property03-input.svelte | 9 ++++ .../ts-accessor-property03-output.svelte | 9 ++++ .../ts-v5/ts-accessor-property04-errors.yaml | 28 +++++++++++ .../ts-v5/ts-accessor-property04-input.svelte | 10 ++++ .../ts-accessor-property04-output.svelte | 10 ++++ .../ts-v5/ts-accessor-property05-errors.yaml | 36 ++++++++++++++ .../ts-v5/ts-accessor-property05-input.svelte | 12 +++++ .../ts-accessor-property05-output.svelte | 12 +++++ 20 files changed, 335 insertions(+), 3 deletions(-) create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-output.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-errors.yaml create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-input.svelte create mode 100644 tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-output.svelte diff --git a/package.json b/package.json index 67ac96a9b..7f12f9936 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "@types/prismjs": "^1.26.0", "@types/stylus": "^0.48.38", "@typescript-eslint/eslint-plugin": "^5.4.0", - "@typescript-eslint/parser": "^5.4.1-0", + "@typescript-eslint/parser": "^5.44.1-alpha.15", "@typescript-eslint/parser-v4": "npm:@typescript-eslint/parser@4", "@typescript/vfs": "^1.4.0", "assert": "^2.0.0", @@ -164,7 +164,7 @@ "svelte-adapter-ghpages": "0.0.2", "svelte-i18n": "^3.4.0", "type-coverage": "^2.22.0", - "typescript": "^4.5.2", + "typescript": "^4.9.3", "vite": "^3.1.0-0", "vite-plugin-svelte-md": "^0.1.5", "yaml": "^2.1.1", diff --git a/src/rules/indent-helpers/ts.ts b/src/rules/indent-helpers/ts.ts index ff9efafe9..06d84165f 100644 --- a/src/rules/indent-helpers/ts.ts +++ b/src/rules/indent-helpers/ts.ts @@ -721,6 +721,7 @@ export function defineVisitor(context: IndentContext): NodeListener { node: | TSESTree.TSAbstractMethodDefinition | TSESTree.TSAbstractPropertyDefinition + | TSESTree.TSAbstractAccessorProperty | TSESTree.TSEnumMember, ) { const { keyNode, valueNode } = @@ -774,6 +775,9 @@ export function defineVisitor(context: IndentContext): NodeListener { TSEnumMember(node: TSESTree.TSEnumMember) { visitor.TSAbstractMethodDefinition(node) }, + TSAbstractAccessorProperty(node: TSESTree.TSAbstractAccessorProperty) { + visitor.TSAbstractMethodDefinition(node) + }, TSOptionalType( node: TSESTree.TSOptionalType | TSESTree.TSNonNullExpression, ) { @@ -980,6 +984,48 @@ export function defineVisitor(context: IndentContext): NodeListener { ) } }, + AccessorProperty(node: TSESTree.AccessorProperty) { + const keyNode = node.key + const valueNode = node.value + const firstToken = sourceCode.getFirstToken(node) + const keyTokens = getFirstAndLastTokens(sourceCode, keyNode) + const prefixTokens = sourceCode.getTokensBetween( + firstToken, + keyTokens.firstToken, + ) + if (node.computed) { + prefixTokens.pop() // pop [ + } + offsets.setOffsetToken(prefixTokens, 0, firstToken) + let lastKeyToken + if (node.computed) { + const leftBracketToken = sourceCode.getTokenBefore( + keyTokens.firstToken, + )! + const rightBracketToken = (lastKeyToken = sourceCode.getTokenAfter( + keyTokens.lastToken, + )!) + offsets.setOffsetToken(leftBracketToken, 0, firstToken) + offsets.setOffsetElementList( + [keyNode], + leftBracketToken, + rightBracketToken, + 1, + ) + } else { + offsets.setOffsetToken(keyTokens.firstToken, 0, firstToken) + lastKeyToken = keyTokens.lastToken + } + + if (valueNode != null) { + const initToken = sourceCode.getFirstToken(valueNode) + offsets.setOffsetToken( + [...sourceCode.getTokensBetween(lastKeyToken, initToken), initToken], + 1, + lastKeyToken, + ) + } + }, StaticBlock(node: TSESTree.StaticBlock) { const firstToken = sourceCode.getFirstToken(node) let next = sourceCode.getTokenAfter(firstToken) @@ -1104,7 +1150,7 @@ export function defineVisitor(context: IndentContext): NodeListener { const commonsVisitor: any = { // Process semicolons. ["TSTypeAliasDeclaration, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSImportEqualsDeclaration," + - "TSAbstractMethodDefinition, TSAbstractPropertyDefinition, TSEnumMember," + + "TSAbstractMethodDefinition, TSAbstractPropertyDefinition, AccessorProperty, TSAbstractAccessorProperty, TSEnumMember," + "TSPropertySignature, TSIndexSignature, TSMethodSignature," + "TSAbstractClassProperty, ClassProperty"](node: TSESTree.Node) { const firstToken = sourceCode.getFirstToken(node) diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-errors.yaml new file mode 100644 index 000000000..83be4585e --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-errors.yaml @@ -0,0 +1,28 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 10 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 11 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-input.svelte new file mode 100644 index 000000000..136ca13be --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-input.svelte @@ -0,0 +1,12 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-output.svelte new file mode 100644 index 000000000..26b0047ce --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-abstract-accessor-property-output.svelte @@ -0,0 +1,12 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-errors.yaml new file mode 100644 index 000000000..d3cced0ca --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-errors.yaml @@ -0,0 +1,20 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-input.svelte new file mode 100644 index 000000000..43560c19a --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-input.svelte @@ -0,0 +1,8 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-output.svelte new file mode 100644 index 000000000..5471270d4 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property01-output.svelte @@ -0,0 +1,8 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-errors.yaml new file mode 100644 index 000000000..9f61a9fe0 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-errors.yaml @@ -0,0 +1,28 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 8 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 9 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-input.svelte new file mode 100644 index 000000000..bbf910469 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-input.svelte @@ -0,0 +1,10 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-output.svelte new file mode 100644 index 000000000..c1289b52b --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property02-output.svelte @@ -0,0 +1,10 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-errors.yaml new file mode 100644 index 000000000..4c60dff93 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-errors.yaml @@ -0,0 +1,24 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 8 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-input.svelte new file mode 100644 index 000000000..c6920e2c4 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-input.svelte @@ -0,0 +1,9 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-output.svelte new file mode 100644 index 000000000..aab3cb147 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property03-output.svelte @@ -0,0 +1,9 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-errors.yaml new file mode 100644 index 000000000..9f61a9fe0 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-errors.yaml @@ -0,0 +1,28 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 8 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 9 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-input.svelte new file mode 100644 index 000000000..f5f4328fa --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-input.svelte @@ -0,0 +1,10 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-output.svelte new file mode 100644 index 000000000..ada731bb8 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property04-output.svelte @@ -0,0 +1,10 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-errors.yaml b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-errors.yaml new file mode 100644 index 000000000..04fe2222a --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-errors.yaml @@ -0,0 +1,36 @@ +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 3 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 4 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 5 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 6 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 7 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 8 + column: 1 + suggestions: null +- message: Expected indentation of 6 spaces but found 0 spaces. + line: 9 + column: 1 + suggestions: null +- message: Expected indentation of 4 spaces but found 0 spaces. + line: 10 + column: 1 + suggestions: null +- message: Expected indentation of 2 spaces but found 0 spaces. + line: 11 + column: 1 + suggestions: null diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-input.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-input.svelte new file mode 100644 index 000000000..2962ff0d6 --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-input.svelte @@ -0,0 +1,12 @@ + + diff --git a/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-output.svelte b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-output.svelte new file mode 100644 index 000000000..a0c02dcdd --- /dev/null +++ b/tests/fixtures/rules/indent/invalid/ts-v5/ts-accessor-property05-output.svelte @@ -0,0 +1,12 @@ + + From b353d2dc2aea4c7cc4ac20d22b700bb27b855ecd Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Tue, 29 Nov 2022 08:52:42 +0900 Subject: [PATCH 5/6] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f12f9936..a965a96f9 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "@types/prismjs": "^1.26.0", "@types/stylus": "^0.48.38", "@typescript-eslint/eslint-plugin": "^5.4.0", - "@typescript-eslint/parser": "^5.44.1-alpha.15", + "@typescript-eslint/parser": "^5.45.0", "@typescript-eslint/parser-v4": "npm:@typescript-eslint/parser@4", "@typescript/vfs": "^1.4.0", "assert": "^2.0.0", From e90a859d80701b6b417799b7d63c2503a36dd6e7 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Tue, 29 Nov 2022 08:53:03 +0900 Subject: [PATCH 6/6] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a965a96f9..41112908b 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@types/postcss-safe-parser": "^5.0.1", "@types/prismjs": "^1.26.0", "@types/stylus": "^0.48.38", - "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", "@typescript-eslint/parser-v4": "npm:@typescript-eslint/parser@4", "@typescript/vfs": "^1.4.0",