Skip to content

Commit df2caa8

Browse files
committed
Updated to support 'infer..extends'
1 parent 08fbf95 commit df2caa8

7 files changed

+319
-19
lines changed

TypeScript.YAML-tmLanguage

+23-3
Original file line numberDiff line numberDiff line change
@@ -2332,8 +2332,8 @@ repository:
23322332
- include: '#type-parameters'
23332333
- include: '#type-tuple'
23342334
- include: '#type-object'
2335-
- include: '#type-conditional'
23362335
- include: '#type-operators'
2336+
- include: '#type-conditional'
23372337
- include: '#type-fn-type-parameters'
23382338
- include: '#type-paren-or-function-parameters'
23392339
- include: '#type-function-return-type'
@@ -2519,6 +2519,7 @@ repository:
25192519
type-operators:
25202520
patterns:
25212521
- include: '#typeof-operator'
2522+
- include: '#type-infer'
25222523
# Handle the object types followed by | or & operator as { can be used as end of Type in many places and this avoids tripping that
25232524
- begin: ([&|])(?=\s*\{)
25242525
beginCaptures:
@@ -2536,11 +2537,30 @@ repository:
25362537
match: '{{startOfIdentifier}}keyof{{endOfIdentifier}}'
25372538
- name: keyword.operator.ternary.ts
25382539
match: (\?|\:)
2539-
- name: keyword.operator.expression.infer.ts
2540-
match: '{{startOfIdentifier}}infer(?=\s+[_$[:alpha:]])'
25412540
- name: keyword.operator.expression.import.ts
25422541
match: '{{startOfIdentifier}}import(?=\s*\()'
25432542

2543+
type-infer:
2544+
patterns:
2545+
# try to match infer..extends on a single line
2546+
- match: '{{startOfIdentifier}}(infer)\s+({{identifier}})\s+(extends){{endOfIdentifier}}'
2547+
name: meta.type.infer.ts
2548+
captures:
2549+
'1': { name: keyword.operator.expression.infer.ts }
2550+
'2': { name: entity.name.type.ts }
2551+
'3': { name: keyword.operator.expression.extends.ts }
2552+
# alternatively, match across multiple lines
2553+
- begin: '{{startOfIdentifier}}infer(?=\s+[_$[:alpha:]])'
2554+
beginCaptures:
2555+
'0': { name: keyword.operator.expression.infer.ts }
2556+
end: '(?={{lookAheadEndOfType}}|[''"`|&])'
2557+
name: meta.type.infer.ts
2558+
patterns:
2559+
- name: keyword.operator.expression.extends.ts
2560+
match: '{{startOfIdentifier}}extends{{endOfIdentifier}}'
2561+
- name: entity.name.type.ts
2562+
match: '{{startOfIdentifier}}{{identifier}}{{endOfIdentifier}}'
2563+
25442564
type-predicate-operator:
25452565
patterns:
25462566
- match: '{{startOfIdentifier}}(?:(asserts)\s+)?(?!asserts)(?:(this)|({{identifier}}))\s(is){{endOfIdentifier}}'

TypeScript.tmLanguage

+66-7
Original file line numberDiff line numberDiff line change
@@ -7076,11 +7076,11 @@
70767076
</dict>
70777077
<dict>
70787078
<key>include</key>
7079-
<string>#type-conditional</string>
7079+
<string>#type-operators</string>
70807080
</dict>
70817081
<dict>
70827082
<key>include</key>
7083-
<string>#type-operators</string>
7083+
<string>#type-conditional</string>
70847084
</dict>
70857085
<dict>
70867086
<key>include</key>
@@ -7630,6 +7630,10 @@
76307630
<key>include</key>
76317631
<string>#typeof-operator</string>
76327632
</dict>
7633+
<dict>
7634+
<key>include</key>
7635+
<string>#type-infer</string>
7636+
</dict>
76337637
<dict>
76347638
<key>begin</key>
76357639
<string>([&amp;|])(?=\s*\{)</string>
@@ -7679,15 +7683,70 @@
76797683
</dict>
76807684
<dict>
76817685
<key>name</key>
7682-
<string>keyword.operator.expression.infer.ts</string>
7686+
<string>keyword.operator.expression.import.ts</string>
76837687
<key>match</key>
7684-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))infer(?=\s+[_$[:alpha:]])</string>
7688+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string>
76857689
</dict>
7690+
</array>
7691+
</dict>
7692+
<key>type-infer</key>
7693+
<dict>
7694+
<key>patterns</key>
7695+
<array>
76867696
<dict>
7687-
<key>name</key>
7688-
<string>keyword.operator.expression.import.ts</string>
76897697
<key>match</key>
7690-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string>
7698+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(infer)\s+([_$[:alpha:]][_$[:alnum:]]*)\s+(extends)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7699+
<key>name</key>
7700+
<string>meta.type.infer.ts</string>
7701+
<key>captures</key>
7702+
<dict>
7703+
<key>1</key>
7704+
<dict>
7705+
<key>name</key>
7706+
<string>keyword.operator.expression.infer.ts</string>
7707+
</dict>
7708+
<key>2</key>
7709+
<dict>
7710+
<key>name</key>
7711+
<string>entity.name.type.ts</string>
7712+
</dict>
7713+
<key>3</key>
7714+
<dict>
7715+
<key>name</key>
7716+
<string>keyword.operator.expression.extends.ts</string>
7717+
</dict>
7718+
</dict>
7719+
</dict>
7720+
<dict>
7721+
<key>begin</key>
7722+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))infer(?=\s+[_$[:alpha:]])</string>
7723+
<key>beginCaptures</key>
7724+
<dict>
7725+
<key>0</key>
7726+
<dict>
7727+
<key>name</key>
7728+
<string>keyword.operator.expression.infer.ts</string>
7729+
</dict>
7730+
</dict>
7731+
<key>end</key>
7732+
<string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|['"`|&amp;])</string>
7733+
<key>name</key>
7734+
<string>meta.type.infer.ts</string>
7735+
<key>patterns</key>
7736+
<array>
7737+
<dict>
7738+
<key>name</key>
7739+
<string>keyword.operator.expression.extends.ts</string>
7740+
<key>match</key>
7741+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))extends(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7742+
</dict>
7743+
<dict>
7744+
<key>name</key>
7745+
<string>entity.name.type.ts</string>
7746+
<key>match</key>
7747+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))[_$[:alpha:]][_$[:alnum:]]*(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7748+
</dict>
7749+
</array>
76917750
</dict>
76927751
</array>
76937752
</dict>

TypeScriptReact.tmLanguage

+66-7
Original file line numberDiff line numberDiff line change
@@ -7024,11 +7024,11 @@
70247024
</dict>
70257025
<dict>
70267026
<key>include</key>
7027-
<string>#type-conditional</string>
7027+
<string>#type-operators</string>
70287028
</dict>
70297029
<dict>
70307030
<key>include</key>
7031-
<string>#type-operators</string>
7031+
<string>#type-conditional</string>
70327032
</dict>
70337033
<dict>
70347034
<key>include</key>
@@ -7578,6 +7578,10 @@
75787578
<key>include</key>
75797579
<string>#typeof-operator</string>
75807580
</dict>
7581+
<dict>
7582+
<key>include</key>
7583+
<string>#type-infer</string>
7584+
</dict>
75817585
<dict>
75827586
<key>begin</key>
75837587
<string>([&amp;|])(?=\s*\{)</string>
@@ -7627,15 +7631,70 @@
76277631
</dict>
76287632
<dict>
76297633
<key>name</key>
7630-
<string>keyword.operator.expression.infer.tsx</string>
7634+
<string>keyword.operator.expression.import.tsx</string>
76317635
<key>match</key>
7632-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))infer(?=\s+[_$[:alpha:]])</string>
7636+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string>
76337637
</dict>
7638+
</array>
7639+
</dict>
7640+
<key>type-infer</key>
7641+
<dict>
7642+
<key>patterns</key>
7643+
<array>
76347644
<dict>
7635-
<key>name</key>
7636-
<string>keyword.operator.expression.import.tsx</string>
76377645
<key>match</key>
7638-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string>
7646+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(infer)\s+([_$[:alpha:]][_$[:alnum:]]*)\s+(extends)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7647+
<key>name</key>
7648+
<string>meta.type.infer.tsx</string>
7649+
<key>captures</key>
7650+
<dict>
7651+
<key>1</key>
7652+
<dict>
7653+
<key>name</key>
7654+
<string>keyword.operator.expression.infer.tsx</string>
7655+
</dict>
7656+
<key>2</key>
7657+
<dict>
7658+
<key>name</key>
7659+
<string>entity.name.type.tsx</string>
7660+
</dict>
7661+
<key>3</key>
7662+
<dict>
7663+
<key>name</key>
7664+
<string>keyword.operator.expression.extends.tsx</string>
7665+
</dict>
7666+
</dict>
7667+
</dict>
7668+
<dict>
7669+
<key>begin</key>
7670+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))infer(?=\s+[_$[:alpha:]])</string>
7671+
<key>beginCaptures</key>
7672+
<dict>
7673+
<key>0</key>
7674+
<dict>
7675+
<key>name</key>
7676+
<string>keyword.operator.expression.infer.tsx</string>
7677+
</dict>
7678+
</dict>
7679+
<key>end</key>
7680+
<string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|['"`|&amp;])</string>
7681+
<key>name</key>
7682+
<string>meta.type.infer.tsx</string>
7683+
<key>patterns</key>
7684+
<array>
7685+
<dict>
7686+
<key>name</key>
7687+
<string>keyword.operator.expression.extends.tsx</string>
7688+
<key>match</key>
7689+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))extends(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7690+
</dict>
7691+
<dict>
7692+
<key>name</key>
7693+
<string>entity.name.type.tsx</string>
7694+
<key>match</key>
7695+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))[_$[:alpha:]][_$[:alnum:]]*(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7696+
</dict>
7697+
</array>
76397698
</dict>
76407699
</array>
76417700
</dict>

package-lock.json

+66
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"mocha": "latest",
2424
"plist": "latest",
2525
"typescript": "latest",
26+
"vscode-grammar-updater": "^1.0.4",
2627
"vscode-textmate": "^4.1.1"
2728
},
2829
"devDependencies": {

0 commit comments

Comments
 (0)