Skip to content

Commit 2f3b5b9

Browse files
committed
Prefer type arguments next to typeof operator
Fixes #951, #957
1 parent 6ae8fcb commit 2f3b5b9

7 files changed

+135
-0
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1768,6 +1768,7 @@ repository:
17681768
'0': { name: keyword.operator.expression.typeof.ts }
17691769
end: (?=[,);}\]=>:&|{\?]|(extends\s+)|$|{{endOfStatement}})
17701770
patterns:
1771+
- include: '#type-arguments'
17711772
- include: '#expression'
17721773

17731774
#literals

TypeScript.tmLanguage

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5747,6 +5747,10 @@
57475747
<string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
57485748
<key>patterns</key>
57495749
<array>
5750+
<dict>
5751+
<key>include</key>
5752+
<string>#type-arguments</string>
5753+
</dict>
57505754
<dict>
57515755
<key>include</key>
57525756
<string>#expression</string>

TypeScriptReact.tmLanguage

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5693,6 +5693,10 @@
56935693
<string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
56945694
<key>patterns</key>
56955695
<array>
5696+
<dict>
5697+
<key>include</key>
5698+
<string>#type-arguments</string>
5699+
</dict>
56965700
<dict>
56975701
<key>include</key>
56985702
<string>#expression</string>

tests/baselines/issue951.baseline.txt

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
original file
2+
-----------------------------------
3+
type thing = <T extends object>(what: T) => ReturnType<typeof generic<T>>
4+
-----------------------------------
5+
6+
Grammar: TypeScript.tmLanguage
7+
-----------------------------------
8+
>type thing = <T extends object>(what: T) => ReturnType<typeof generic<T>>
9+
^^^^
10+
source.ts meta.type.declaration.ts storage.type.type.ts
11+
^
12+
source.ts meta.type.declaration.ts
13+
^^^^^
14+
source.ts meta.type.declaration.ts entity.name.type.alias.ts
15+
^
16+
source.ts meta.type.declaration.ts
17+
^
18+
source.ts meta.type.declaration.ts keyword.operator.assignment.ts
19+
^
20+
source.ts meta.type.declaration.ts
21+
^
22+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
23+
^
24+
source.ts meta.type.declaration.ts meta.type.parameters.ts entity.name.type.ts
25+
^
26+
source.ts meta.type.declaration.ts meta.type.parameters.ts
27+
^^^^^^^
28+
source.ts meta.type.declaration.ts meta.type.parameters.ts storage.modifier.ts
29+
^
30+
source.ts meta.type.declaration.ts meta.type.parameters.ts
31+
^^^^^^
32+
source.ts meta.type.declaration.ts meta.type.parameters.ts support.type.builtin.ts
33+
^
34+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
35+
^
36+
source.ts meta.type.declaration.ts meta.type.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
37+
^^^^
38+
source.ts meta.type.declaration.ts meta.type.function.ts meta.parameters.ts variable.parameter.ts
39+
^
40+
source.ts meta.type.declaration.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
41+
^
42+
source.ts meta.type.declaration.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts
43+
^
44+
source.ts meta.type.declaration.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
45+
^
46+
source.ts meta.type.declaration.ts meta.type.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
47+
^
48+
source.ts meta.type.declaration.ts
49+
^^
50+
source.ts meta.type.declaration.ts meta.type.function.return.ts storage.type.function.arrow.ts
51+
^
52+
source.ts meta.type.declaration.ts meta.type.function.return.ts
53+
^^^^^^^^^^
54+
source.ts meta.type.declaration.ts meta.type.function.return.ts entity.name.type.ts
55+
^
56+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
57+
^^^^^^
58+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts keyword.operator.expression.typeof.ts
59+
^
60+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts
61+
^^^^^^^
62+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts variable.other.readwrite.ts
63+
^
64+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
65+
^
66+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts meta.type.parameters.ts entity.name.type.ts
67+
^
68+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
69+
^
70+
source.ts meta.type.declaration.ts meta.type.function.return.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts

tests/baselines/issue957.baseline.txt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
original file
2+
-----------------------------------
3+
export type UseQuery<TData, TVariables> = typeof useQuery<TData, TVariables>
4+
-----------------------------------
5+
6+
Grammar: TypeScript.tmLanguage
7+
-----------------------------------
8+
>export type UseQuery<TData, TVariables> = typeof useQuery<TData, TVariables>
9+
^^^^^^
10+
source.ts meta.type.declaration.ts keyword.control.export.ts
11+
^
12+
source.ts meta.type.declaration.ts
13+
^^^^
14+
source.ts meta.type.declaration.ts storage.type.type.ts
15+
^
16+
source.ts meta.type.declaration.ts
17+
^^^^^^^^
18+
source.ts meta.type.declaration.ts entity.name.type.alias.ts
19+
^
20+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
21+
^^^^^
22+
source.ts meta.type.declaration.ts meta.type.parameters.ts entity.name.type.ts
23+
^
24+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.separator.comma.ts
25+
^
26+
source.ts meta.type.declaration.ts meta.type.parameters.ts
27+
^^^^^^^^^^
28+
source.ts meta.type.declaration.ts meta.type.parameters.ts entity.name.type.ts
29+
^
30+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
31+
^
32+
source.ts meta.type.declaration.ts
33+
^
34+
source.ts meta.type.declaration.ts keyword.operator.assignment.ts
35+
^
36+
source.ts meta.type.declaration.ts
37+
^^^^^^
38+
source.ts meta.type.declaration.ts keyword.operator.expression.typeof.ts
39+
^
40+
source.ts meta.type.declaration.ts
41+
^^^^^^^^
42+
source.ts meta.type.declaration.ts variable.other.readwrite.ts
43+
^
44+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
45+
^^^^^
46+
source.ts meta.type.declaration.ts meta.type.parameters.ts entity.name.type.ts
47+
^
48+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.separator.comma.ts
49+
^
50+
source.ts meta.type.declaration.ts meta.type.parameters.ts
51+
^^^^^^^^^^
52+
source.ts meta.type.declaration.ts meta.type.parameters.ts entity.name.type.ts
53+
^
54+
source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts

tests/cases/issue951.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
type thing = <T extends object>(what: T) => ReturnType<typeof generic<T>>

tests/cases/issue957.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export type UseQuery<TData, TVariables> = typeof useQuery<TData, TVariables>

0 commit comments

Comments
 (0)