Skip to content

Commit 79bf69c

Browse files
committed
Adding a safe expression list for expressions in ternary operator.
1 parent aefa631 commit 79bf69c

File tree

4 files changed

+242
-8
lines changed

4 files changed

+242
-8
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,44 @@ repository:
2626
'1': { name: variable.ts }
2727
end: (?=$|[;,])
2828
patterns:
29-
- include: '#ternary-operator'
29+
- include: '#ternary-expression'
3030
- include: '#type-annotation'
3131
- include: '#string'
3232
- include: '#comment'
3333
- include: '#expression'
3434

35+
ternary-expression:
36+
begin: (?=\?)
37+
end: (?=$|[;,])
38+
patterns:
39+
- include: '#ternary-operator'
40+
- include: '#ternary-expression-type'
41+
3542
ternary-operator:
3643
begin: (\?)
3744
end: (:)
3845
patterns:
39-
- include: '#expression'
46+
- include: '#ternary-expression-type'
47+
48+
ternary-expression-type:
49+
name: meta.expression.ts
50+
patterns:
51+
- include: '#string'
52+
- include: '#regex'
53+
- include: '#template'
54+
- include: '#comment'
55+
- include: '#literal'
56+
- include: '#paren-expression'
57+
- include: '#ternary-expression'
58+
- include: '#import-operator'
59+
- include: '#expression-operator'
60+
- include: '#imply-operator'
61+
- include: '#relational-operator'
62+
- include: '#arithmetic-operator'
63+
- include: '#logic-operator'
64+
- include: '#assignment-operator'
65+
- include: '#type-primitive'
66+
- include: '#function-call'
4067

4168
control-statement:
4269
name: keyword.control.ts

TypeScript.tmLanguage

Lines changed: 92 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,96 @@
14481448
</dict>
14491449
</array>
14501450
</dict>
1451+
<key>ternary-expression</key>
1452+
<dict>
1453+
<key>begin</key>
1454+
<string>(?=\?)</string>
1455+
<key>end</key>
1456+
<string>(?=$|[;,])</string>
1457+
<key>patterns</key>
1458+
<array>
1459+
<dict>
1460+
<key>include</key>
1461+
<string>#ternary-operator</string>
1462+
</dict>
1463+
<dict>
1464+
<key>include</key>
1465+
<string>#ternary-expression-type</string>
1466+
</dict>
1467+
</array>
1468+
</dict>
1469+
<key>ternary-expression-type</key>
1470+
<dict>
1471+
<key>name</key>
1472+
<string>meta.expression.ts</string>
1473+
<key>patterns</key>
1474+
<array>
1475+
<dict>
1476+
<key>include</key>
1477+
<string>#string</string>
1478+
</dict>
1479+
<dict>
1480+
<key>include</key>
1481+
<string>#regex</string>
1482+
</dict>
1483+
<dict>
1484+
<key>include</key>
1485+
<string>#template</string>
1486+
</dict>
1487+
<dict>
1488+
<key>include</key>
1489+
<string>#comment</string>
1490+
</dict>
1491+
<dict>
1492+
<key>include</key>
1493+
<string>#literal</string>
1494+
</dict>
1495+
<dict>
1496+
<key>include</key>
1497+
<string>#paren-expression</string>
1498+
</dict>
1499+
<dict>
1500+
<key>include</key>
1501+
<string>#ternary-expression</string>
1502+
</dict>
1503+
<dict>
1504+
<key>include</key>
1505+
<string>#import-operator</string>
1506+
</dict>
1507+
<dict>
1508+
<key>include</key>
1509+
<string>#expression-operator</string>
1510+
</dict>
1511+
<dict>
1512+
<key>include</key>
1513+
<string>#imply-operator</string>
1514+
</dict>
1515+
<dict>
1516+
<key>include</key>
1517+
<string>#relational-operator</string>
1518+
</dict>
1519+
<dict>
1520+
<key>include</key>
1521+
<string>#arithmetic-operator</string>
1522+
</dict>
1523+
<dict>
1524+
<key>include</key>
1525+
<string>#logic-operator</string>
1526+
</dict>
1527+
<dict>
1528+
<key>include</key>
1529+
<string>#assignment-operator</string>
1530+
</dict>
1531+
<dict>
1532+
<key>include</key>
1533+
<string>#type-primitive</string>
1534+
</dict>
1535+
<dict>
1536+
<key>include</key>
1537+
<string>#function-call</string>
1538+
</dict>
1539+
</array>
1540+
</dict>
14511541
<key>ternary-operator</key>
14521542
<dict>
14531543
<key>begin</key>
@@ -1458,7 +1548,7 @@
14581548
<array>
14591549
<dict>
14601550
<key>include</key>
1461-
<string>#expression</string>
1551+
<string>#ternary-expression-type</string>
14621552
</dict>
14631553
</array>
14641554
</dict>
@@ -1855,7 +1945,7 @@
18551945
<array>
18561946
<dict>
18571947
<key>include</key>
1858-
<string>#ternary-operator</string>
1948+
<string>#ternary-expression</string>
18591949
</dict>
18601950
<dict>
18611951
<key>include</key>

TypeScriptReact.YAML-tmLanguage

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,44 @@ repository:
2828
'1': { name: variable.tsx }
2929
end: (?=$|[;,])
3030
patterns:
31-
- include: '#ternary-operator'
31+
- include: '#ternary-expression'
3232
- include: '#type-annotation'
3333
- include: '#string'
3434
- include: '#comment'
3535
- include: '#expression'
3636

37+
ternary-expression:
38+
begin: (?=\?)
39+
end: (?=$|[;,])
40+
patterns:
41+
- include: '#ternary-operator'
42+
- include: '#ternary-expression-type'
43+
3744
ternary-operator:
3845
begin: (\?)
3946
end: (:)
4047
patterns:
41-
- include: '#expression'
48+
- include: '#ternary-expression-type'
49+
50+
ternary-expression-type:
51+
name: meta.expression.tsx
52+
patterns:
53+
- include: '#string'
54+
- include: '#regex'
55+
- include: '#template'
56+
- include: '#comment'
57+
- include: '#literal'
58+
- include: '#paren-expression'
59+
- include: '#ternary-expression'
60+
- include: '#import-operator'
61+
- include: '#expression-operator'
62+
- include: '#imply-operator'
63+
- include: '#relational-operator'
64+
- include: '#arithmetic-operator'
65+
- include: '#logic-operator'
66+
- include: '#assignment-operator'
67+
- include: '#type-primitive'
68+
- include: '#function-call'
4269

4370
control-statement:
4471
name: keyword.control.tsx

TypeScriptReact.tmLanguage

Lines changed: 92 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1814,6 +1814,96 @@
18141814
</dict>
18151815
</array>
18161816
</dict>
1817+
<key>ternary-expression</key>
1818+
<dict>
1819+
<key>begin</key>
1820+
<string>(?=\?)</string>
1821+
<key>end</key>
1822+
<string>(?=$|[;,])</string>
1823+
<key>patterns</key>
1824+
<array>
1825+
<dict>
1826+
<key>include</key>
1827+
<string>#ternary-operator</string>
1828+
</dict>
1829+
<dict>
1830+
<key>include</key>
1831+
<string>#ternary-expression-type</string>
1832+
</dict>
1833+
</array>
1834+
</dict>
1835+
<key>ternary-expression-type</key>
1836+
<dict>
1837+
<key>name</key>
1838+
<string>meta.expression.tsx</string>
1839+
<key>patterns</key>
1840+
<array>
1841+
<dict>
1842+
<key>include</key>
1843+
<string>#string</string>
1844+
</dict>
1845+
<dict>
1846+
<key>include</key>
1847+
<string>#regex</string>
1848+
</dict>
1849+
<dict>
1850+
<key>include</key>
1851+
<string>#template</string>
1852+
</dict>
1853+
<dict>
1854+
<key>include</key>
1855+
<string>#comment</string>
1856+
</dict>
1857+
<dict>
1858+
<key>include</key>
1859+
<string>#literal</string>
1860+
</dict>
1861+
<dict>
1862+
<key>include</key>
1863+
<string>#paren-expression</string>
1864+
</dict>
1865+
<dict>
1866+
<key>include</key>
1867+
<string>#ternary-expression</string>
1868+
</dict>
1869+
<dict>
1870+
<key>include</key>
1871+
<string>#import-operator</string>
1872+
</dict>
1873+
<dict>
1874+
<key>include</key>
1875+
<string>#expression-operator</string>
1876+
</dict>
1877+
<dict>
1878+
<key>include</key>
1879+
<string>#imply-operator</string>
1880+
</dict>
1881+
<dict>
1882+
<key>include</key>
1883+
<string>#relational-operator</string>
1884+
</dict>
1885+
<dict>
1886+
<key>include</key>
1887+
<string>#arithmetic-operator</string>
1888+
</dict>
1889+
<dict>
1890+
<key>include</key>
1891+
<string>#logic-operator</string>
1892+
</dict>
1893+
<dict>
1894+
<key>include</key>
1895+
<string>#assignment-operator</string>
1896+
</dict>
1897+
<dict>
1898+
<key>include</key>
1899+
<string>#type-primitive</string>
1900+
</dict>
1901+
<dict>
1902+
<key>include</key>
1903+
<string>#function-call</string>
1904+
</dict>
1905+
</array>
1906+
</dict>
18171907
<key>ternary-operator</key>
18181908
<dict>
18191909
<key>begin</key>
@@ -1824,7 +1914,7 @@
18241914
<array>
18251915
<dict>
18261916
<key>include</key>
1827-
<string>#expression</string>
1917+
<string>#ternary-expression-type</string>
18281918
</dict>
18291919
</array>
18301920
</dict>
@@ -2221,7 +2311,7 @@
22212311
<array>
22222312
<dict>
22232313
<key>include</key>
2224-
<string>#ternary-operator</string>
2314+
<string>#ternary-expression</string>
22252315
</dict>
22262316
<dict>
22272317
<key>include</key>

0 commit comments

Comments
 (0)