Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/groovy/syntaxes/groovy.tmLanguage.json
5240 views
1
{
2
"information_for_contributors": [
3
"This file has been converted from https://github.com/textmate/groovy.tmbundle/blob/master/Syntaxes/Groovy.tmLanguage",
4
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
5
"Once accepted there, we are happy to receive an update request."
6
],
7
"version": "https://github.com/textmate/groovy.tmbundle/commit/85d8f7c97ae473ccb9473f6c8d27e4ec957f4be1",
8
"name": "Groovy",
9
"scopeName": "source.groovy",
10
"patterns": [
11
{
12
"captures": {
13
"1": {
14
"name": "punctuation.definition.comment.groovy"
15
}
16
},
17
"match": "^(#!).+$\\n",
18
"name": "comment.line.hashbang.groovy"
19
},
20
{
21
"captures": {
22
"1": {
23
"name": "keyword.other.package.groovy"
24
},
25
"2": {
26
"name": "storage.modifier.package.groovy"
27
},
28
"3": {
29
"name": "punctuation.terminator.groovy"
30
}
31
},
32
"match": "^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
33
"name": "meta.package.groovy"
34
},
35
{
36
"begin": "(import static)\\b\\s*",
37
"beginCaptures": {
38
"1": {
39
"name": "keyword.other.import.static.groovy"
40
}
41
},
42
"captures": {
43
"1": {
44
"name": "keyword.other.import.groovy"
45
},
46
"2": {
47
"name": "storage.modifier.import.groovy"
48
},
49
"3": {
50
"name": "punctuation.terminator.groovy"
51
}
52
},
53
"contentName": "storage.modifier.import.groovy",
54
"end": "\\s*(?:$|(?=%>)(;))",
55
"endCaptures": {
56
"1": {
57
"name": "punctuation.terminator.groovy"
58
}
59
},
60
"name": "meta.import.groovy",
61
"patterns": [
62
{
63
"match": "\\.",
64
"name": "punctuation.separator.groovy"
65
},
66
{
67
"match": "\\s",
68
"name": "invalid.illegal.character_not_allowed_here.groovy"
69
}
70
]
71
},
72
{
73
"begin": "(import)\\b\\s*",
74
"beginCaptures": {
75
"1": {
76
"name": "keyword.other.import.groovy"
77
}
78
},
79
"captures": {
80
"1": {
81
"name": "keyword.other.import.groovy"
82
},
83
"2": {
84
"name": "storage.modifier.import.groovy"
85
},
86
"3": {
87
"name": "punctuation.terminator.groovy"
88
}
89
},
90
"contentName": "storage.modifier.import.groovy",
91
"end": "\\s*(?:$|(?=%>)|(;))",
92
"endCaptures": {
93
"1": {
94
"name": "punctuation.terminator.groovy"
95
}
96
},
97
"name": "meta.import.groovy",
98
"patterns": [
99
{
100
"match": "\\.",
101
"name": "punctuation.separator.groovy"
102
},
103
{
104
"match": "\\s",
105
"name": "invalid.illegal.character_not_allowed_here.groovy"
106
}
107
]
108
},
109
{
110
"captures": {
111
"1": {
112
"name": "keyword.other.import.groovy"
113
},
114
"2": {
115
"name": "keyword.other.import.static.groovy"
116
},
117
"3": {
118
"name": "storage.modifier.import.groovy"
119
},
120
"4": {
121
"name": "punctuation.terminator.groovy"
122
}
123
},
124
"match": "^\\s*(import)(?:\\s+(static)\\s+)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
125
"name": "meta.import.groovy"
126
},
127
{
128
"include": "#groovy"
129
}
130
],
131
"repository": {
132
"annotations": {
133
"patterns": [
134
{
135
"begin": "(?<!\\.)(@[^ (]+)(\\()",
136
"beginCaptures": {
137
"1": {
138
"name": "storage.type.annotation.groovy"
139
},
140
"2": {
141
"name": "punctuation.definition.annotation-arguments.begin.groovy"
142
}
143
},
144
"end": "(\\))",
145
"endCaptures": {
146
"1": {
147
"name": "punctuation.definition.annotation-arguments.end.groovy"
148
}
149
},
150
"name": "meta.declaration.annotation.groovy",
151
"patterns": [
152
{
153
"captures": {
154
"1": {
155
"name": "constant.other.key.groovy"
156
},
157
"2": {
158
"name": "keyword.operator.assignment.groovy"
159
}
160
},
161
"match": "(\\w*)\\s*(=)"
162
},
163
{
164
"include": "#values"
165
},
166
{
167
"match": ",",
168
"name": "punctuation.definition.seperator.groovy"
169
}
170
]
171
},
172
{
173
"match": "(?<!\\.)@\\S+",
174
"name": "storage.type.annotation.groovy"
175
}
176
]
177
},
178
"anonymous-classes-and-new": {
179
"begin": "\\bnew\\b",
180
"beginCaptures": {
181
"0": {
182
"name": "keyword.control.new.groovy"
183
}
184
},
185
"end": "(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=[;])|$",
186
"patterns": [
187
{
188
"begin": "(\\w+)\\s*(?=\\[)",
189
"beginCaptures": {
190
"1": {
191
"name": "storage.type.groovy"
192
}
193
},
194
"end": "}|(?=\\s*(?:,|;|\\)))|$",
195
"patterns": [
196
{
197
"begin": "\\[",
198
"end": "\\]",
199
"patterns": [
200
{
201
"include": "#groovy"
202
}
203
]
204
},
205
{
206
"begin": "{",
207
"end": "(?=})",
208
"patterns": [
209
{
210
"include": "#groovy"
211
}
212
]
213
}
214
]
215
},
216
{
217
"begin": "(?=\\w.*\\(?)",
218
"end": "(?<=\\))|$",
219
"patterns": [
220
{
221
"include": "#object-types"
222
},
223
{
224
"begin": "\\(",
225
"beginCaptures": {
226
"1": {
227
"name": "storage.type.groovy"
228
}
229
},
230
"end": "\\)",
231
"patterns": [
232
{
233
"include": "#groovy"
234
}
235
]
236
}
237
]
238
},
239
{
240
"begin": "{",
241
"end": "}",
242
"name": "meta.inner-class.groovy",
243
"patterns": [
244
{
245
"include": "#class-body"
246
}
247
]
248
}
249
]
250
},
251
"braces": {
252
"begin": "\\{",
253
"end": "\\}",
254
"patterns": [
255
{
256
"include": "#groovy-code"
257
}
258
]
259
},
260
"class": {
261
"begin": "(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum)\\s+\\w+)",
262
"end": "}",
263
"endCaptures": {
264
"0": {
265
"name": "punctuation.section.class.end.groovy"
266
}
267
},
268
"name": "meta.definition.class.groovy",
269
"patterns": [
270
{
271
"include": "#storage-modifiers"
272
},
273
{
274
"include": "#comments"
275
},
276
{
277
"captures": {
278
"1": {
279
"name": "storage.modifier.groovy"
280
},
281
"2": {
282
"name": "entity.name.type.class.groovy"
283
}
284
},
285
"match": "(class|(?:@)?interface|enum)\\s+(\\w+)",
286
"name": "meta.class.identifier.groovy"
287
},
288
{
289
"begin": "extends",
290
"beginCaptures": {
291
"0": {
292
"name": "storage.modifier.extends.groovy"
293
}
294
},
295
"end": "(?={|implements)",
296
"name": "meta.definition.class.inherited.classes.groovy",
297
"patterns": [
298
{
299
"include": "#object-types-inherited"
300
},
301
{
302
"include": "#comments"
303
}
304
]
305
},
306
{
307
"begin": "(implements)\\s",
308
"beginCaptures": {
309
"1": {
310
"name": "storage.modifier.implements.groovy"
311
}
312
},
313
"end": "(?=\\s*extends|\\{)",
314
"name": "meta.definition.class.implemented.interfaces.groovy",
315
"patterns": [
316
{
317
"include": "#object-types-inherited"
318
},
319
{
320
"include": "#comments"
321
}
322
]
323
},
324
{
325
"begin": "{",
326
"end": "(?=})",
327
"name": "meta.class.body.groovy",
328
"patterns": [
329
{
330
"include": "#class-body"
331
}
332
]
333
}
334
]
335
},
336
"class-body": {
337
"patterns": [
338
{
339
"include": "#enum-values"
340
},
341
{
342
"include": "#constructors"
343
},
344
{
345
"include": "#groovy"
346
}
347
]
348
},
349
"closures": {
350
"begin": "\\{(?=.*?->)",
351
"end": "\\}",
352
"patterns": [
353
{
354
"begin": "(?<=\\{)(?=[^\\}]*?->)",
355
"end": "->",
356
"endCaptures": {
357
"0": {
358
"name": "keyword.operator.groovy"
359
}
360
},
361
"patterns": [
362
{
363
"begin": "(?!->)",
364
"end": "(?=->)",
365
"name": "meta.closure.parameters.groovy",
366
"patterns": [
367
{
368
"begin": "(?!,|->)",
369
"end": "(?=,|->)",
370
"name": "meta.closure.parameter.groovy",
371
"patterns": [
372
{
373
"begin": "=",
374
"beginCaptures": {
375
"0": {
376
"name": "keyword.operator.assignment.groovy"
377
}
378
},
379
"end": "(?=,|->)",
380
"name": "meta.parameter.default.groovy",
381
"patterns": [
382
{
383
"include": "#groovy-code"
384
}
385
]
386
},
387
{
388
"include": "#parameters"
389
}
390
]
391
}
392
]
393
}
394
]
395
},
396
{
397
"begin": "(?=[^}])",
398
"end": "(?=\\})",
399
"patterns": [
400
{
401
"include": "#groovy-code"
402
}
403
]
404
}
405
]
406
},
407
"comment-block": {
408
"begin": "/\\*",
409
"captures": {
410
"0": {
411
"name": "punctuation.definition.comment.groovy"
412
}
413
},
414
"end": "\\*/",
415
"name": "comment.block.groovy"
416
},
417
"comments": {
418
"patterns": [
419
{
420
"captures": {
421
"0": {
422
"name": "punctuation.definition.comment.groovy"
423
}
424
},
425
"match": "/\\*\\*/",
426
"name": "comment.block.empty.groovy"
427
},
428
{
429
"include": "text.html.javadoc"
430
},
431
{
432
"include": "#comment-block"
433
},
434
{
435
"captures": {
436
"1": {
437
"name": "punctuation.definition.comment.groovy"
438
}
439
},
440
"match": "(//).*$\\n?",
441
"name": "comment.line.double-slash.groovy"
442
}
443
]
444
},
445
"constants": {
446
"patterns": [
447
{
448
"match": "\\b([A-Z][A-Z0-9_]+)\\b",
449
"name": "constant.other.groovy"
450
},
451
{
452
"match": "\\b(true|false|null)\\b",
453
"name": "constant.language.groovy"
454
}
455
]
456
},
457
"constructors": {
458
"applyEndPatternLast": 1,
459
"begin": "(?<=;|^)(?=\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\s+)*[A-Z]\\w*\\()",
460
"end": "}",
461
"patterns": [
462
{
463
"include": "#method-content"
464
}
465
]
466
},
467
"enum-values": {
468
"patterns": [
469
{
470
"begin": "(?<=;|^)\\s*\\b([A-Z0-9_]+)(?=\\s*(?:,|;|}|\\(|$))",
471
"beginCaptures": {
472
"1": {
473
"name": "constant.enum.name.groovy"
474
}
475
},
476
"end": ",|;|(?=})|^(?!\\s*\\w+\\s*(?:,|$))",
477
"patterns": [
478
{
479
"begin": "\\(",
480
"end": "\\)",
481
"name": "meta.enum.value.groovy",
482
"patterns": [
483
{
484
"match": ",",
485
"name": "punctuation.definition.seperator.parameter.groovy"
486
},
487
{
488
"include": "#groovy-code"
489
}
490
]
491
}
492
]
493
}
494
]
495
},
496
"groovy": {
497
"patterns": [
498
{
499
"include": "#comments"
500
},
501
{
502
"include": "#class"
503
},
504
{
505
"include": "#variables"
506
},
507
{
508
"include": "#methods"
509
},
510
{
511
"include": "#annotations"
512
},
513
{
514
"include": "#groovy-code"
515
}
516
]
517
},
518
"groovy-code": {
519
"patterns": [
520
{
521
"include": "#groovy-code-minus-map-keys"
522
},
523
{
524
"include": "#map-keys"
525
}
526
]
527
},
528
"groovy-code-minus-map-keys": {
529
"comment": "In some situations, maps can't be declared without enclosing []'s, \n\t\t\t\ttherefore we create a collection of everything but that",
530
"patterns": [
531
{
532
"include": "#comments"
533
},
534
{
535
"include": "#annotations"
536
},
537
{
538
"include": "#support-functions"
539
},
540
{
541
"include": "#keyword-language"
542
},
543
{
544
"include": "#values"
545
},
546
{
547
"include": "#anonymous-classes-and-new"
548
},
549
{
550
"include": "#keyword-operator"
551
},
552
{
553
"include": "#types"
554
},
555
{
556
"include": "#storage-modifiers"
557
},
558
{
559
"include": "#parens"
560
},
561
{
562
"include": "#closures"
563
},
564
{
565
"include": "#braces"
566
}
567
]
568
},
569
"keyword": {
570
"patterns": [
571
{
572
"include": "#keyword-operator"
573
},
574
{
575
"include": "#keyword-language"
576
}
577
]
578
},
579
"keyword-language": {
580
"patterns": [
581
{
582
"match": "\\b(try|catch|finally|throw)\\b",
583
"name": "keyword.control.exception.groovy"
584
},
585
{
586
"match": "\\b((?<!\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\b",
587
"name": "keyword.control.groovy"
588
},
589
{
590
"begin": "\\bcase\\b",
591
"beginCaptures": {
592
"0": {
593
"name": "keyword.control.groovy"
594
}
595
},
596
"end": ":",
597
"endCaptures": {
598
"0": {
599
"name": "punctuation.definition.case-terminator.groovy"
600
}
601
},
602
"name": "meta.case.groovy",
603
"patterns": [
604
{
605
"include": "#groovy-code-minus-map-keys"
606
}
607
]
608
},
609
{
610
"begin": "\\b(assert)\\s",
611
"beginCaptures": {
612
"1": {
613
"name": "keyword.control.assert.groovy"
614
}
615
},
616
"end": "$|;|}",
617
"name": "meta.declaration.assertion.groovy",
618
"patterns": [
619
{
620
"match": ":",
621
"name": "keyword.operator.assert.expression-seperator.groovy"
622
},
623
{
624
"include": "#groovy-code-minus-map-keys"
625
}
626
]
627
},
628
{
629
"match": "\\b(throws)\\b",
630
"name": "keyword.other.throws.groovy"
631
}
632
]
633
},
634
"keyword-operator": {
635
"patterns": [
636
{
637
"match": "\\b(as)\\b",
638
"name": "keyword.operator.as.groovy"
639
},
640
{
641
"match": "\\b(in)\\b",
642
"name": "keyword.operator.in.groovy"
643
},
644
{
645
"match": "\\?\\:",
646
"name": "keyword.operator.elvis.groovy"
647
},
648
{
649
"match": "\\*\\:",
650
"name": "keyword.operator.spreadmap.groovy"
651
},
652
{
653
"match": "\\.\\.",
654
"name": "keyword.operator.range.groovy"
655
},
656
{
657
"match": "\\->",
658
"name": "keyword.operator.arrow.groovy"
659
},
660
{
661
"match": "<<",
662
"name": "keyword.operator.leftshift.groovy"
663
},
664
{
665
"match": "(?<=\\S)\\.(?=\\S)",
666
"name": "keyword.operator.navigation.groovy"
667
},
668
{
669
"match": "(?<=\\S)\\?\\.(?=\\S)",
670
"name": "keyword.operator.safe-navigation.groovy"
671
},
672
{
673
"begin": "\\?",
674
"beginCaptures": {
675
"0": {
676
"name": "keyword.operator.ternary.groovy"
677
}
678
},
679
"end": "(?=$|\\)|}|])",
680
"name": "meta.evaluation.ternary.groovy",
681
"patterns": [
682
{
683
"match": ":",
684
"name": "keyword.operator.ternary.expression-seperator.groovy"
685
},
686
{
687
"include": "#groovy-code-minus-map-keys"
688
}
689
]
690
},
691
{
692
"match": "==~",
693
"name": "keyword.operator.match.groovy"
694
},
695
{
696
"match": "=~",
697
"name": "keyword.operator.find.groovy"
698
},
699
{
700
"match": "\\b(instanceof)\\b",
701
"name": "keyword.operator.instanceof.groovy"
702
},
703
{
704
"match": "(===|==|!=|<=|>=|<=>|<>|<|>|<<)",
705
"name": "keyword.operator.comparison.groovy"
706
},
707
{
708
"match": "=",
709
"name": "keyword.operator.assignment.groovy"
710
},
711
{
712
"match": "(\\-\\-|\\+\\+)",
713
"name": "keyword.operator.increment-decrement.groovy"
714
},
715
{
716
"match": "(\\-|\\+|\\*|\\/|%)",
717
"name": "keyword.operator.arithmetic.groovy"
718
},
719
{
720
"match": "(!|&&|\\|\\|)",
721
"name": "keyword.operator.logical.groovy"
722
}
723
]
724
},
725
"language-variables": {
726
"patterns": [
727
{
728
"match": "\\b(this|super)\\b",
729
"name": "variable.language.groovy"
730
}
731
]
732
},
733
"map-keys": {
734
"patterns": [
735
{
736
"captures": {
737
"1": {
738
"name": "constant.other.key.groovy"
739
},
740
"2": {
741
"name": "punctuation.definition.seperator.key-value.groovy"
742
}
743
},
744
"match": "(\\w+)\\s*(:)"
745
}
746
]
747
},
748
"method-call": {
749
"begin": "([\\w$]+)(\\()",
750
"beginCaptures": {
751
"1": {
752
"name": "meta.method.groovy"
753
},
754
"2": {
755
"name": "punctuation.definition.method-parameters.begin.groovy"
756
}
757
},
758
"end": "\\)",
759
"endCaptures": {
760
"0": {
761
"name": "punctuation.definition.method-parameters.end.groovy"
762
}
763
},
764
"name": "meta.method-call.groovy",
765
"patterns": [
766
{
767
"match": ",",
768
"name": "punctuation.definition.seperator.parameter.groovy"
769
},
770
{
771
"include": "#groovy-code"
772
}
773
]
774
},
775
"method-content": {
776
"patterns": [
777
{
778
"match": "\\s"
779
},
780
{
781
"include": "#annotations"
782
},
783
{
784
"begin": "(?=(?:\\w|<)[^\\(]*\\s+(?:[\\w$]|<)+\\s*\\()",
785
"end": "(?=[\\w$]+\\s*\\()",
786
"name": "meta.method.return-type.java",
787
"patterns": [
788
{
789
"include": "#storage-modifiers"
790
},
791
{
792
"include": "#types"
793
}
794
]
795
},
796
{
797
"begin": "([\\w$]+)\\s*\\(",
798
"beginCaptures": {
799
"1": {
800
"name": "entity.name.function.java"
801
}
802
},
803
"end": "\\)",
804
"name": "meta.definition.method.signature.java",
805
"patterns": [
806
{
807
"begin": "(?=[^)])",
808
"end": "(?=\\))",
809
"name": "meta.method.parameters.groovy",
810
"patterns": [
811
{
812
"begin": "(?=[^,)])",
813
"end": "(?=,|\\))",
814
"name": "meta.method.parameter.groovy",
815
"patterns": [
816
{
817
"match": ",",
818
"name": "punctuation.definition.separator.groovy"
819
},
820
{
821
"begin": "=",
822
"beginCaptures": {
823
"0": {
824
"name": "keyword.operator.assignment.groovy"
825
}
826
},
827
"end": "(?=,|\\))",
828
"name": "meta.parameter.default.groovy",
829
"patterns": [
830
{
831
"include": "#groovy-code"
832
}
833
]
834
},
835
{
836
"include": "#parameters"
837
}
838
]
839
}
840
]
841
}
842
]
843
},
844
{
845
"begin": "(?=<)",
846
"end": "(?=\\s)",
847
"name": "meta.method.paramerised-type.groovy",
848
"patterns": [
849
{
850
"begin": "<",
851
"end": ">",
852
"name": "storage.type.parameters.groovy",
853
"patterns": [
854
{
855
"include": "#types"
856
},
857
{
858
"match": ",",
859
"name": "punctuation.definition.seperator.groovy"
860
}
861
]
862
}
863
]
864
},
865
{
866
"begin": "throws",
867
"beginCaptures": {
868
"0": {
869
"name": "storage.modifier.groovy"
870
}
871
},
872
"end": "(?={|;)|^(?=\\s*(?:[^{\\s]|$))",
873
"name": "meta.throwables.groovy",
874
"patterns": [
875
{
876
"include": "#object-types"
877
}
878
]
879
},
880
{
881
"begin": "{",
882
"end": "(?=})",
883
"name": "meta.method.body.java",
884
"patterns": [
885
{
886
"include": "#groovy-code"
887
}
888
]
889
}
890
]
891
},
892
"methods": {
893
"applyEndPatternLast": 1,
894
"begin": "(?x:(?<=;|^|{)(?=\\s*\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:\n (?:\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:@?(?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n [\\[\\]]*\n (?:<.*>)?\n ) \n \n )\n \\s+\n ([^=]+\\s+)?\\w+\\s*\\(\n\t\t\t))",
895
"end": "}|(?=[^{])",
896
"name": "meta.definition.method.groovy",
897
"patterns": [
898
{
899
"include": "#method-content"
900
}
901
]
902
},
903
"nest_curly": {
904
"begin": "\\{",
905
"captures": {
906
"0": {
907
"name": "punctuation.section.scope.groovy"
908
}
909
},
910
"end": "\\}",
911
"patterns": [
912
{
913
"include": "#nest_curly"
914
}
915
]
916
},
917
"numbers": {
918
"patterns": [
919
{
920
"match": "((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b",
921
"name": "constant.numeric.groovy"
922
}
923
]
924
},
925
"object-types": {
926
"patterns": [
927
{
928
"begin": "\\b((?:[a-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI]))<",
929
"end": ">|[^\\w\\s,\\?<\\[\\]]",
930
"name": "storage.type.generic.groovy",
931
"patterns": [
932
{
933
"include": "#object-types"
934
},
935
{
936
"begin": "<",
937
"comment": "This is just to support <>'s with no actual type prefix",
938
"end": ">|[^\\w\\s,\\[\\]<]",
939
"name": "storage.type.generic.groovy"
940
}
941
]
942
},
943
{
944
"begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)(?=\\[)",
945
"end": "(?=[^\\]\\s])",
946
"name": "storage.type.object.array.groovy",
947
"patterns": [
948
{
949
"begin": "\\[",
950
"end": "\\]",
951
"patterns": [
952
{
953
"include": "#groovy"
954
}
955
]
956
}
957
]
958
},
959
{
960
"match": "\\b(?:[a-zA-Z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI])\\b",
961
"name": "storage.type.groovy"
962
}
963
]
964
},
965
"object-types-inherited": {
966
"patterns": [
967
{
968
"begin": "\\b((?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)<",
969
"end": ">|[^\\w\\s,\\?<\\[\\]]",
970
"name": "entity.other.inherited-class.groovy",
971
"patterns": [
972
{
973
"include": "#object-types-inherited"
974
},
975
{
976
"begin": "<",
977
"comment": "This is just to support <>'s with no actual type prefix",
978
"end": ">|[^\\w\\s,\\[\\]<]",
979
"name": "storage.type.generic.groovy"
980
}
981
]
982
},
983
{
984
"captures": {
985
"1": {
986
"name": "keyword.operator.dereference.groovy"
987
}
988
},
989
"match": "\\b(?:[a-zA-Z]\\w*(\\.))*[A-Z]+\\w*[a-z]+\\w*\\b",
990
"name": "entity.other.inherited-class.groovy"
991
}
992
]
993
},
994
"parameters": {
995
"patterns": [
996
{
997
"include": "#annotations"
998
},
999
{
1000
"include": "#storage-modifiers"
1001
},
1002
{
1003
"include": "#types"
1004
},
1005
{
1006
"match": "\\w+",
1007
"name": "variable.parameter.method.groovy"
1008
}
1009
]
1010
},
1011
"parens": {
1012
"begin": "\\(",
1013
"end": "\\)",
1014
"patterns": [
1015
{
1016
"include": "#groovy-code"
1017
}
1018
]
1019
},
1020
"primitive-arrays": {
1021
"patterns": [
1022
{
1023
"match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\[\\])*\\b",
1024
"name": "storage.type.primitive.array.groovy"
1025
}
1026
]
1027
},
1028
"primitive-types": {
1029
"patterns": [
1030
{
1031
"match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)\\b",
1032
"name": "storage.type.primitive.groovy"
1033
}
1034
]
1035
},
1036
"regexp": {
1037
"patterns": [
1038
{
1039
"begin": "/(?=[^/]+/([^>]|$))",
1040
"beginCaptures": {
1041
"0": {
1042
"name": "punctuation.definition.string.regexp.begin.groovy"
1043
}
1044
},
1045
"end": "/",
1046
"endCaptures": {
1047
"0": {
1048
"name": "punctuation.definition.string.regexp.end.groovy"
1049
}
1050
},
1051
"name": "string.regexp.groovy",
1052
"patterns": [
1053
{
1054
"match": "\\\\.",
1055
"name": "constant.character.escape.groovy"
1056
}
1057
]
1058
},
1059
{
1060
"begin": "~\"",
1061
"beginCaptures": {
1062
"0": {
1063
"name": "punctuation.definition.string.regexp.begin.groovy"
1064
}
1065
},
1066
"end": "\"",
1067
"endCaptures": {
1068
"0": {
1069
"name": "punctuation.definition.string.regexp.end.groovy"
1070
}
1071
},
1072
"name": "string.regexp.compiled.groovy",
1073
"patterns": [
1074
{
1075
"match": "\\\\.",
1076
"name": "constant.character.escape.groovy"
1077
}
1078
]
1079
}
1080
]
1081
},
1082
"storage-modifiers": {
1083
"patterns": [
1084
{
1085
"match": "\\b(private|protected|public)\\b",
1086
"name": "storage.modifier.access-control.groovy"
1087
},
1088
{
1089
"match": "\\b(static)\\b",
1090
"name": "storage.modifier.static.groovy"
1091
},
1092
{
1093
"match": "\\b(final)\\b",
1094
"name": "storage.modifier.final.groovy"
1095
},
1096
{
1097
"match": "\\b(native|synchronized|abstract|threadsafe|transient)\\b",
1098
"name": "storage.modifier.other.groovy"
1099
}
1100
]
1101
},
1102
"string-quoted-double": {
1103
"begin": "\"",
1104
"beginCaptures": {
1105
"0": {
1106
"name": "punctuation.definition.string.begin.groovy"
1107
}
1108
},
1109
"end": "\"",
1110
"endCaptures": {
1111
"0": {
1112
"name": "punctuation.definition.string.end.groovy"
1113
}
1114
},
1115
"name": "string.quoted.double.groovy",
1116
"patterns": [
1117
{
1118
"include": "#string-quoted-double-contents"
1119
}
1120
]
1121
},
1122
"string-quoted-double-contents": {
1123
"patterns": [
1124
{
1125
"match": "\\\\.",
1126
"name": "constant.character.escape.groovy"
1127
},
1128
{
1129
"applyEndPatternLast": 1,
1130
"begin": "\\$\\w",
1131
"end": "(?=\\W)",
1132
"name": "variable.other.interpolated.groovy",
1133
"patterns": [
1134
{
1135
"match": "\\w",
1136
"name": "variable.other.interpolated.groovy"
1137
},
1138
{
1139
"match": "\\.",
1140
"name": "keyword.other.dereference.groovy"
1141
}
1142
]
1143
},
1144
{
1145
"begin": "\\$\\{",
1146
"captures": {
1147
"0": {
1148
"name": "punctuation.section.embedded.groovy"
1149
}
1150
},
1151
"end": "\\}",
1152
"name": "source.groovy.embedded.source",
1153
"patterns": [
1154
{
1155
"include": "#nest_curly"
1156
}
1157
]
1158
}
1159
]
1160
},
1161
"string-quoted-double-multiline": {
1162
"begin": "\"\"\"",
1163
"beginCaptures": {
1164
"0": {
1165
"name": "punctuation.definition.string.begin.groovy"
1166
}
1167
},
1168
"end": "\"\"\"",
1169
"endCaptures": {
1170
"0": {
1171
"name": "punctuation.definition.string.end.groovy"
1172
}
1173
},
1174
"name": "string.quoted.double.multiline.groovy",
1175
"patterns": [
1176
{
1177
"include": "#string-quoted-double-contents"
1178
}
1179
]
1180
},
1181
"string-quoted-single": {
1182
"begin": "'",
1183
"beginCaptures": {
1184
"0": {
1185
"name": "punctuation.definition.string.begin.groovy"
1186
}
1187
},
1188
"end": "'",
1189
"endCaptures": {
1190
"0": {
1191
"name": "punctuation.definition.string.end.groovy"
1192
}
1193
},
1194
"name": "string.quoted.single.groovy",
1195
"patterns": [
1196
{
1197
"include": "#string-quoted-single-contents"
1198
}
1199
]
1200
},
1201
"string-quoted-single-contents": {
1202
"patterns": [
1203
{
1204
"match": "\\\\.",
1205
"name": "constant.character.escape.groovy"
1206
}
1207
]
1208
},
1209
"string-quoted-single-multiline": {
1210
"begin": "'''",
1211
"beginCaptures": {
1212
"0": {
1213
"name": "punctuation.definition.string.begin.groovy"
1214
}
1215
},
1216
"end": "'''",
1217
"endCaptures": {
1218
"0": {
1219
"name": "punctuation.definition.string.end.groovy"
1220
}
1221
},
1222
"name": "string.quoted.single.multiline.groovy",
1223
"patterns": [
1224
{
1225
"include": "#string-quoted-single-contents"
1226
}
1227
]
1228
},
1229
"strings": {
1230
"patterns": [
1231
{
1232
"include": "#string-quoted-double-multiline"
1233
},
1234
{
1235
"include": "#string-quoted-single-multiline"
1236
},
1237
{
1238
"include": "#string-quoted-double"
1239
},
1240
{
1241
"include": "#string-quoted-single"
1242
},
1243
{
1244
"include": "#regexp"
1245
}
1246
]
1247
},
1248
"structures": {
1249
"begin": "\\[",
1250
"beginCaptures": {
1251
"0": {
1252
"name": "punctuation.definition.structure.begin.groovy"
1253
}
1254
},
1255
"end": "\\]",
1256
"endCaptures": {
1257
"0": {
1258
"name": "punctuation.definition.structure.end.groovy"
1259
}
1260
},
1261
"name": "meta.structure.groovy",
1262
"patterns": [
1263
{
1264
"include": "#groovy-code"
1265
},
1266
{
1267
"match": ",",
1268
"name": "punctuation.definition.separator.groovy"
1269
}
1270
]
1271
},
1272
"support-functions": {
1273
"patterns": [
1274
{
1275
"match": "(?x)\\b(?:sprintf|print(?:f|ln)?)\\b",
1276
"name": "support.function.print.groovy"
1277
},
1278
{
1279
"match": "(?x)\\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|\n\t\t\t\t\tNull)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|\n\t\t\t\t\tArrayEquals)))\\b",
1280
"name": "support.function.testing.groovy"
1281
}
1282
]
1283
},
1284
"types": {
1285
"patterns": [
1286
{
1287
"match": "\\b(def)\\b",
1288
"name": "storage.type.def.groovy"
1289
},
1290
{
1291
"include": "#primitive-types"
1292
},
1293
{
1294
"include": "#primitive-arrays"
1295
},
1296
{
1297
"include": "#object-types"
1298
}
1299
]
1300
},
1301
"values": {
1302
"patterns": [
1303
{
1304
"include": "#language-variables"
1305
},
1306
{
1307
"include": "#strings"
1308
},
1309
{
1310
"include": "#numbers"
1311
},
1312
{
1313
"include": "#constants"
1314
},
1315
{
1316
"include": "#types"
1317
},
1318
{
1319
"include": "#structures"
1320
},
1321
{
1322
"include": "#method-call"
1323
}
1324
]
1325
},
1326
"variables": {
1327
"applyEndPatternLast": 1,
1328
"patterns": [
1329
{
1330
"begin": "(?x:(?=\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:(?:[a-z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n \\s+\n [\\w\\d_<>\\[\\],\\s]+\n (?:=|$)\n \n \t\t\t))",
1331
"end": ";|$",
1332
"name": "meta.definition.variable.groovy",
1333
"patterns": [
1334
{
1335
"match": "\\s"
1336
},
1337
{
1338
"captures": {
1339
"1": {
1340
"name": "constant.variable.groovy"
1341
}
1342
},
1343
"match": "([A-Z_0-9]+)\\s+(?=\\=)"
1344
},
1345
{
1346
"captures": {
1347
"1": {
1348
"name": "meta.definition.variable.name.groovy"
1349
}
1350
},
1351
"match": "(\\w[^\\s,]*)\\s+(?=\\=)"
1352
},
1353
{
1354
"begin": "=",
1355
"beginCaptures": {
1356
"0": {
1357
"name": "keyword.operator.assignment.groovy"
1358
}
1359
},
1360
"end": "$",
1361
"patterns": [
1362
{
1363
"include": "#groovy-code"
1364
}
1365
]
1366
},
1367
{
1368
"captures": {
1369
"1": {
1370
"name": "meta.definition.variable.name.groovy"
1371
}
1372
},
1373
"match": "(\\w[^\\s=]*)(?=\\s*($|;))"
1374
},
1375
{
1376
"include": "#groovy-code"
1377
}
1378
]
1379
}
1380
]
1381
}
1382
}
1383
}
1384