Skip to content

Commit b80870c

Browse files
committed
Add const assertion as per microsoft/TypeScript#29510
1 parent 76cfeab commit b80870c

7 files changed

+531
-9
lines changed

TypeScript.YAML-tmLanguage

+31-3
Original file line numberDiff line numberDiff line change
@@ -1280,13 +1280,19 @@ repository:
12801280
- include: '#comment'
12811281
- include: '#array-literal'
12821282
- name: meta.object.member.ts meta.object-literal.key.ts
1283-
begin: (?=[\'\"])
1284-
end: (?=:)|((?<=[\'\"])(?=\s*[\(\<]))
1283+
begin: (?=[\'\"\`])
1284+
end: (?=:)|((?<=[\'\"\`])(?=((\s*[\(\<,}])|(\s+(as)\s+))))
12851285
patterns:
12861286
- include: '#comment'
12871287
- include: '#string'
1288+
- name: meta.object.member.ts meta.object-literal.key.ts
1289+
begin: (?x)(?={{anyNumber}})
1290+
end: (?=:)|(?=\s*([\(\<,}])|(\s+as\s+))
1291+
patterns:
1292+
- include: '#comment'
1293+
- include: '#numeric-literal'
12881294
- name: meta.method.declaration.ts
1289-
begin: (?<=[\]\'\"])(?=\s*[\(\<])
1295+
begin: (?<=[\]\'\"\`])(?=\s*[\(\<])
12901296
end: (?=\}|;|,)|(?<=\})
12911297
patterns:
12921298
- include: '#function-body'
@@ -1316,6 +1322,18 @@ repository:
13161322
match: ({{identifier}})\s*(?=,|\}|$|\/\/|\/\*)
13171323
captures:
13181324
'1': { name: variable.other.readwrite.ts }
1325+
- name: meta.object.member.ts
1326+
match: '{{startOfIdentifier}}(as)\s+(const)(?=\s*([,}]|$))'
1327+
captures:
1328+
'1': { name: keyword.control.as.ts }
1329+
'2': { name: storage.modifier.ts }
1330+
- name: meta.object.member.ts
1331+
begin: '{{startOfIdentifier}}(as)\s+'
1332+
beginCaptures:
1333+
'1': { name: keyword.control.as.ts }
1334+
end: (?=$|^|[,}]|({{startOfIdentifier}}(as)\s+))
1335+
patterns:
1336+
- include: '#type'
13191337
- name: meta.object.member.ts
13201338
begin: (?={{identifier}}\s*=)
13211339
end: (?=,|\}|$|\/\/|\/\*)
@@ -1483,6 +1501,12 @@ repository:
14831501
#cast expression
14841502
cast:
14851503
patterns:
1504+
- name: cast.expr.ts
1505+
match: \s*(<)\s*(const)\s*(>)
1506+
captures:
1507+
'1': { name: meta.brace.angle.ts }
1508+
'2': { name: storage.modifier.ts }
1509+
'3': { name: meta.brace.angle.ts }
14861510
- name: cast.expr.ts
14871511
# We need to differentiate between the relational '<' operator and the beginning of a type assertion/cast using the surrounding context.
14881512
# If '<' is preceeded by 'return', 'throw', 'yield', or 'await', it's most likely a type assertion
@@ -1541,6 +1565,10 @@ repository:
15411565
- name: keyword.operator.expression.void.ts
15421566
match: '{{startOfIdentifier}}void{{endOfIdentifier}}'
15431567
#handle as operator specifically to be recognized only if it is 'as' followed by space
1568+
- match: '{{startOfIdentifier}}(as)\s+(const)(?=\s*($|[;,:})\]]))'
1569+
captures:
1570+
'1': { name: keyword.control.as.ts }
1571+
'2': { name: storage.modifier.ts }
15441572
- begin: '{{startOfIdentifier}}(as)\s+'
15451573
beginCaptures:
15461574
'1': { name: keyword.control.as.ts }

TypeScript.tmLanguage

+114-3
Original file line numberDiff line numberDiff line change
@@ -4119,9 +4119,9 @@
41194119
<key>name</key>
41204120
<string>meta.object.member.ts meta.object-literal.key.ts</string>
41214121
<key>begin</key>
4122-
<string>(?=[\'\"])</string>
4122+
<string>(?=[\'\"\`])</string>
41234123
<key>end</key>
4124-
<string>(?=:)|((?&lt;=[\'\"])(?=\s*[\(\&lt;]))</string>
4124+
<string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as)\s+))))</string>
41254125
<key>patterns</key>
41264126
<array>
41274127
<dict>
@@ -4134,11 +4134,39 @@
41344134
</dict>
41354135
</array>
41364136
</dict>
4137+
<dict>
4138+
<key>name</key>
4139+
<string>meta.object.member.ts meta.object-literal.key.ts</string>
4140+
<key>begin</key>
4141+
<string>(?x)(?=(\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
4142+
(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
4143+
(?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
4144+
(?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
4145+
(?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
4146+
(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
4147+
(?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
4148+
(?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
4149+
(?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
4150+
)(?!\$)))</string>
4151+
<key>end</key>
4152+
<string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as\s+))</string>
4153+
<key>patterns</key>
4154+
<array>
4155+
<dict>
4156+
<key>include</key>
4157+
<string>#comment</string>
4158+
</dict>
4159+
<dict>
4160+
<key>include</key>
4161+
<string>#numeric-literal</string>
4162+
</dict>
4163+
</array>
4164+
</dict>
41374165
<dict>
41384166
<key>name</key>
41394167
<string>meta.method.declaration.ts</string>
41404168
<key>begin</key>
4141-
<string>(?&lt;=[\]\'\"])(?=\s*[\(\&lt;])</string>
4169+
<string>(?&lt;=[\]\'\"\`])(?=\s*[\(\&lt;])</string>
41424170
<key>end</key>
41434171
<string>(?=\}|;|,)|(?&lt;=\})</string>
41444172
<key>patterns</key>
@@ -4266,6 +4294,48 @@
42664294
</dict>
42674295
</dict>
42684296
</dict>
4297+
<dict>
4298+
<key>name</key>
4299+
<string>meta.object.member.ts</string>
4300+
<key>match</key>
4301+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*([,}]|$))</string>
4302+
<key>captures</key>
4303+
<dict>
4304+
<key>1</key>
4305+
<dict>
4306+
<key>name</key>
4307+
<string>keyword.control.as.ts</string>
4308+
</dict>
4309+
<key>2</key>
4310+
<dict>
4311+
<key>name</key>
4312+
<string>storage.modifier.ts</string>
4313+
</dict>
4314+
</dict>
4315+
</dict>
4316+
<dict>
4317+
<key>name</key>
4318+
<string>meta.object.member.ts</string>
4319+
<key>begin</key>
4320+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
4321+
<key>beginCaptures</key>
4322+
<dict>
4323+
<key>1</key>
4324+
<dict>
4325+
<key>name</key>
4326+
<string>keyword.control.as.ts</string>
4327+
</dict>
4328+
</dict>
4329+
<key>end</key>
4330+
<string>(?=$|^|[,}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+))</string>
4331+
<key>patterns</key>
4332+
<array>
4333+
<dict>
4334+
<key>include</key>
4335+
<string>#type</string>
4336+
</dict>
4337+
</array>
4338+
</dict>
42694339
<dict>
42704340
<key>name</key>
42714341
<string>meta.object.member.ts</string>
@@ -4866,6 +4936,30 @@
48664936
<dict>
48674937
<key>patterns</key>
48684938
<array>
4939+
<dict>
4940+
<key>name</key>
4941+
<string>cast.expr.ts</string>
4942+
<key>match</key>
4943+
<string>\s*(&lt;)\s*(const)\s*(&gt;)</string>
4944+
<key>captures</key>
4945+
<dict>
4946+
<key>1</key>
4947+
<dict>
4948+
<key>name</key>
4949+
<string>meta.brace.angle.ts</string>
4950+
</dict>
4951+
<key>2</key>
4952+
<dict>
4953+
<key>name</key>
4954+
<string>storage.modifier.ts</string>
4955+
</dict>
4956+
<key>3</key>
4957+
<dict>
4958+
<key>name</key>
4959+
<string>meta.brace.angle.ts</string>
4960+
</dict>
4961+
</dict>
4962+
</dict>
48694963
<dict>
48704964
<key>name</key>
48714965
<string>cast.expr.ts</string>
@@ -5026,6 +5120,23 @@
50265120
<key>match</key>
50275121
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
50285122
</dict>
5123+
<dict>
5124+
<key>match</key>
5125+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))</string>
5126+
<key>captures</key>
5127+
<dict>
5128+
<key>1</key>
5129+
<dict>
5130+
<key>name</key>
5131+
<string>keyword.control.as.ts</string>
5132+
</dict>
5133+
<key>2</key>
5134+
<dict>
5135+
<key>name</key>
5136+
<string>storage.modifier.ts</string>
5137+
</dict>
5138+
</dict>
5139+
</dict>
50295140
<dict>
50305141
<key>begin</key>
50315142
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>

TypeScriptReact.tmLanguage

+90-3
Original file line numberDiff line numberDiff line change
@@ -4123,9 +4123,9 @@
41234123
<key>name</key>
41244124
<string>meta.object.member.tsx meta.object-literal.key.tsx</string>
41254125
<key>begin</key>
4126-
<string>(?=[\'\"])</string>
4126+
<string>(?=[\'\"\`])</string>
41274127
<key>end</key>
4128-
<string>(?=:)|((?&lt;=[\'\"])(?=\s*[\(\&lt;]))</string>
4128+
<string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as)\s+))))</string>
41294129
<key>patterns</key>
41304130
<array>
41314131
<dict>
@@ -4138,11 +4138,39 @@
41384138
</dict>
41394139
</array>
41404140
</dict>
4141+
<dict>
4142+
<key>name</key>
4143+
<string>meta.object.member.tsx meta.object-literal.key.tsx</string>
4144+
<key>begin</key>
4145+
<string>(?x)(?=(\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
4146+
(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
4147+
(?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
4148+
(?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
4149+
(?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
4150+
(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
4151+
(?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
4152+
(?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
4153+
(?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
4154+
)(?!\$)))</string>
4155+
<key>end</key>
4156+
<string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as\s+))</string>
4157+
<key>patterns</key>
4158+
<array>
4159+
<dict>
4160+
<key>include</key>
4161+
<string>#comment</string>
4162+
</dict>
4163+
<dict>
4164+
<key>include</key>
4165+
<string>#numeric-literal</string>
4166+
</dict>
4167+
</array>
4168+
</dict>
41414169
<dict>
41424170
<key>name</key>
41434171
<string>meta.method.declaration.tsx</string>
41444172
<key>begin</key>
4145-
<string>(?&lt;=[\]\'\"])(?=\s*[\(\&lt;])</string>
4173+
<string>(?&lt;=[\]\'\"\`])(?=\s*[\(\&lt;])</string>
41464174
<key>end</key>
41474175
<string>(?=\}|;|,)|(?&lt;=\})</string>
41484176
<key>patterns</key>
@@ -4270,6 +4298,48 @@
42704298
</dict>
42714299
</dict>
42724300
</dict>
4301+
<dict>
4302+
<key>name</key>
4303+
<string>meta.object.member.tsx</string>
4304+
<key>match</key>
4305+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*([,}]|$))</string>
4306+
<key>captures</key>
4307+
<dict>
4308+
<key>1</key>
4309+
<dict>
4310+
<key>name</key>
4311+
<string>keyword.control.as.tsx</string>
4312+
</dict>
4313+
<key>2</key>
4314+
<dict>
4315+
<key>name</key>
4316+
<string>storage.modifier.tsx</string>
4317+
</dict>
4318+
</dict>
4319+
</dict>
4320+
<dict>
4321+
<key>name</key>
4322+
<string>meta.object.member.tsx</string>
4323+
<key>begin</key>
4324+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
4325+
<key>beginCaptures</key>
4326+
<dict>
4327+
<key>1</key>
4328+
<dict>
4329+
<key>name</key>
4330+
<string>keyword.control.as.tsx</string>
4331+
</dict>
4332+
</dict>
4333+
<key>end</key>
4334+
<string>(?=$|^|[,}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+))</string>
4335+
<key>patterns</key>
4336+
<array>
4337+
<dict>
4338+
<key>include</key>
4339+
<string>#type</string>
4340+
</dict>
4341+
</array>
4342+
</dict>
42734343
<dict>
42744344
<key>name</key>
42754345
<string>meta.object.member.tsx</string>
@@ -4972,6 +5042,23 @@
49725042
<key>match</key>
49735043
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
49745044
</dict>
5045+
<dict>
5046+
<key>match</key>
5047+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))</string>
5048+
<key>captures</key>
5049+
<dict>
5050+
<key>1</key>
5051+
<dict>
5052+
<key>name</key>
5053+
<string>keyword.control.as.tsx</string>
5054+
</dict>
5055+
<key>2</key>
5056+
<dict>
5057+
<key>name</key>
5058+
<string>storage.modifier.tsx</string>
5059+
</dict>
5060+
</dict>
5061+
</dict>
49755062
<dict>
49765063
<key>begin</key>
49775064
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>

0 commit comments

Comments
 (0)