Skip to content

Commit b38c52f

Browse files
authored
Merge pull request #902 from microsoft/infer-extends
Updated to support 'infer..extends'
2 parents 08fbf95 + 4d30ff8 commit b38c52f

7 files changed

+299
-70
lines changed

TypeScript.YAML-tmLanguage

+11-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,18 @@ 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+
- match: '{{startOfIdentifier}}(infer)\s+({{identifier}}){{endOfIdentifier}}(?:\s+(extends){{endOfIdentifier}})?'
2546+
name: meta.type.infer.ts
2547+
captures:
2548+
'1': { name: keyword.operator.expression.infer.ts }
2549+
'2': { name: entity.name.type.ts }
2550+
'3': { name: keyword.operator.expression.extends.ts }
2551+
25442552
type-predicate-operator:
25452553
patterns:
25462554
- match: '{{startOfIdentifier}}(?:(asserts)\s+)?(?!asserts)(?:(this)|({{identifier}}))\s(is){{endOfIdentifier}}'

TypeScript.tmLanguage

+35-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,39 @@
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:]]*)(?![_$[: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>
76917719
</dict>
76927720
</array>
76937721
</dict>

TypeScriptReact.tmLanguage

+35-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,39 @@
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:]]*)(?![_$[: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>
76397667
</dict>
76407668
</array>
76417669
</dict>

package-lock.json

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

0 commit comments

Comments
 (0)