Skip to content

Commit c274452

Browse files
committed
Satisfies operator
Fixes #933
1 parent 44d7357 commit c274452

File tree

5 files changed

+77
-18
lines changed

5 files changed

+77
-18
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,13 +1385,13 @@ repository:
13851385
- include: '#array-literal'
13861386
- name: meta.object.member.ts meta.object-literal.key.ts
13871387
begin: (?=[\'\"\`])
1388-
end: (?=:)|((?<=[\'\"\`])(?=((\s*[\(\<,}])|(\s+(as)\s+))))
1388+
end: (?=:)|((?<=[\'\"\`])(?=((\s*[\(\<,}])|(\s+(as|satisifies)\s+))))
13891389
patterns:
13901390
- include: '#comment'
13911391
- include: '#string'
13921392
- name: meta.object.member.ts meta.object-literal.key.ts
13931393
begin: (?x)(?={{anyNumber}})
1394-
end: (?=:)|(?=\s*([\(\<,}])|(\s+as\s+))
1394+
end: (?=:)|(?=\s*([\(\<,}])|(\s+as|satisifies\s+))
13951395
patterns:
13961396
- include: '#comment'
13971397
- include: '#numeric-literal'
@@ -1432,10 +1432,11 @@ repository:
14321432
'1': { name: keyword.control.as.ts }
14331433
'2': { name: storage.modifier.ts }
14341434
- name: meta.object.member.ts
1435-
begin: '{{startOfIdentifier}}(as)\s+'
1435+
begin: '{{startOfIdentifier}}(?:(as)|(satisfies))\s+'
14361436
beginCaptures:
14371437
'1': { name: keyword.control.as.ts }
1438-
end: (?={{lookAheadEndOfType}}|^|({{startOfIdentifier}}(as)\s+))
1438+
'2': { name: keyword.control.satisfies.ts }
1439+
end: (?={{lookAheadEndOfType}}|^|({{startOfIdentifier}}(as|satisifies)\s+))
14391440
patterns:
14401441
- include: '#type'
14411442
- name: meta.object.member.ts
@@ -1712,10 +1713,11 @@ repository:
17121713
captures:
17131714
'1': { name: keyword.control.as.ts }
17141715
'2': { name: storage.modifier.ts }
1715-
- begin: '{{startOfIdentifier}}(as)\s+'
1716+
- begin: '{{startOfIdentifier}}(?:(as)|(satisfies))\s+'
17161717
beginCaptures:
17171718
'1': { name: keyword.control.as.ts }
1718-
end: (?=^|{{lookAheadEndOfType}}|({{startOfIdentifier}}(as)\s+)|(\s+\<))
1719+
'2': { name: keyword.control.satisfies.ts }
1720+
end: (?=^|{{lookAheadEndOfType}}|({{startOfIdentifier}}(as|satisifies)\s+)|(\s+\<))
17191721
patterns:
17201722
- include: '#type'
17211723
- name: keyword.operator.spread.ts

TypeScript.tmLanguage

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4427,7 +4427,7 @@
44274427
<key>begin</key>
44284428
<string>(?=[\'\"\`])</string>
44294429
<key>end</key>
4430-
<string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as)\s+))))</string>
4430+
<string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as|satisifies)\s+))))</string>
44314431
<key>patterns</key>
44324432
<array>
44334433
<dict>
@@ -4455,7 +4455,7 @@
44554455
(?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
44564456
)(?!\$)))</string>
44574457
<key>end</key>
4458-
<string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as\s+))</string>
4458+
<string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as|satisifies\s+))</string>
44594459
<key>patterns</key>
44604460
<array>
44614461
<dict>
@@ -4621,17 +4621,22 @@
46214621
<key>name</key>
46224622
<string>meta.object.member.ts</string>
46234623
<key>begin</key>
4624-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
4624+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string>
46254625
<key>beginCaptures</key>
46264626
<dict>
46274627
<key>1</key>
46284628
<dict>
46294629
<key>name</key>
46304630
<string>keyword.control.as.ts</string>
46314631
</dict>
4632+
<key>2</key>
4633+
<dict>
4634+
<key>name</key>
4635+
<string>keyword.control.satisfies.ts</string>
4636+
</dict>
46324637
</dict>
46334638
<key>end</key>
4634-
<string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+))</string>
4639+
<string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+))</string>
46354640
<key>patterns</key>
46364641
<array>
46374642
<dict>
@@ -5563,17 +5568,22 @@
55635568
</dict>
55645569
<dict>
55655570
<key>begin</key>
5566-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
5571+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string>
55675572
<key>beginCaptures</key>
55685573
<dict>
55695574
<key>1</key>
55705575
<dict>
55715576
<key>name</key>
55725577
<string>keyword.control.as.ts</string>
55735578
</dict>
5579+
<key>2</key>
5580+
<dict>
5581+
<key>name</key>
5582+
<string>keyword.control.satisfies.ts</string>
5583+
</dict>
55745584
</dict>
55755585
<key>end</key>
5576-
<string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+)|(\s+\&lt;))</string>
5586+
<string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+)|(\s+\&lt;))</string>
55775587
<key>patterns</key>
55785588
<array>
55795589
<dict>

TypeScriptReact.tmLanguage

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4449,7 +4449,7 @@
44494449
<key>begin</key>
44504450
<string>(?=[\'\"\`])</string>
44514451
<key>end</key>
4452-
<string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as)\s+))))</string>
4452+
<string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as|satisifies)\s+))))</string>
44534453
<key>patterns</key>
44544454
<array>
44554455
<dict>
@@ -4477,7 +4477,7 @@
44774477
(?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
44784478
)(?!\$)))</string>
44794479
<key>end</key>
4480-
<string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as\s+))</string>
4480+
<string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as|satisifies\s+))</string>
44814481
<key>patterns</key>
44824482
<array>
44834483
<dict>
@@ -4645,17 +4645,22 @@
46454645
<key>name</key>
46464646
<string>meta.object.member.tsx</string>
46474647
<key>begin</key>
4648-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
4648+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string>
46494649
<key>beginCaptures</key>
46504650
<dict>
46514651
<key>1</key>
46524652
<dict>
46534653
<key>name</key>
46544654
<string>keyword.control.as.tsx</string>
46554655
</dict>
4656+
<key>2</key>
4657+
<dict>
4658+
<key>name</key>
4659+
<string>keyword.control.satisfies.tsx</string>
4660+
</dict>
46564661
</dict>
46574662
<key>end</key>
4658-
<string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+))</string>
4663+
<string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+))</string>
46594664
<key>patterns</key>
46604665
<array>
46614666
<dict>
@@ -5509,17 +5514,22 @@
55095514
</dict>
55105515
<dict>
55115516
<key>begin</key>
5512-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
5517+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string>
55135518
<key>beginCaptures</key>
55145519
<dict>
55155520
<key>1</key>
55165521
<dict>
55175522
<key>name</key>
55185523
<string>keyword.control.as.tsx</string>
55195524
</dict>
5525+
<key>2</key>
5526+
<dict>
5527+
<key>name</key>
5528+
<string>keyword.control.satisfies.tsx</string>
5529+
</dict>
55205530
</dict>
55215531
<key>end</key>
5522-
<string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+)|(\s+\&lt;))</string>
5532+
<string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+)|(\s+\&lt;))</string>
55235533
<key>patterns</key>
55245534
<array>
55255535
<dict>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
original file
2+
-----------------------------------
3+
let a = {} satisfies {};
4+
-----------------------------------
5+
6+
Grammar: TypeScript.tmLanguage
7+
-----------------------------------
8+
>let a = {} satisfies {};
9+
^^^
10+
source.ts meta.var.expr.ts storage.type.ts
11+
^
12+
source.ts meta.var.expr.ts
13+
^
14+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
15+
^
16+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
17+
^
18+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
19+
^
20+
source.ts meta.var.expr.ts
21+
^
22+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
23+
^
24+
source.ts meta.var.expr.ts meta.objectliteral.ts punctuation.definition.block.ts
25+
^
26+
source.ts meta.var.expr.ts
27+
^^^^^^^^^
28+
source.ts meta.var.expr.ts keyword.control.satisfies.ts
29+
^
30+
source.ts meta.var.expr.ts
31+
^
32+
source.ts meta.var.expr.ts meta.object.type.ts punctuation.definition.block.ts
33+
^
34+
source.ts meta.var.expr.ts meta.object.type.ts punctuation.definition.block.ts
35+
^
36+
source.ts punctuation.terminator.statement.ts

tests/cases/satisfies.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
let a = {} satisfies {};

0 commit comments

Comments
 (0)