Skip to content

Commit 0bffb75

Browse files
committed
feat: add support for accessor property
1 parent 96da4cb commit 0bffb75

20 files changed

+335
-3
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
"@types/prismjs": "^1.26.0",
112112
"@types/stylus": "^0.48.38",
113113
"@typescript-eslint/eslint-plugin": "^5.4.0",
114-
"@typescript-eslint/parser": "^5.4.1-0",
114+
"@typescript-eslint/parser": "^5.44.1-alpha.15",
115115
"@typescript-eslint/parser-v4": "npm:@typescript-eslint/parser@4",
116116
"@typescript/vfs": "^1.4.0",
117117
"assert": "^2.0.0",
@@ -164,7 +164,7 @@
164164
"svelte-adapter-ghpages": "0.0.2",
165165
"svelte-i18n": "^3.4.0",
166166
"type-coverage": "^2.22.0",
167-
"typescript": "^4.5.2",
167+
"typescript": "^4.9.3",
168168
"vite": "^3.1.0-0",
169169
"vite-plugin-svelte-md": "^0.1.5",
170170
"yaml": "^2.1.1",

src/rules/indent-helpers/ts.ts

+47-1
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,7 @@ export function defineVisitor(context: IndentContext): NodeListener {
721721
node:
722722
| TSESTree.TSAbstractMethodDefinition
723723
| TSESTree.TSAbstractPropertyDefinition
724+
| TSESTree.TSAbstractAccessorProperty
724725
| TSESTree.TSEnumMember,
725726
) {
726727
const { keyNode, valueNode } =
@@ -774,6 +775,9 @@ export function defineVisitor(context: IndentContext): NodeListener {
774775
TSEnumMember(node: TSESTree.TSEnumMember) {
775776
visitor.TSAbstractMethodDefinition(node)
776777
},
778+
TSAbstractAccessorProperty(node: TSESTree.TSAbstractAccessorProperty) {
779+
visitor.TSAbstractMethodDefinition(node)
780+
},
777781
TSOptionalType(
778782
node: TSESTree.TSOptionalType | TSESTree.TSNonNullExpression,
779783
) {
@@ -980,6 +984,48 @@ export function defineVisitor(context: IndentContext): NodeListener {
980984
)
981985
}
982986
},
987+
AccessorProperty(node: TSESTree.AccessorProperty) {
988+
const keyNode = node.key
989+
const valueNode = node.value
990+
const firstToken = sourceCode.getFirstToken(node)
991+
const keyTokens = getFirstAndLastTokens(sourceCode, keyNode)
992+
const prefixTokens = sourceCode.getTokensBetween(
993+
firstToken,
994+
keyTokens.firstToken,
995+
)
996+
if (node.computed) {
997+
prefixTokens.pop() // pop [
998+
}
999+
offsets.setOffsetToken(prefixTokens, 0, firstToken)
1000+
let lastKeyToken
1001+
if (node.computed) {
1002+
const leftBracketToken = sourceCode.getTokenBefore(
1003+
keyTokens.firstToken,
1004+
)!
1005+
const rightBracketToken = (lastKeyToken = sourceCode.getTokenAfter(
1006+
keyTokens.lastToken,
1007+
)!)
1008+
offsets.setOffsetToken(leftBracketToken, 0, firstToken)
1009+
offsets.setOffsetElementList(
1010+
[keyNode],
1011+
leftBracketToken,
1012+
rightBracketToken,
1013+
1,
1014+
)
1015+
} else {
1016+
offsets.setOffsetToken(keyTokens.firstToken, 0, firstToken)
1017+
lastKeyToken = keyTokens.lastToken
1018+
}
1019+
1020+
if (valueNode != null) {
1021+
const initToken = sourceCode.getFirstToken(valueNode)
1022+
offsets.setOffsetToken(
1023+
[...sourceCode.getTokensBetween(lastKeyToken, initToken), initToken],
1024+
1,
1025+
lastKeyToken,
1026+
)
1027+
}
1028+
},
9831029
StaticBlock(node: TSESTree.StaticBlock) {
9841030
const firstToken = sourceCode.getFirstToken(node)
9851031
let next = sourceCode.getTokenAfter(firstToken)
@@ -1104,7 +1150,7 @@ export function defineVisitor(context: IndentContext): NodeListener {
11041150
const commonsVisitor: any = {
11051151
// Process semicolons.
11061152
["TSTypeAliasDeclaration, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSImportEqualsDeclaration," +
1107-
"TSAbstractMethodDefinition, TSAbstractPropertyDefinition, TSEnumMember," +
1153+
"TSAbstractMethodDefinition, TSAbstractPropertyDefinition, AccessorProperty, TSAbstractAccessorProperty, TSEnumMember," +
11081154
"TSPropertySignature, TSIndexSignature, TSMethodSignature," +
11091155
"TSAbstractClassProperty, ClassProperty"](node: TSESTree.Node) {
11101156
const firstToken = sourceCode.getFirstToken(node)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 4 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 6 spaces but found 0 spaces.
14+
line: 6
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 4 spaces but found 0 spaces.
18+
line: 7
19+
column: 1
20+
suggestions: null
21+
- message: Expected indentation of 4 spaces but found 0 spaces.
22+
line: 10
23+
column: 1
24+
suggestions: null
25+
- message: Expected indentation of 2 spaces but found 0 spaces.
26+
line: 11
27+
column: 1
28+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
abstract class Foo {
4+
abstract accessor
5+
foo:
6+
number
7+
// parser v5 does not parse value.
8+
// =
9+
// 1
10+
;
11+
}
12+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
abstract class Foo {
4+
abstract accessor
5+
foo:
6+
number
7+
// parser v5 does not parse value.
8+
// =
9+
// 1
10+
;
11+
}
12+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 4 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 4 spaces but found 0 spaces.
14+
line: 6
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 2 spaces but found 0 spaces.
18+
line: 7
19+
column: 1
20+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
accessor
5+
foo
6+
;
7+
}
8+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
accessor
5+
foo
6+
;
7+
}
8+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 4 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 6 spaces but found 0 spaces.
14+
line: 6
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 6 spaces but found 0 spaces.
18+
line: 7
19+
column: 1
20+
suggestions: null
21+
- message: Expected indentation of 4 spaces but found 0 spaces.
22+
line: 8
23+
column: 1
24+
suggestions: null
25+
- message: Expected indentation of 2 spaces but found 0 spaces.
26+
line: 9
27+
column: 1
28+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
accessor
5+
foo
6+
=
7+
2
8+
;
9+
}
10+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
accessor
5+
foo
6+
=
7+
2
8+
;
9+
}
10+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 4 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 6 spaces but found 0 spaces.
14+
line: 6
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 4 spaces but found 0 spaces.
18+
line: 7
19+
column: 1
20+
suggestions: null
21+
- message: Expected indentation of 2 spaces but found 0 spaces.
22+
line: 8
23+
column: 1
24+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
declare accessor
5+
foo:
6+
number
7+
;
8+
}
9+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
declare accessor
5+
foo:
6+
number
7+
;
8+
}
9+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 4 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 6 spaces but found 0 spaces.
14+
line: 6
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 6 spaces but found 0 spaces.
18+
line: 7
19+
column: 1
20+
suggestions: null
21+
- message: Expected indentation of 4 spaces but found 0 spaces.
22+
line: 8
23+
column: 1
24+
suggestions: null
25+
- message: Expected indentation of 2 spaces but found 0 spaces.
26+
line: 9
27+
column: 1
28+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
override accessor
5+
foo
6+
=
7+
2
8+
;
9+
}
10+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
override accessor
5+
foo
6+
=
7+
2
8+
;
9+
}
10+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 4 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 6 spaces but found 0 spaces.
14+
line: 6
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 4 spaces but found 0 spaces.
18+
line: 7
19+
column: 1
20+
suggestions: null
21+
- message: Expected indentation of 6 spaces but found 0 spaces.
22+
line: 8
23+
column: 1
24+
suggestions: null
25+
- message: Expected indentation of 6 spaces but found 0 spaces.
26+
line: 9
27+
column: 1
28+
suggestions: null
29+
- message: Expected indentation of 4 spaces but found 0 spaces.
30+
line: 10
31+
column: 1
32+
suggestions: null
33+
- message: Expected indentation of 2 spaces but found 0 spaces.
34+
line: 11
35+
column: 1
36+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
accessor
5+
[
6+
1
7+
]
8+
=
9+
2
10+
;
11+
}
12+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!-- prettier-ignore -->
2+
<script lang="ts">
3+
class Foo {
4+
accessor
5+
[
6+
1
7+
]
8+
=
9+
2
10+
;
11+
}
12+
</script>

0 commit comments

Comments
 (0)