Skip to content

Commit e3dad98

Browse files
committed
Fix of/in operator detection when no space after ]
Fixes #756
1 parent c9c9bc7 commit e3dad98

10 files changed

+127
-52
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ repository:
249249
# let/var
250250
- name: meta.var.expr.ts
251251
begin: (?={{varExprStart}})
252-
end: (?!{{varExprStart}})((?=;|}|(\s+(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<!{{lookBehindLet}}|{{lookBehindVar}})(?=\s*$)))
252+
end: (?!{{varExprStart}})((?=;|}|({{startOfIdentifier}}(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<!{{lookBehindLet}}|{{lookBehindVar}})(?=\s*$)))
253253
patterns:
254254
- begin: '{{varExprStart}}\s*'
255255
beginCaptures:
@@ -264,7 +264,7 @@ repository:
264264
- begin: (,)\s*((?!\S)|(?=\/\/))
265265
beginCaptures:
266266
'1': { name: punctuation.separator.comma.ts }
267-
end: (?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
267+
end: (?<!,)(((?==|;|}|({{startOfIdentifier}}(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
268268
patterns:
269269
- include: '#single-line-comment-consuming-line-ending'
270270
- include: '#comment'
@@ -279,7 +279,7 @@ repository:
279279
'1': { name: keyword.control.export.ts }
280280
'2': { name: storage.modifier.ts }
281281
'3': { name: storage.type.ts }
282-
end: (?!{{constExprStart}})((?=;|}|(\s+(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<!{{lookBehindConst}})(?=\s*$)))
282+
end: (?!{{constExprStart}})((?=;|}|({{startOfIdentifier}}(of|in)\s+)|^\s*$|{{endOfStatement}})|((?<!{{lookBehindConst}})(?=\s*$)))
283283
patterns:
284284
- begin: '{{constExprStart}}\s*'
285285
beginCaptures:
@@ -294,7 +294,7 @@ repository:
294294
- begin: (,)\s*((?!\S)|(?=\/\/))
295295
beginCaptures:
296296
'1': { name: punctuation.separator.comma.ts }
297-
end: (?<!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
297+
end: (?<!,)(((?==|;|}|({{startOfIdentifier}}(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$)))
298298
patterns:
299299
- include: '#single-line-comment-consuming-line-ending'
300300
- include: '#comment'
@@ -311,23 +311,23 @@ repository:
311311
beginCaptures:
312312
'1': { name: meta.definition.variable.ts entity.name.function.ts }
313313
'2': { name: keyword.operator.definiteassignment.ts }
314-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
314+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
315315
patterns:
316316
- include: '#var-single-variable-type-annotation'
317317
- name: meta.var-single-variable.expr.ts
318318
begin: '{{constantVar}}(\!)?'
319319
beginCaptures:
320320
'1': { name: meta.definition.variable.ts variable.other.constant.ts }
321321
'2': { name: keyword.operator.definiteassignment.ts }
322-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
322+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
323323
patterns:
324324
- include: '#var-single-variable-type-annotation'
325325
- name: meta.var-single-variable.expr.ts
326326
begin: ({{identifier}})(\!)?
327327
beginCaptures:
328328
'1': { name: meta.definition.variable.ts variable.other.readwrite.ts }
329329
'2': { name: keyword.operator.definiteassignment.ts }
330-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
330+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
331331
patterns:
332332
- include: '#var-single-variable-type-annotation'
333333

@@ -338,14 +338,14 @@ repository:
338338
(?x)({{identifier}})(?={{functionLikeAssignmentOrType}})
339339
beginCaptures:
340340
'1': { name: meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts }
341-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
341+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
342342
patterns:
343343
- include: '#var-single-variable-type-annotation'
344344
- name: meta.var-single-variable.expr.ts
345345
begin: ({{identifier}})
346346
beginCaptures:
347347
'1': { name: meta.definition.variable.ts variable.other.constant.ts }
348-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
348+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
349349
patterns:
350350
- include: '#var-single-variable-type-annotation'
351351

@@ -359,14 +359,14 @@ repository:
359359
patterns:
360360
- name: meta.object-binding-pattern-variable.ts
361361
begin: (?<!=|:|{{lookBehindOf}}|{{lookBehindIn}})\s*(?=\{)
362-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
362+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
363363
patterns:
364364
- include: '#object-binding-pattern'
365365
- include: '#type-annotation'
366366
- include: '#comment'
367367
- name: meta.array-binding-pattern-variable.ts
368368
begin: (?<!=|:|{{lookBehindOf}}|{{lookBehindIn}})\s*(?=\[)
369-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
369+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
370370
patterns:
371371
- include: '#array-binding-pattern'
372372
- include: '#type-annotation'
@@ -376,14 +376,14 @@ repository:
376376
patterns:
377377
- name: meta.object-binding-pattern-variable.ts
378378
begin: (?<!=|:|{{lookBehindOf}}|{{lookBehindIn}})\s*(?=\{)
379-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
379+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
380380
patterns:
381381
- include: '#object-binding-pattern-const'
382382
- include: '#type-annotation'
383383
- include: '#comment'
384384
- name: meta.array-binding-pattern-variable.ts
385385
begin: (?<!=|:|{{lookBehindOf}}|{{lookBehindIn}})\s*(?=\[)
386-
end: (?=$|^|[;,=}]|(\s+(of|in)\s+))
386+
end: (?=$|^|[;,=}]|({{startOfIdentifier}}(of|in)\s+))
387387
patterns:
388388
- include: '#array-binding-pattern-const'
389389
- include: '#type-annotation'
@@ -642,14 +642,14 @@ repository:
642642
- begin: (?<!=|!)(=)(?!=)(?=\s*\S)(?!\s*.*=>\s*$)
643643
beginCaptures:
644644
'1': { name: keyword.operator.assignment.ts }
645-
end: (?=$|^|[,);}\]]|(\s+(of|in)\s+))
645+
end: (?=$|^|[,);}\]]|({{startOfIdentifier}}(of|in)\s+))
646646
patterns:
647647
- include: '#expression'
648648
# if the expression doesnt start on same line do not use end of line as end of unless the complete line is blank
649649
- begin: (?<!=|!)(=)(?!=)
650650
beginCaptures:
651651
'1': { name: keyword.operator.assignment.ts }
652-
end: (?=[,);}\]]|(\s+(of|in)\s+))|(?=^\s*$)|(?<=\S)(?<!=)(?=\s*$)
652+
end: (?=[,);}\]]|({{startOfIdentifier}}(of|in)\s+))|(?=^\s*$)|(?<=\S)(?<!=)(?=\s*$)
653653
patterns:
654654
- include: '#expression'
655655

TypeScript.tmLanguage

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@
409409
<key>begin</key>
410410
<string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string>
411411
<key>end</key>
412-
<string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|(\s+(of|in)\s+)|^\s*$|;|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?&lt;!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))</string>
412+
<string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$|;|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?&lt;!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))</string>
413413
<key>patterns</key>
414414
<array>
415415
<dict>
@@ -464,7 +464,7 @@
464464
</dict>
465465
</dict>
466466
<key>end</key>
467-
<string>(?&lt;!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
467+
<string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
468468
<key>patterns</key>
469469
<array>
470470
<dict>
@@ -519,7 +519,7 @@
519519
</dict>
520520
</dict>
521521
<key>end</key>
522-
<string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|(\s+(of|in)\s+)|^\s*$|;|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?&lt;!^const|[^\._$[:alnum:]]const)(?=\s*$)))</string>
522+
<string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$|;|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))|((?&lt;!^const|[^\._$[:alnum:]]const)(?=\s*$)))</string>
523523
<key>patterns</key>
524524
<array>
525525
<dict>
@@ -574,7 +574,7 @@
574574
</dict>
575575
</dict>
576576
<key>end</key>
577-
<string>(?&lt;!,)(((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
577+
<string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
578578
<key>patterns</key>
579579
<array>
580580
<dict>
@@ -702,7 +702,7 @@
702702
</dict>
703703
</dict>
704704
<key>end</key>
705-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
705+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
706706
<key>patterns</key>
707707
<array>
708708
<dict>
@@ -730,7 +730,7 @@
730730
</dict>
731731
</dict>
732732
<key>end</key>
733-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
733+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
734734
<key>patterns</key>
735735
<array>
736736
<dict>
@@ -758,7 +758,7 @@
758758
</dict>
759759
</dict>
760760
<key>end</key>
761-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
761+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
762762
<key>patterns</key>
763763
<array>
764764
<dict>
@@ -859,7 +859,7 @@
859859
</dict>
860860
</dict>
861861
<key>end</key>
862-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
862+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
863863
<key>patterns</key>
864864
<array>
865865
<dict>
@@ -882,7 +882,7 @@
882882
</dict>
883883
</dict>
884884
<key>end</key>
885-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
885+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
886886
<key>patterns</key>
887887
<array>
888888
<dict>
@@ -921,7 +921,7 @@
921921
<key>begin</key>
922922
<string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string>
923923
<key>end</key>
924-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
924+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
925925
<key>patterns</key>
926926
<array>
927927
<dict>
@@ -944,7 +944,7 @@
944944
<key>begin</key>
945945
<string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string>
946946
<key>end</key>
947-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
947+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
948948
<key>patterns</key>
949949
<array>
950950
<dict>
@@ -973,7 +973,7 @@
973973
<key>begin</key>
974974
<string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string>
975975
<key>end</key>
976-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
976+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
977977
<key>patterns</key>
978978
<array>
979979
<dict>
@@ -996,7 +996,7 @@
996996
<key>begin</key>
997997
<string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string>
998998
<key>end</key>
999-
<string>(?=$|^|[;,=}]|(\s+(of|in)\s+))</string>
999+
<string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
10001000
<key>patterns</key>
10011001
<array>
10021002
<dict>
@@ -2032,7 +2032,7 @@
20322032
</dict>
20332033
</dict>
20342034
<key>end</key>
2035-
<string>(?=$|^|[,);}\]]|(\s+(of|in)\s+))</string>
2035+
<string>(?=$|^|[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
20362036
<key>patterns</key>
20372037
<array>
20382038
<dict>
@@ -2053,7 +2053,7 @@
20532053
</dict>
20542054
</dict>
20552055
<key>end</key>
2056-
<string>(?=[,);}\]]|(\s+(of|in)\s+))|(?=^\s*$)|(?&lt;=\S)(?&lt;!=)(?=\s*$)</string>
2056+
<string>(?=[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))|(?=^\s*$)|(?&lt;=\S)(?&lt;!=)(?=\s*$)</string>
20572057
<key>patterns</key>
20582058
<array>
20592059
<dict>

0 commit comments

Comments
 (0)