Skip to content

Commit b59541d

Browse files
committed
Improve indent rules to support more ts syntax
1 parent a15d036 commit b59541d

File tree

6 files changed

+56
-1
lines changed

6 files changed

+56
-1
lines changed

lib/utils/indent-common.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1174,8 +1174,12 @@ module.exports.defineVisitor = function create(
11741174
tokenStore.getTokenAfter(node.callee, isOpeningParenToken)
11751175
)
11761176

1177+
if (node.typeParameters) {
1178+
setOffset(tokenStore.getFirstToken(node.typeParameters), 1, firstToken)
1179+
}
1180+
11771181
for (const optionalToken of tokenStore.getTokensBetween(
1178-
tokenStore.getLastToken(node.callee),
1182+
tokenStore.getLastToken(node.typeParameters || node.callee),
11791183
leftToken,
11801184
isOptionalToken
11811185
)) {
@@ -1698,6 +1702,10 @@ module.exports.defineVisitor = function create(
16981702
)
16991703
: null
17001704

1705+
if (node.typeParameters) {
1706+
setOffset(tokenStore.getFirstToken(node.typeParameters), 1, calleeToken)
1707+
}
1708+
17011709
setOffset(calleeToken, 1, newToken)
17021710
if (leftToken != null) {
17031711
setOffset(leftToken, 1, calleeToken)

lib/utils/indent-ts.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,6 +1266,19 @@ function defineVisitor({
12661266
setOffset(quasiTokens, 0, firstToken)
12671267
setOffset(expressionToken, 1, firstToken)
12681268
},
1269+
/**
1270+
* Process instantiation expression
1271+
*
1272+
* e.g.
1273+
* ```
1274+
* const ErrorMap = Map<string, Error>;
1275+
* // ^^^^^^^^^^^^^^^^^^
1276+
* ```
1277+
*/
1278+
TSInstantiationExpression(node) {
1279+
const firstToken = tokenStore.getFirstToken(node)
1280+
setOffset(tokenStore.getFirstToken(node.typeParameters), 1, firstToken)
1281+
},
12691282
// ----------------------------------------------------------------------
12701283
// NON-STANDARD NODES
12711284
// ----------------------------------------------------------------------
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!--{"parserOptions": {"parser":"@typescript-eslint/parser"}}-->
2+
<script lang="ts">
3+
foo
4+
<
5+
T
6+
,
7+
U
8+
>
9+
(
10+
arg
11+
)
12+
</script>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<!--{"parserOptions": {"parser":"@typescript-eslint/parser"}, "requirements": { "@typescript-eslint/parser": ">=5.26.0"}-->
2+
<script lang="ts">
3+
const ErrorMap = Map
4+
<
5+
string,
6+
Error
7+
>;
8+
</script>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!--{"parserOptions": {"parser":"@typescript-eslint/parser"}}-->
2+
<script lang="ts">
3+
const foo = new
4+
Foo
5+
<
6+
T
7+
,
8+
U
9+
>
10+
(
11+
arg
12+
)
13+
</script>

typings/eslint-plugin-vue/util-types/ast/es-ast.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,7 @@ export interface NewExpression extends HasParentNode {
525525
type: 'NewExpression'
526526
callee: Expression
527527
arguments: (Expression | SpreadElement)[]
528+
typeParameters?: TSTypeParameterInstantiation
528529
}
529530
interface BaseMemberExpression extends HasParentNode {
530531
type: 'MemberExpression'

0 commit comments

Comments
 (0)