lectures.alex.balgavy.eu

Lecture notes from university.
git clone git://git.alex.balgavy.eu/lectures.alex.balgavy.eu.git
Log | Files | Refs | Submodules

syntax_test_java.java (121302B)


      1 // SYNTAX TEST "Packages/Java/Java.sublime-syntax"
      2 
      3 package apple;
      4 // <- source.java meta.package-declaration.java keyword.other.package.java
      5 //      ^^^^^ entity.name.namespace.java
      6 //           ^ punctuation.terminator.java
      7 
      8 package com.example.apple;
      9 //^^^^^^^^^^^^^^^^^^^^^^^ meta.package-declaration.java
     10 //      ^^^^^^^^^^^^^^^^^ entity.name.namespace.java
     11 //         ^ punctuation.accessor.dot.java
     12 //                 ^ punctuation.accessor.dot.java
     13 //                       ^ punctuation.terminator.java
     14 
     15 import a.b.Class;
     16 // <- meta.import.java keyword.control.import.java
     17 //     ^^^^^^^^^ meta.path.java
     18 //     ^ support.type.package.java
     19 //      ^ punctuation.accessor.dot.java
     20 //       ^ support.type.package.java
     21 //        ^ punctuation.accessor.dot.java
     22 //         ^^^^^ support.class.import.java
     23 //              ^ punctuation.terminator.java
     24 
     25 import a.b.Class.SubClass;
     26 //^^^^^^^^^^^^^^^^^^^^^^^ meta.import.java
     27 //              ^ punctuation.accessor.dot.java
     28 //               ^^^^^^^^ support.class.import.java
     29 
     30 import a.b.Class.*;
     31 //^^^^^^^^^^^^^^^^ meta.import.java
     32 //              ^ punctuation.accessor.dot.java
     33 //               ^ keyword.operator.wildcard.asterisk.java
     34 
     35 import com.google
     36 //     ^^^^^^^^^^ meta.import.java meta.path.java
     37 //        ^ punctuation.accessor.dot.java
     38 //         ^^^^^^ support.type.package.java
     39   .common.collect
     40 //^ punctuation.accessor.dot.java
     41 //       ^ punctuation.accessor.dot.java
     42 //        ^^^^^^^ support.type.package.java
     43 //^^^^^^^^^^^^^^^ meta.import.java meta.path.java
     44   .ListMultimap;
     45 //^ punctuation.accessor.dot.java
     46 // ^^^^^^^^^^^^ support.class.import.java
     47 //^^^^^^^^^^^^^ meta.import.java meta.path.java
     48 //             ^ punctuation.terminator.java
     49 
     50 import no.terminator
     51 // <- meta.import.java keyword.control.import.java
     52 
     53 import static no.terminator
     54 // <- meta.import.java keyword.control.import.java
     55 
     56 import
     57 // <- meta.import.java keyword.control.import.java
     58 
     59 import static
     60 // <- meta.import.java keyword.control.import.java
     61 
     62 import java.net.URL;
     63 // <- meta.import.java keyword.control.import.java
     64 //^^^^^^^^^^^^^^^^^ meta.import.java
     65 //     ^^^^^^^^^^^^ meta.path.java
     66 //              ^^^ support.class.import.java
     67 //     ^^^^ support.type.package.java
     68 //         ^ punctuation.accessor.dot.java
     69 //          ^^^ support.type.package.java
     70 //             ^ punctuation.accessor.dot.java
     71 //                 ^ punctuation.terminator.java
     72 
     73 import java.util.*;
     74 //^^^^^^^^^^^^^^^^ meta.import.java
     75 //     ^^^^^^^^^^^ meta.path.java
     76 //     ^^^^ support.type.package.java
     77 //         ^ punctuation.accessor.dot.java
     78 //          ^^^^ support.type.package.java
     79 //              ^ punctuation.accessor.dot.java
     80 //               ^ keyword.operator.wildcard.asterisk.java
     81 
     82 import static a.b.Class.fooMethod;
     83 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.import.java
     84 // <- meta.import.java keyword.control.import.java
     85 //     ^^^^^^ meta.import.java keyword.control.import.static.java
     86 //             ^ punctuation.accessor.dot.java
     87 //            ^^^^^^^^^ meta.path.java
     88 //                 ^^^^ support.class.import.java
     89 //               ^ punctuation.accessor.dot.java
     90 //                     ^ punctuation.accessor.dot.java
     91 //                      ^^^^^^^^^ meta.import.java support.function.import.java
     92 //                               ^ punctuation.terminator.java
     93 
     94 import static a.b.Class.CONSTANT;
     95 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.import.java
     96 //            ^^^^^^^^^ meta.path.java
     97 //                 ^^^^ support.class.import.java
     98 //                     ^ punctuation.accessor.dot.java
     99 //                      ^^^^^^^^ constant.other.import.java
    100 
    101 import static a.b.Class.*;
    102 //                     ^ punctuation.accessor.dot.java
    103 //                      ^ keyword.operator.wildcard.asterisk.java
    104 
    105 public class SyntaxTest {
    106 //^^^^^^^^^^^^^^^^^^^^^^^ meta.class
    107 // ^^^ storage.modifier.java
    108 //     ^^^^^ storage.type.java
    109 //           ^^^^^^^^^^ meta.class.identifier entity.name.class.java
    110 //                     ^ - meta.class.identifier.java - meta.class.body.java
    111 //                      ^ meta.class.body.java
    112     private String memberString = "Hello";
    113     private String memberString2 = new String("Hello");
    114 //                                     ^^^^^^ support.class.java
    115     private String memberString3 = String.valueOf("Hello");
    116 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.assignment.rhs.java
    117 //  ^^^^^^^ storage.modifier.java
    118 //          ^^^^^^ support.class.java
    119 //                               ^ keyword.operator.assignment.java
    120 //                                ^^^^^^^^^^^^^^^^^^^^^^^^ meta.assignment.rhs.java
    121 //                                                ^^^^^^^ string.quoted.double.java
    122 //                                                ^ punctuation.definition.string.begin.java
    123 //                                                      ^ punctuation.definition.string.end.java
    124 //                                                       ^ - string.quoted.double.java
    125 //                                                        ^ punctuation.terminator.java - meta.assignment.rhs.java
    126     private int memberLpos = memberString3.indexOf("l");
    127 //          ^^^ storage.type
    128 //                           ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.assignment.rhs.java
    129 //                                                 ^^^ string
    130 //                                                     ^ punctuation.terminator.java
    131 
    132     public static void main(String... args) {
    133 //                     ^^^^^^^^^^^^^^^^^^^^^^^ meta.method
    134 //  ^^^^^^ storage.modifier.java
    135 //         ^^^^^^ storage.modifier.java
    136 //                ^^^^ storage.type
    137 //                     ^^^^ meta.method.identifier.java entity.name.function.java
    138 //                         ^^^^^^^^^^^^^^^^ meta.method.parameters.java
    139 //                         ^ punctuation.section.parens.begin.java
    140 //                                ^^^ keyword.operator.variadic.java
    141 //                           ^^^^^ support.class.java
    142 //                                    ^^^^ variable.parameter.java
    143 //                                        ^ punctuation.section.parens.end.java
    144 //                                         ^ - meta.method.parameters
    145 //                                          ^ meta.method.body.java punctuation.section.block.begin.java
    146         String[] strings = new String[5];
    147 //                        ^^^^^^^^^^^^^^ meta.assignment.rhs.java
    148 //                         ^^^ keyword.other.storage.new.java
    149 //                                    ^ constant.numeric.integer.decimal
    150         printList(Arrays.stream(args)
    151             .collect(Collectors.toCollection(ArrayList::new)));
    152 //                                                      ^^^ meta.method.body.java - keyword.other.storage.new.java
    153 //                                                      ^^^ variable.function.reference.java
    154 //                                                    ^^ punctuation.accessor.double-colon.java
    155         anotherMethod();
    156         try (Stream<String> lines = Files.lines(path)) {
    157 //      ^^^ keyword.control.exception.try.java
    158 //                                 ^^^^^^^^^^^^^^^^^^ meta.assignment.rhs.java
    159 //                                                    ^ - meta.parens.java
    160 //                                                   ^ meta.method.body.java - meta.assignment.rhs.java
    161             lines.forEach(System.out::println);
    162 //                                    ^^^^^^^ variable.function.reference.java
    163 
    164         } catch (IOException ignore) {
    165 //        ^^^^^^ meta.catch.java
    166 //              ^^^^^^^^^^^^^^^^^^^^ meta.catch.parameters.java meta.parens.java
    167 //        ^^^^^ keyword.control.exception.catch.java
    168 //              ^ punctuation.section.parens.begin.java
    169 //               ^^^^^^^^^^^ support.class.java
    170 //                           ^^^^^^ variable.parameter
    171 //                                 ^ punctuation.section.parens.end.java
    172         } catch (final MyException | com.net.org.Foo.Bar |
    173 //        ^^^^^^ meta.catch.java
    174 //              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.catch.parameters.java meta.parens.java
    175 //        ^^^^^ keyword.control.exception.catch.java
    176 //              ^ punctuation.section.parens.begin
    177 //               ^ meta.catch.parameters storage.modifier.java
    178 //                     ^^^^^^^^^^^ support.class
    179 //                                 ^ punctuation.separator.bar.java
    180 //                                   ^^^ support.type.package.java
    181 //                                      ^ punctuation.accessor.dot.java
    182 //                                       ^^^ support.type.package.java
    183 //                                          ^ punctuation.accessor.dot.java
    184 //                                           ^^^ support.type.package.java
    185 //                                              ^ punctuation.accessor.dot.java
    186 //                                               ^^^ support.class.java
    187 //                                                  ^ punctuation.accessor.dot.java
    188 //                                                   ^^^ support.class.java
    189 //                                                       ^ punctuation.separator.bar.java
    190                 YourException ignore) {}
    191 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.catch
    192 //              ^ support.class
    193 //                            ^ variable.parameter
    194 //                                 ^ meta.catch.parameters
    195 //                                  ^ punctuation.section.parens.end
    196 
    197         try (final InputStream is = new FileInputStream(args[0]);
    198 //           ^^^^^ storage.modifier
    199              final OutputStream os = new FileOutputStream(args[1])) {
    200 //           ^^^^^ storage.modifier
    201 
    202           os.write(is.read());
    203 //                    ^^^^ variable.function
    204         }
    205 
    206         try {
    207 //      ^^^ keyword.control.exception.try.java
    208           Class.forName(args[2]);
    209         } catch (Exception e) {
    210 //        ^^^^^ keyword.control.exception.catch.java
    211           log.error(e);
    212         } finally {
    213 //        ^^^^^^^ keyword.control.exception.finally.java
    214         }
    215 
    216       for (final int x = 10;;) { System.out.println(x); break; }
    217 //         ^^^^^ storage.modifier
    218 
    219         for (int i = 0; i < 10; i+= 2) {
    220 //      ^^^ keyword.control
    221 //           ^^^ storage.type
    222 //                 ^ keyword.operator.assignment.java
    223 //                   ^ constant.numeric.integer.decimal
    224 //                  ^^ meta.assignment.rhs.java
    225 //                    ^ punctuation.terminator.java - meta.assignment.rhs.java
    226 //                        ^ keyword.operator.comparison.java
    227 //                          ^^ constant.numeric.integer.decimal
    228 //                            ^ punctuation.terminator.java
    229 //                               ^^ keyword.operator.assignment.java
    230 //                                 ^^ meta.assignment.rhs.java
    231 //                                   ^ - meta.assignment.rhs.java
    232             System.out.println(i);
    233         }
    234     }
    235 //  ^ meta.method.java meta.method.body.java punctuation.section.block.end.java
    236     private static void printList(List<String> args) {
    237 //                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method
    238 //  ^^^^^^^ storage.modifier.java
    239 //          ^^^^^^ storage.modifier.java
    240 //                 ^^^^ storage.type
    241 //                      ^^^^^^^^^ meta.method.identifier entity.name.function.java
    242 //                               ^^^^^^^^^^^^^^^^^^^ meta.method.parameters
    243 //                                     ^^^^^^ support.class.java
    244 //                                             ^^^^ variable.parameter.java
    245 //                                                  ^^ - meta.method.identifier.java
    246 //                                                   ^^ meta.method.body.java
    247         args.stream().forEach(System.out::println);
    248 //                                      ^^ punctuation.accessor.double-colon.java
    249     }
    250 
    251     private static void anotherMethod() throws MyException<Abc> {
    252 //                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method
    253 //  ^^^^^^^ storage.modifier.java
    254 //          ^^^^^^ storage.modifier.java
    255 //                 ^^^^ storage.type
    256 //                      ^^^^^^^^^^^^^ meta.method.identifier entity.name.function.java
    257 //                                   ^^ meta.method.parameters
    258 //                                      ^^^^^^^^^^^^^^^^^^^^^^^ meta.method.throws
    259 //                                      ^^^^^^ keyword.declaration.throws.java
    260 //                                                        ^^^^^ meta.generic.java
    261 //                                                              ^^ meta.method.body.java -meta.method.throws
    262         throw new MyException
    263                 ("hello (world)");
    264 //                              ^ - string
    265     }
    266     <T> void save(T obj);
    267 //           ^^^^^^^^^^^ meta.method
    268 //  ^^^ meta.generic
    269 //   ^  variable.parameter.type
    270 //      ^^^^ storage.type
    271 //           ^^^^ meta.method.identifier
    272 //               ^^^^^^^ meta.method.parameters
    273 }
    274 
    275 class ExtendsTest extends Foo {}
    276 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class
    277 //                ^^^^^^^^^^^ meta.class.extends
    278 //                ^^^^^^^ keyword.declaration.extends.java
    279 //                        ^^^ entity.other.inherited-class.java
    280 //                            ^ - meta.class.extends
    281 
    282 class ExtendsTest implements Foo {}
    283 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class
    284 //                ^^^^^^^^^^^^^^ meta.class.implements.java
    285 //                ^^^^^^^^^^ keyword.declaration.implements.java
    286 //                           ^^^ entity.other.inherited-class.java
    287 //                               ^ - meta.class.implements.java
    288 
    289 class Foo<A> extends Bar<? extends A> {}
    290 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class
    291 //       ^^^ meta.generic.declaration.java
    292 //        ^ variable.parameter.type.java
    293 //           ^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.extends
    294 //                         ^^^^^^^ keyword.declaration.extends.java
    295 
    296 class ExtendsAndImplementsTest extends Foo implements Bar<Foo>, OtherBar {}
    297 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class
    298 //                             ^^^^^^^^^^^ meta.class.extends
    299 //                             ^^^^^^^ keyword.declaration.extends.java
    300 //                                     ^^^ entity.other.inherited-class.java
    301 //                                         ^ - meta.class.extends
    302 //                                         ^^^^^^^^^^^^^^ meta.class.implements.java
    303 //                                         ^^^^^^^^^^ keyword.declaration.implements.java
    304 //                                                    ^^^ entity.other.inherited-class.java
    305 //                                                       ^^^^^ meta.generic.java
    306 //                                                            ^ punctuation.separator.comma.java
    307 //                                                              ^^^^^^^^ entity.other.inherited-class.java
    308 //                                                                       ^ - meta.class.implements.java
    309 
    310 class ExtendsAndImplementsTest extends Foo, Bar implements Bar<Foo>, OtherBar {}
    311 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class
    312 //                             ^^^^^^^^^^^^^^^^^ meta.class.extends
    313 //                             ^^^^^^^ keyword.declaration.extends.java
    314 //                                     ^^^ entity.other.inherited-class.java
    315 //                                        ^ punctuation.separator.comma.java
    316 //                                          ^^^ entity.other.inherited-class.java
    317 //                                              ^ - meta.class.extends
    318 //                                              ^^^^^^^^^^^^^^ meta.class.implements.java
    319 //                                              ^^^^^^^^^^ keyword.declaration.implements.java
    320 //                                                         ^^^ entity.other.inherited-class.java
    321 //                                                            ^^^^^ meta.generic.java
    322 //                                                                 ^ punctuation.separator.comma.java
    323 //                                                                   ^^^^^^^^ entity.other.inherited-class.java
    324 //                                                                            ^ - meta.class.implements.java
    325 
    326 class AnyClass {
    327 //    ^^^^^^^^ entity.name.class.java
    328     int bar; // this comment() is recognized as code
    329 //           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line
    330 //           ^^ punctuation.definition.comment.java
    331 
    332     public void anyMethod(String finality){
    333 //              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method
    334 //              ^^^^^^^^^ meta.method.identifier
    335 //                       ^^^^^^^^^^^^^^^^^ meta.method.parameters
    336 //                               ^^^^^^^^ variable.parameter - storage.modifier
    337 //                                        ^^ meta.method.body.java - meta.method.identifier.java
    338         System.out.println("Printed: " + finality);
    339 //                                     ^ keyword.operator
    340     }
    341 
    342     public abstract <A> void test(A thing);
    343 //                  ^^^ meta.generic.declaration.java
    344 //                   ^ variable.parameter.type.java
    345 
    346     public void test2(Type) abc
    347 //                          ^^^ - variable.parameter
    348 //                          ^ - meta.method.java
    349 }
    350 // <- punctuation.section.block.end.java
    351 
    352 interface T extends A, BB {}
    353 //^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.java
    354 //       ^^ meta.class.identifier.java
    355 //          ^^^^^^^^^^^^^^ meta.class.extends.java
    356 //                        ^^ meta.class.body.java
    357 //        ^ entity.name.class.java
    358 //          ^^^^^^^ keyword.declaration.extends.java
    359 //                  ^ entity.other.inherited-class.java
    360 //                   ^ punctuation.separator.comma.java
    361 //                     ^^ entity.other.inherited-class.java
    362 //                        ^ punctuation.section.block.begin.java
    363 //                         ^ punctuation.section.block.end.java
    364 
    365 public enum FooBaz {
    366 //     ^^^^ storage.type.java
    367 //^^^^^^^^^^^^^^^^^^ meta.class
    368 //          ^^^^^^ meta.class.identifier.java entity.name.class.java
    369 //                 ^ meta.class.body
    370     // This is a test
    371 //  ^^^^^^^^^^^^^^^^^^ comment.line
    372     UPLOAD("foo bar"), /* This a comment */
    373 //  ^^^^^^ constant.other.enum
    374 //         ^^^^^^^^^ string.quoted.double.java
    375 //                     ^^^^^^^^^^^^^^^^^^^^ comment.block
    376 //                                         ^ - comment.block
    377     DELETE("baz"),
    378 //  ^^^^^^ constant.other.enum
    379     // Comment here
    380 //  ^^^^^^^^^^^^^^^^ comment.line
    381 }
    382 
    383 enum MyEnum {
    384   FIRST_VALUE, // comment1
    385 //^^^^^^^^^^^ constant.other.enum
    386 //             ^^^^^^^^^^^ comment
    387   MID_VALUE,   // comment2
    388 //^^^^^^^^^ constant.other.enum
    389 //             ^^^^^^^^^^^ comment
    390   LAST_VALUE   // comment3
    391 //^^^^^^^^^^ constant.other.enum
    392 //             ^^^^^^^^^^^ comment
    393 }
    394 
    395 public enum TokenKind extends MyEnum, FooBaz implements Foo, Bar {
    396 //<- meta.class.java storage.modifier.java
    397 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.class.java
    398 //^^^^ storage.modifier.java
    399 //     ^^^^ storage.type.java
    400 //          ^^^^^^^^^ entity.name.class.java
    401 //                    ^^^^^^^ keyword.declaration.extends.java
    402 //                            ^^^^^^ entity.other.inherited-class.java
    403 //                                  ^ punctuation.separator.comma.java
    404 //                                    ^^^^^^ entity.other.inherited-class.java
    405 //                                           ^^^^^^^^^^ keyword.declaration.implements.java
    406 //                                                      ^^^ entity.other.inherited-class.java
    407 //                                                         ^ punctuation.separator.comma.java
    408 //                                                           ^^^ entity.other.inherited-class.java
    409 //                                                               ^ punctuation.section.block.begin.java
    410     a,
    411 //  ^ constant.other.enum.java
    412 //   ^ punctuation.separator.comma.java
    413     a(1, 2, 3),
    414 //  ^ constant.other.enum.java
    415 //   ^^^^^^^^^ meta.parens.java
    416 //   ^ punctuation.section.parens.begin.java
    417 //    ^ constant.numeric.integer.decimal.java
    418 //     ^ punctuation.separator.comma.java
    419 //       ^ constant.numeric.integer.decimal.java
    420 //        ^ punctuation.separator.comma.java
    421 //          ^ constant.numeric.integer.decimal.java
    422 //           ^ punctuation.section.parens.end.java
    423 //            ^ punctuation.separator.comma.java
    424     a {},
    425 //  ^ constant.other.enum.java
    426 //    ^ meta.block.java punctuation.section.block.begin.java
    427 //     ^ meta.block.java punctuation.section.block.end.java
    428 //      ^ punctuation.separator.comma.java
    429     A,
    430 //  ^ constant.other.enum.java
    431 //   ^ punctuation.separator.comma.java
    432     A(1),
    433 //  ^ constant.other.enum.java
    434 //   ^^^ meta.parens.java
    435 //   ^ punctuation.section.parens.begin.java
    436 //    ^ constant.numeric.integer.decimal.java
    437 //     ^ punctuation.section.parens.end.java
    438 //      ^ punctuation.separator.comma.java
    439     A {},
    440 //  ^ constant.other.enum.java
    441 //    ^ meta.block.java punctuation.section.block.begin.java
    442 //     ^ meta.block.java punctuation.section.block.end.java
    443 //      ^ punctuation.separator.comma.java
    444     integerToken,
    445 //  ^^^^^^^^^^^^ constant.other.enum.java
    446 //              ^ punctuation.separator.comma.java
    447     integerToken("integer literal"),
    448 //              ^^^^^^^^^^^^^^^^^^^ meta.parens.java
    449 //  ^^^^^^^^^^^^ constant.other.enum.java
    450 //              ^ punctuation.section.parens.begin.java
    451 //               ^^^^^^^^^^^^^^^^^ string.quoted.double.java
    452 //                                ^ punctuation.section.parens.end.java
    453 //                                 ^ punctuation.separator.comma.java
    454     integerToken {};
    455 //  ^^^^^^^^^^^^ constant.other.enum.java
    456 //               ^ meta.block.java punctuation.section.block.begin.java
    457 //                ^ meta.block.java punctuation.section.block.end.java
    458 //                 ^ punctuation.terminator.java
    459     int {}
    460 //  ^^^ storage.type.primitive.java
    461     static {}
    462 //  ^^^^^^ storage.modifier.java
    463     String image = "";
    464 //  ^^^^^^ support.class.java
    465 //         ^^^^^ meta.field.java
    466 //               ^ keyword.operator.assignment.java
    467 //                 ^^ string.quoted.double.java
    468 //                   ^ punctuation.terminator.java
    469     TokenKind(String s) {}
    470 //  ^^^^^^^^^^^^^^^^^^^^^^ meta.method.java
    471 //  ^^^^^^^^^ meta.method.identifier.java entity.name.function.constructor.java
    472 //           ^^^^^^^^^^ meta.method.parameters.java meta.parens.java
    473 //                      ^^ meta.method.body.java
    474 //           ^ punctuation.section.parens.begin.java
    475 //            ^^^^^^ support.class.java
    476 //                   ^ variable.parameter.java
    477 //                    ^ punctuation.section.parens.end.java
    478 //                      ^ punctuation.section.block.begin.java
    479 //                       ^ punctuation.section.block.end.java
    480     public static void main(String[]a){}
    481 //  ^^^^^^^^^^^^^^ meta.class.java meta.class.body.java meta.block.java
    482 //                ^^^^^^^^^^^^^^^^^^^^^^ meta.class.java meta.class.body.java meta.block.java meta.method.java
    483 //                     ^^^^ meta.method.identifier.java
    484 //                         ^^^^^^^^^^^ meta.method.parameters.java meta.parens.java
    485 //                                    ^^ meta.method.body.java
    486 //  ^^^^^^ storage.modifier.java
    487 //         ^^^^^^ storage.modifier.java
    488 //                ^^^^ storage.type.void.java
    489 //                     ^^^^ entity.name.function.java
    490 //                         ^ punctuation.section.parens.begin.java
    491 //                          ^^^^^^ support.class.java
    492 //                                ^^ storage.modifier.array.java
    493 //                                  ^ variable.parameter.java
    494 //                                   ^ punctuation.section.parens.end.java
    495 //                                    ^ punctuation.section.block.begin.java
    496 //                                     ^ punctuation.section.block.end.java
    497 }
    498 
    499 public          // comment
    500 //<- storage.modifier.java
    501 enum            // comment
    502 //<- meta.class.java meta.class.identifier.java storage.type.java
    503 TokenKind       // comment
    504 //<- meta.class.java meta.class.identifier.java entity.name.class.java
    505 extends         // comment
    506 //<- meta.class.java meta.class.extends.java keyword.declaration.extends.java
    507 MyEnum,         // comment
    508 //<- meta.class.java meta.class.extends.java entity.other.inherited-class.java
    509 FooBaz          // comment
    510 //<- meta.class.java meta.class.extends.java entity.other.inherited-class.java
    511 implements      // comment
    512 //<- meta.class.java meta.class.implements.java keyword.declaration.implements.java
    513 Foo,            // comment
    514 //<- meta.class.java meta.class.implements.java entity.other.inherited-class.java
    515 Bar             // comment
    516 //<- meta.class.java meta.class.implements.java entity.other.inherited-class.java
    517 {
    518 //<- meta.class.java meta.class.body.java meta.block.java punctuation.section.block.begin.java
    519 }
    520 //<- meta.class.java meta.class.body.java meta.block.java punctuation.section.block.end.java
    521 
    522 class InvalidStuff
    523 {
    524     goto
    525 //  ^^^^ invalid.illegal
    526 
    527     const int 3;
    528 //  ^^^^^ invalid.illegal
    529 }
    530 
    531 public class Lambdas {
    532   volatile int foo;
    533 //^^^^^^^^ storage.modifier.java
    534 
    535   void anonymousFunctions() {
    536      foo();
    537 //   ^^^ variable.function.java
    538 
    539 // Capital names are usually used for classes
    540      Foo();
    541 //   ^^^ variable.function.java
    542 
    543      foo ();
    544 //   ^^^ variable.function.java
    545      this.<A>foo();
    546 //           ^^^ variable.function.java
    547 //        ^^^ meta.generic.java
    548 //        ^ punctuation.definition.generic.begin.java
    549 //         ^ support.class.java
    550      this.<B> foo();
    551 //            ^^^ variable.function.java
    552 //        ^^^ meta.generic.java
    553 //        ^ punctuation.definition.generic.begin.java
    554 //         ^ support.class.java
    555 
    556      Function<String, Integer> func = a -> 42;
    557 //                                  ^^^^^^^^^ meta.assignment.rhs.java
    558 //                                    ^ variable.parameter.java
    559 //                                      ^^ storage.type.function.anonymous.java
    560 //                                         ^^ constant.numeric.integer.decimal
    561 //                                           ^ punctuation.terminator.java
    562      foo(a -> 42);
    563 //   ^^^^^^^^^^^^ meta.function-call.java
    564 //   ^^^ variable.function.java
    565 //      ^ punctuation.section.parens.begin.java
    566 //       ^ variable.parameter.java
    567 //         ^^ storage.type.function.anonymous.java
    568 //            ^^ constant.numeric.integer.decimal
    569 //              ^ punctuation.section.parens.end.java
    570 //               ^ punctuation.terminator.java
    571 
    572      a -> { return 42; };
    573 //        ^^^^^^^^^^^^^^ meta.function.anonymous.body.java
    574 
    575      (a, b) -> 42;
    576 //    ^ variable.parameter.java
    577 //       ^ variable.parameter.java
    578 //          ^^ storage.type.function.anonymous.java
    579 //             ^^ constant.numeric.integer.decimal
    580 
    581      (int a, Foo<Integer>[] b) -> 42;
    582 //    ^^^ storage.type.primitive
    583 //        ^ variable.parameter.java
    584 //           ^^^ support.class.java
    585 //              ^ punctuation.definition.generic.begin.java
    586 //               ^^^^^^^ support.class.java
    587 //                      ^ punctuation.definition.generic.end.java
    588 //                          ^ variable.parameter.java
    589 //                             ^^ storage.type.function.anonymous.java
    590 //                                ^^ constant.numeric.integer
    591 
    592   // Lambda parameter tests
    593   Function<String, String> lambda1 = (final @MyAnnotation String foo) -> foo;
    594 //                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.anonymous.parameters.java
    595 //                                    ^^^^^ storage.modifier.java
    596 //                                          ^^^^^^^^^^^^^ meta.annotation
    597 //                                          ^ punctuation.definition.annotation
    598 //                                                        ^^^^^^ support.class.java - meta.annotation
    599 //                                                               ^^^ variable.parameter.java
    600 //                                                                    ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    601 
    602   Function<String, String> lambda2 = (@MyAnnotation String foo) -> foo;
    603 //                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.anonymous.parameters.java
    604 //                                    ^^^^^^^^^^^^^ meta.annotation
    605 //                                    ^ punctuation.definition.annotation
    606 //                                                  ^^^^^^ support.class.java - meta.annotation
    607 //                                                         ^^^ variable.parameter.java
    608 //                                                              ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    609 
    610   Function<String, String> lambda3 = (@MyAnnotation(foo = Foo.BAR) String foo) -> foo;
    611 //                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function.anonymous.parameters.java
    612 //                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation
    613 //                                    ^ punctuation.definition.annotation
    614 //                                                  ^^^ variable.parameter.java
    615 //                                                        ^^^ support.class.java
    616 //                                                           ^ punctuation.accessor.dot.java
    617 //                                                            ^^^ constant.other.java
    618 //                                                                 ^^^^^^ support.class.java - meta.annotation
    619 //                                                                        ^^^ variable.parameter.java
    620 //                                                                             ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    621 
    622   Function<String, String> lambda4 = (String foo) -> foo;
    623 //                                   ^^^^^^^^^^^^ meta.function.anonymous.parameters.java
    624 //                                    ^^^^^^ support.class.java - meta.annotation
    625 //                                           ^^^ variable.parameter.java
    626 //                                                ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    627 
    628   Function<String, String> lambda5 = (foo) -> foo;
    629 //                                   ^^^^^ meta.function.anonymous.parameters.java
    630 //                                    ^^^ variable.parameter.java
    631 //                                         ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    632 
    633   Function<String, String> lambda6 = foo -> foo;
    634 //                                   ^^^ meta.function.anonymous.parameters.java
    635 //                                   ^^^ variable.parameter.java
    636 //                                       ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    637 
    638   Function<String[], String> lambda7 = (String... foo) -> foo[0];
    639 //                                     ^^^^^^^^^^^^^^^ meta.function.anonymous.parameters.java
    640 //                                      ^^^^^^ support.class.java - meta.annotation
    641 //                                            ^^^ keyword.operator.variadic.java
    642 //                                                ^^^ variable.parameter.java
    643 //                                                     ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    644 
    645   IntFunction<String> intLambda1 = (int foo) -> String.valueOf(foo);
    646 //                                 ^^^^^^^^^ meta.function.anonymous.parameters.java
    647 //                                  ^^^ storage.type.primitive - meta.annotation
    648 //                                      ^^^ variable.parameter.java
    649 //                                           ^^ storage.type.function.anonymous.java - meta.function.anonymous.parameters.java
    650   }
    651 }
    652 
    653 class Generics {
    654 
    655   List<String> field;
    656 //    ^^^^^^^^ meta.generic.java
    657 //    ^ punctuation.definition.generic.begin.java
    658 //     ^^^^^^ support.class.java
    659 //           ^ punctuation.definition.generic.end.java
    660 
    661   List<java.net.URI> field;
    662 //    ^^^^^^^^^^^^^^ meta.generic.java
    663 //    ^ punctuation.definition.generic.begin.java
    664 //     ^^^^^^^^^^^^ meta.path.java
    665 //     ^^^^ support.type.package.java
    666 //         ^ punctuation.accessor.dot.java
    667 //          ^^^ support.type.package.java
    668 //             ^ punctuation.accessor.dot.java
    669 //              ^^^ support.class.java
    670 
    671   void variableTypes() {
    672     List<String> x;
    673 //      ^^^^^^^^ meta.generic.java
    674 //      ^ punctuation.definition.generic.begin.java
    675 //             ^ punctuation.definition.generic.end.java
    676 
    677     List<java.lang.String> x;
    678 //      ^^^^^^^^^^^^^^^^^^ meta.generic.java
    679 //       ^^^^^^^^^^^^^^^^ meta.path.java
    680 //       ^^^^ support.type.package.java
    681 //           ^ punctuation.accessor.dot.java
    682 //            ^^^^ support.type.package.java
    683 //                ^ punctuation.accessor.dot.java
    684 //                 ^^^^^^ support.class.java
    685 //                       ^ punctuation.definition.generic.end.java
    686 
    687     List<URI> x;
    688 //      ^^^^^ meta.generic.java
    689 //       ^^^ support.class.java
    690 
    691     List<java.net.URI> x;
    692 //      ^^^^^^^^^^^^^^ meta.generic.java
    693 //       ^^^^^^^^^^^^ meta.path.java
    694 //                ^^^ support.class.java
    695 
    696     List<int[]> x;
    697 //      ^^^^^^^ meta.generic.java
    698 //       ^^^ storage.type.primitive.java
    699 //          ^^ storage.modifier.array.java
    700 
    701     List<java.lang.String[]> x;
    702 //      ^^^^^^^^^^^^^^^^^^^^ meta.generic.java
    703 //       ^^^^^^^^^^^^^^^^ meta.path.java
    704 //                       ^^ storage.modifier.array.java
    705 
    706     List<URI[]> x;
    707 //      ^^^^^^^ meta.generic.java
    708 //       ^^^ support.class.java
    709 //          ^^ storage.modifier.array.java
    710 
    711     List<int[][]>[][] x;
    712 //      ^^^^^^^^^ meta.generic.java
    713 //       ^^^ storage.type.primitive.java
    714 //          ^^^^ storage.modifier.array.java
    715 //               ^^^^ storage.modifier.array.java
    716   }
    717 
    718   void instantiation() {
    719 
    720   new Foo<Abc>();
    721 //       ^^^^^ meta.generic.java
    722 //        ^^^ support.class.java
    723 //       ^ punctuation.definition.generic.begin.java
    724 //           ^ punctuation.definition.generic.end.java
    725 
    726   new Foo<?>();
    727 //        ^ keyword.operator.wildcard.java
    728 
    729   new Foo<? extends Bar, String>();
    730 //        ^ keyword.operator.wildcard.java
    731 //                  ^^^ support.class.java
    732 //          ^^^^^^^ keyword.declaration.extends.java
    733 //                     ^ punctuation.separator.comma.java
    734   //                     ^^^^^^ support.class.java
    735 
    736   new Foo<? super Bar>();
    737 //        ^ keyword.operator.wildcard.java
    738 //          ^^^^^ keyword.declaration.super.java
    739 
    740   new Foo<int>();
    741 //        ^^^ -storage.type.primitive
    742 
    743   new Foo<String, int>();
    744 //        ^^^^^^ support.class.java
    745 //                ^^^ -storage.type.primitive
    746 
    747   new Foo<a.b.FooBar>();
    748 //       ^^^^^^^^^^^^ meta.generic.java
    749 //        ^^^^^^^^^^ meta.path.java
    750 //        ^ support.type.package.java
    751 //         ^ punctuation.accessor.dot.java
    752 //          ^ support.type.package.java
    753 //           ^ punctuation.accessor.dot.java
    754 
    755     new Foo<?>[] { new Foo(1), new Foo(2) };
    756 //         ^^^ meta.generic.java
    757 //            ^^ punctuation.section.brackets
    758 //               ^ punctuation.section.braces.begin
    759 //                     ^^^ support.class.java
    760 //                           ^ punctuation.separator.comma.java
    761 //                                 ^^^ support.class.java
    762 //                                        ^ punctuation.section.braces.end
    763 
    764     new ArrayList<?>[] { new ArrayList<java.sql.Date>(), new ArrayList<Date>() }
    765 //                                    ^^^^^^^^^^^^^^^ meta.generic.java
    766 //                                     ^^^^^^^^^^^^^ meta.path.java
    767 //                                                                    ^^^^^^ meta.generic.java
    768 
    769     new a.
    770 //      ^^ meta.path.java
    771       b.Foo<a.
    772 //    ^^^^^ meta.path.java
    773 //          ^^ meta.generic.java meta.path.java
    774         b.Foo>();
    775 //      ^^^^^ meta.generic.java meta.path.java
    776   }
    777 }
    778 
    779 public class Test {
    780 
    781     void test1() {
    782         Foo.abc();
    783 //         ^ punctuation.accessor.dot.java
    784 //          ^^^ variable.function.java
    785         Foo.class;
    786 //         ^ punctuation.accessor.dot.java
    787 //          ^^^^^ variable.language.java - storage.type.java
    788 //               ^ punctuation.terminator.java
    789     }
    790 
    791     void test2() {
    792 //       ^^^^^ entity.name.function.java
    793     }
    794 }
    795 
    796 @ClassName.FixMethodOrder( MethodSorters.NAME_ASCENDING )
    797 // <- meta.annotation punctuation.definition.annotation -meta.annotation.identifier
    798 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation
    799 //^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation.identifier
    800 //^^^^^^^^ variable.annotation.java
    801 //        ^ punctuation.accessor.dot.java
    802 //                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation.parameters
    803 //                                      ^ punctuation.accessor.dot
    804 //                                       ^ constant
    805 public class GrafoTest {
    806     @Override
    807 //  ^^^^^^^^^ meta.annotation
    808 //  ^ punctuation.definition.annotation
    809 //   ^^^^^^^^ variable.annotation.java
    810     void test1() {
    811 //       ^ entity.name.function
    812     }
    813 
    814     @Author(first = "Oompah", last = "Loompah")
    815 //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation
    816 //  ^ punctuation.definition.annotation
    817 //   ^^^^^^ meta.annotation.identifier variable.annotation.java
    818 //         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation.parameters
    819 //         ^ punctuation.section.parens.begin
    820 //          ^^^^^ variable.parameter.java
    821 //                ^ keyword.operator
    822 //                  ^^^^^^^^ string
    823 //                          ^ punctuation.separator.comma.java
    824 //                            ^^^^ variable.parameter.java
    825 //                                 ^ keyword.operator
    826 //                                   ^^^^^^^^ string
    827 //                                            ^ punctuation.section.parens.end
    828     void test2() {
    829 //       ^ entity.name.function
    830 
    831         Grafo grafo = new Grafo( true );
    832         final Grafo temposMaisCedo = new Grafo( true );
    833 //      ^ storage.modifier
    834 //            ^ support.class
    835     }
    836 
    837 
    838      @Partial @Mock(type=Grafo.class) DataLoader inline;
    839 //   ^^^^^^^^                          meta.annotation
    840 //            ^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation
    841 //                                    ^ support.class
    842 
    843      @Override public int inline() {
    844 //   ^^^^^^^^^ meta.annotation
    845 //   ^ punctuation.definition.annotation
    846 //    ^^^^^^^^ variable.annotation
    847      }
    848 
    849      void annotatedArgs(@NonNull final String p1,
    850 //                      ^^^^^^^^ meta.annotation
    851 //                               ^ storage.modifier - meta.annotation
    852          @Named(value = "") List<T> p2, @NonNull final String p3) {}
    853 //       ^^^^^^^^^^^^^^^^^^ meta.annotation
    854 //                          ^ support.class
    855 //                              ^ meta.generic punctuation.definition.generic.begin
    856 //                                  ^ variable.parameter
    857 //                                    ^ punctuation.separator
    858 //                                      ^^^^^^^^ meta.annotation
    859 //                                               ^ storage.modifier - meta.annotation
    860 //                                                     ^ support.class
    861 
    862 }
    863 
    864 public enum FooEnum {
    865 //     ^^^^ storage.type.java
    866   FOO;
    867 //^^^ constant.other.enum
    868 }
    869 // <- meta.class.java meta.class.body.java punctuation.section.block.end.java
    870 
    871 public enum FooBarEnum {
    872 //     ^^^^ storage.type.java
    873   FOO,
    874 //^^^ constant.other.enum
    875   BAR;
    876 //^^^ constant.other.enum
    877 }
    878 
    879 public enum AbstractEnum {
    880 //     ^^^^ storage.type.java
    881   FOO {
    882 //^^^ constant.other.enum
    883 //    ^ meta.enum.java meta.enum.body.java meta.block.java punctuation.section.block.begin.java
    884     public void doSomething() { return; }
    885 //              ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.java
    886   },
    887 //^ meta.enum.java meta.enum.body.java meta.block.java punctuation.section.block.end.java
    888   BAR {
    889 //^^^ constant.other.enum
    890     public void doSomething() { return; }
    891 //              ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.java
    892   };
    893 
    894   public abstract void doSomething();
    895 //                     ^^^^^^^^^^^^^ meta.method.java
    896 }
    897 
    898 public final class SomeClass<V extends OtherClass, T> extends BaseClass<V> {
    899 //                          ^ punctuation.definition.generic.begin.java
    900 //                                                  ^ punctuation.definition.generic.end.java
    901 //                                               ^ punctuation.separator.comma.java
    902 //                                     ^ support.class.java
    903 //                                                                         ^ punctuation.section.block.begin.java
    904 }
    905 
    906 public @interface PublicAnnotation {
    907 //     ^^^^^^^^^^ storage.type.java
    908   int numericValue() default 42;
    909 //                   ^^^^^^^ keyword.declaration.default.java
    910 //                           ^^ constant.numeric
    911   boolean booleanValue() default true;
    912 //                       ^^^^^^^ keyword.declaration.default.java
    913 //                               ^^^^ constant.language
    914   char charValue() default 'S';
    915 //                 ^^^^^^^ keyword.declaration.default.java
    916 //                         ^^^ string.quoted.single.java
    917   String value() default "Default value";
    918 //               ^^^^^^^ keyword.declaration.default.java
    919 //                       ^^^^^^^^^^^^^^^ string.quoted.double.java
    920   Class<?> classValue() default String.class;
    921 //                      ^^^^^^^ keyword.declaration.default.java
    922 //                              ^^^^^^ support.class.java
    923 //                                     ^^^^^ variable.language.java
    924   String[] arrayValue() default {"Foo", "Bar"};
    925 //                      ^^^^^^^ keyword.declaration.default.java
    926 //                              ^ punctuation.section.block.begin
    927 //                               ^^^^^ string.quoted.double.java
    928 //                                      ^^^^^ string.quoted.double.java
    929 //                                           ^ punctuation.section.block.end
    930 }
    931 
    932 @interface PackageAnnotation {}
    933 //^^^^^^^^ storage.type.java
    934 
    935 @MultiLineAnnotation(
    936 // <- meta.annotation.java
    937 // <- punctuation.definition.annotation.java
    938 //^^^^^^^^^^^^^^^^^^ variable.annotation.java
    939 //                  ^ meta.annotation.java meta.annotation.parameters.java punctuation.section.parens.begin.java
    940   foo = BAR,
    941 //^^^ variable.parameter.java
    942 //    ^ keyword.operator.assignment.java
    943 //      ^ constant.other.java
    944 //         ^ punctuation.separator.comma.java
    945   other = "foo"
    946 //^^^^^ variable.parameter.java
    947 //      ^ keyword.operator.assignment.java
    948 //        ^ string
    949 )
    950 // <- meta.annotation.java meta.annotation.parameters.java punctuation.section.parens.end.java
    951 @fully.qualified.Annotation
    952 // <- punctuation.definition.annotation.java
    953 //^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation.java meta.annotation.identifier.java meta.path.java
    954 //^^^^ variable.annotation.package.java
    955 //    ^ punctuation.accessor.dot.java
    956 //     ^^^^^^^^^ variable.annotation.package.java
    957 //              ^ punctuation.accessor.dot.java
    958 //                ^^^^^^^^^ variable.annotation.java
    959 @fully.qualified.ParentClass.InnerAnnotation
    960 // <- punctuation.definition.annotation.java
    961 //^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.annotation.java meta.annotation.identifier.java meta.path.java
    962 //^^^^ variable.annotation.package.java
    963 //    ^ punctuation.accessor.dot.java
    964 //     ^^^^^^^^^ variable.annotation.package.java
    965 //              ^ punctuation.accessor.dot.java
    966 //               ^^^^^^^^^^^ variable.annotation.java
    967 //                          ^ punctuation.accessor.dot.java
    968 //                           ^^^^^^^^^^^^^^^ variable.annotation.java
    969 @fully.qualified
    970 //^^^^^^^^^^^^^^ meta.annotation.identifier.java meta.path.java
    971     .multiline.Annotation
    972 //  ^^^^^^^^^^^^^^^^^^^^^ meta.annotation.identifier.java meta.path.java
    973         (foo = "bar")
    974 //      ^^^^^^^^^^^^^ meta.annotation.parameters.java -meta.annotation.identifier.java
    975 @FancyAnnotation({
    976 // <- punctuation.definition.annotation.java
    977 //              ^^ meta.annotation.parameters.java
    978   Foo.class,
    979 //^^^ support.class.java
    980 //   ^ punctuation.accessor.dot.java
    981 //    ^^^^^ variable.language.java
    982 //         ^ punctuation.separator.comma.java
    983   Bar.class
    984 //^^^ support.class.java
    985 //   ^ punctuation.accessor.dot.java
    986 //    ^^^^^ variable.language.java
    987 })
    988 // <- punctuation.section.braces.end.java
    989  // <- meta.annotation.java meta.annotation.parameters.java punctuation.section.parens.end.java
    990 class Bàr {
    991 //    ^^^ entity.name.class.java
    992   Bàr() {}
    993 //^^^^^ meta.method.java
    994 //^^^ entity.name.function.constructor.java
    995 }
    996 
    997 @AnnotationAsParameterSingle(
    998     @Parameter(name = "foo")
    999 //  ^ punctuation.definition.annotation.java
   1000 //   ^^^^^^^^^ variable.annotation.java
   1001 //             ^^^^ variable.parameter.java
   1002 )
   1003 
   1004 @AnnotationAsParameterSingleNamed(
   1005   value = @Parameter(name = "foo")
   1006 //^^^^^ variable.parameter.java
   1007 //        ^ punctuation.definition.annotation.java
   1008 //         ^^^^^^^^ variable.annotation.java
   1009 //                   ^^^^ variable.parameter.java
   1010 )
   1011 
   1012 @AnnotationAsParameterMultiple({
   1013 //                             ^ punctuation.section.braces.begin.java
   1014     @Parameter(name = "foo"),
   1015 //  ^ punctuation.definition.annotation.java
   1016 //   ^^^^^^^^^ variable.annotation.java
   1017 //             ^^^^ variable.parameter.java
   1018 
   1019     @Parameter(name = "bar")
   1020 //  ^ punctuation.definition.annotation.java
   1021 //   ^^^^^^^^^ variable.annotation.java
   1022 //             ^^^^ variable.parameter.java
   1023 })
   1024 // <- punctuation.section.braces.end.java
   1025 
   1026 @AnnotationAsParameterMultipleNamed(
   1027   first  = {@Parameter(name = "foo"), @Parameter(name = "bar")},
   1028 //^^^^^ variable.parameter.java
   1029 //          ^ punctuation.definition.annotation.java
   1030 //           ^^^^^^^^^ variable.annotation.java
   1031 //                     ^^^^ variable.parameter.java
   1032 //                                    ^ punctuation.definition.annotation.java
   1033 //                                     ^^^^^^^^^ variable.annotation.java
   1034 //                                               ^^^^ variable.parameter.java
   1035   second = {@Parameter(name = "foo"), @Parameter(name = "bar")},
   1036 //^^^^^^ variable.parameter.java
   1037   third = @Parameter(name = "foo")
   1038 //^^^^^ variable.parameter.java
   1039 //         ^^^^^^^^^ variable.annotation.java
   1040 )
   1041 
   1042 @SomeInterface
   1043 // <- punctuation.definition.annotation.java
   1044 public class Foo {
   1045 // <- meta.class.java storage.modifier.java
   1046 //     ^ meta.class.java meta.class.identifier.java storage.type.java
   1047 //               ^ punctuation.section.block.begin.java
   1048 
   1049   FooBar MY_CONST = new FooBar();
   1050 //       ^^^^^^^^ entity.name.constant.java
   1051 
   1052   @Inject
   1053 //^^^^^^^ meta.annotation
   1054   public Foo(
   1055 //^ - meta.annotation
   1056 //       ^ meta.method.java
   1057 //       ^ entity.name.function.constructor
   1058     // Comment for annotation
   1059     @MyAnnotation FooType annotatedParam,
   1060 //  ^ meta.annotation.java
   1061 //                ^ - meta.annotation.java
   1062 //                ^ support.class.java
   1063 //                        ^ variable.parameter.java
   1064     String unannotatedParam) {
   1065 //  ^ support.class.java
   1066 //         ^ variable.parameter.java
   1067     return;
   1068 //  ^^^^^^ keyword.control.flow.return.java
   1069   }
   1070 
   1071   void bar$() {}
   1072 //     ^^^^^^ meta.method.java
   1073 //     ^^^^ entity.name.function
   1074 
   1075   void à() {}
   1076 //     ^^ meta.method.java
   1077 //     ^ entity.name.function
   1078 
   1079   public static void main(String[] args, String<List> moreArgs, a.b.c.Foo bar) {}
   1080 //                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.parameters.java
   1081 //                        ^^^^^^ support.class.java
   1082 //                              ^^ storage.modifier.array.java
   1083 //                                 ^^^^ variable.parameter.java
   1084 //                                     ^ punctuation.separator.comma.java
   1085 //                                             ^^^^^^ meta.generic.java
   1086 //                                       ^^^^^^ support.class.java
   1087 //                                              ^^^^ support.class.java
   1088 //                                                    ^^^^^^^^ variable.parameter.java
   1089 //                                                                ^ support.type.package.java
   1090 //                                                                 ^ punctuation.accessor.dot.java
   1091 //                                                                   ^ punctuation.accessor.dot.java
   1092 //                                                                    ^^^ support.class.java
   1093 //                                                                        ^^^ variable.parameter.java
   1094 
   1095   MyClass myClass = new MyClass(
   1096       SomeEnum.ENUM_VALUE,
   1097       new OtherNewClass(),
   1098       new OtherNestedClass(
   1099           SomeEnum.ENUM_VALUE,
   1100           new SuperNestedClass(param, 2)),
   1101       anotherParam);
   1102 
   1103   public static final MyObject MY_CONST = new MyObject(),
   1104 //                             ^ entity.name.constant
   1105 
   1106     _MY_ANOTHER_CONST = new MyObject();
   1107 //  ^^^^^^^^^^^^^^^^^ entity.name.constant
   1108 
   1109   Object foo = new TypeLiteral<
   1110       StandardReferenceNumberProcessor<
   1111           SimpleGenerateReferenceNumberOperation,
   1112           SimpleSyncReferenceNumberOperation>>() {};
   1113 
   1114   Object bar = SomeStaticClass.newBuilder().doThings(1)
   1115 //                             ^ meta.function-call.java variable.function.java
   1116 //                                          ^ meta.function-call.java variable.function.java
   1117 //                                                   ^ meta.function-call.java constant.numeric.integer.decimal
   1118       .withString("I am a string");
   1119 //     ^ meta.function-call.java variable.function.java
   1120 //                ^ meta.function-call.java string.quoted.double.java
   1121 
   1122   Object bah = someStaticMethodCall(4)
   1123 //             ^ meta.function-call.java variable.function.java
   1124 //                                  ^ meta.function-call.java constant.numeric.integer.decimal
   1125       .withString("I am a string");
   1126 //     ^ meta.function-call.java variable.function.java
   1127 //                ^ meta.function-call.java string.quoted.double.java
   1128 
   1129   private static final String DEFAULT_IDEMPOTENCY_KEY = 44493;
   1130 //                            ^ entity.name.constant
   1131 //                                                      ^ constant.numeric.integer.decimal
   1132 
   1133 
   1134   private MyGenric<Param, With.Dots, With.Nested<Generic>, and.fully.Qualified,
   1135 //                             ^ meta.generic.java support.class.java
   1136 //                                       ^ meta.generic.java punctuation.accessor.dot.java
   1137 //                                                         ^^^^^^^^^^^^^^^^^^^ meta.path.java
   1138       and.fully.Qualified<Generic>> myVariable;
   1139 //    ^^^^^^^^^^^^^^^^^^^ meta.path.java
   1140 //                          ^ meta.generic.java meta.generic.java support.class.java
   1141 
   1142   private MyObject otherObject = MY_CONST;
   1143 //                               ^ constant.other.java
   1144 
   1145   private MyObject otherObject = SOME_CONST.FOO;
   1146 //                               ^ constant.other.java
   1147 //                                          ^ constant.other.java
   1148 
   1149   private MyObject otherObject = SOME_CONST.get();
   1150 //                               ^ constant.other.java
   1151 //                                          ^ variable.function.java
   1152 
   1153   private MyObject object = a.b.ErrorCode.COMMUNICATION_ERROR;
   1154 //                          ^^^^^^^^^^^^^ meta.path.java
   1155 //                          ^ support.type.package.java
   1156 //                           ^ punctuation.accessor.dot.java
   1157 //                            ^ support.type.package.java
   1158 //                             ^ punctuation.accessor.dot.java
   1159 //                              ^^^^^^^^^ support.class.java
   1160 //                                       ^ punctuation.accessor.dot.java
   1161 //                                        ^ constant.other.java
   1162 
   1163   private static final UUID SECURE_ID = UUID.randomUUID();
   1164 //                     ^ support.class.java
   1165 //                          ^ entity.name.constant
   1166 //                                      ^ support.class.java
   1167 //                                           ^ meta.function-call.java variable.function.java
   1168 
   1169   private URI uri = new URI();
   1170 //        ^^^ support.class.java
   1171 //                      ^^^ support.class.java
   1172 
   1173   private URI URI2 = new URI();
   1174 //        ^^^ support.class.java
   1175 //            ^^^^ entity.name.constant.java
   1176 //                       ^^^ support.class.java
   1177 
   1178 
   1179   class SubClass extends AbstractClass.NestedClass {
   1180 //      ^ entity.name.class.java
   1181 //                       ^^^^^^^^^^^^^ entity.other.inherited-class.java
   1182 //                                    ^ punctuation.accessor.dot.java
   1183 //                                     ^^^^^^^^^^^ entity.other.inherited-class.java
   1184 //                                                 ^ punctuation.section.block.begin.java
   1185   }
   1186 
   1187   class SubClass extends AbstractClass {
   1188 //      ^ entity.name.class.java
   1189 //                       ^ entity.other.inherited-class.java
   1190   }
   1191 
   1192   class SubClass extends fully.qualified
   1193 //      ^ entity.name.class.java
   1194 //                       ^^^^^^^^^^^^^^^ meta.path.java
   1195 //                       ^^^^^ entity.other.inherited-class.package.java
   1196 //                            ^ punctuation.accessor.dot.java
   1197 //                             ^^^^^^^^^ entity.other.inherited-class.package.java
   1198     .name.AbstractClass {
   1199 //  ^^^^^^^^^^^^^^^^^^^ meta.path.java
   1200 //  ^ punctuation.accessor.dot.java
   1201 //   ^^^^ entity.other.inherited-class.package.java
   1202 //       ^ punctuation.accessor.dot.java
   1203 //        ^^^^^^^^^^^^^ entity.other.inherited-class.java
   1204   }
   1205 
   1206   Function<Foo, Bar> BLOCK_LAMBDA = r -> {
   1207 //                   ^ entity.name.constant
   1208 //                                ^ keyword.operator.assignment.java
   1209 //                                    ^ storage.type.function.anonymous.java
   1210 //                                       ^ meta.block punctuation.section.block.begin
   1211     return 1;
   1212 //  ^^^^^^ keyword.control.flow.return.java
   1213   };
   1214 //^ meta.block punctuation.section.block.end
   1215 // ^ punctuation.terminator
   1216 
   1217   Supplier<Foo> supplier = () -> true;
   1218 //                         ^ punctuation.section.parens.begin.java
   1219 //                          ^ punctuation.section.parens.end.java
   1220 //                       ^ keyword.operator.assignment.java
   1221 //                            ^ storage.type.function.anonymous.java
   1222 //                                   ^ punctuation.terminator
   1223 
   1224   byte[] byteArray;
   1225 //^^^^ storage.type.primitive.java
   1226 //    ^^ storage.modifier.array.java
   1227 
   1228   byte byteArray2[] = {1, 2};
   1229 //^^^^ storage.type.primitive.java
   1230 //               ^^ storage.modifier.array.java
   1231 //                  ^^^^^^^^ meta.assignment.rhs.java
   1232 
   1233   static {
   1234 //       ^ meta.static.body.java punctuation.section.block.begin.java
   1235     StaticFlag.setFlag("Boo!");
   1236   }
   1237 //^ meta.static.body.java punctuation.section.block.end.java
   1238 
   1239   int operators() {
   1240 
   1241     assert scale > -100 : foo == true;
   1242 //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.assertion.java
   1243 //  ^^^^^^ keyword.control.flow.assert.java
   1244 //                      ^ punctuation.separator.expressions.java
   1245 //
   1246     if (this.scale<0) {
   1247 //  ^^ keyword.control.conditional.if.java
   1248 //     ^^^^^^^^^^^^^^ meta.parens.java
   1249 //     ^ punctuation.section.parens.begin
   1250 //          ^ punctuation.accessor.dot.java
   1251 //                ^ keyword.operator.comparison.java
   1252 //                 ^ constant.numeric.integer.decimal
   1253 //                   ^ - meta.parens.java
   1254       return foo<<32;
   1255 //    ^^^^^^ keyword.control.flow.return.java
   1256 //              ^^ keyword.operator.bitshift.java
   1257 //                ^^ constant.numeric.integer.decimal
   1258 //                  ^ punctuation.terminator.java
   1259     }
   1260 //  ^ meta.block.java punctuation.section.block.end.java
   1261 
   1262     int foo = true ? 1 : 2;
   1263 //            ^^^^ constant.language.java
   1264 //                 ^ keyword.operator.ternary.java
   1265 //                   ^ constant.numeric.integer.decimal
   1266 //                     ^ keyword.operator.ternary.java
   1267 //                       ^ constant.numeric.integer.decimal
   1268 //                        ^ punctuation.terminator.java
   1269 
   1270     return foo<bar;
   1271 //  ^^^^^^ keyword.control.flow.return.java
   1272 
   1273     if (a == false) {
   1274 //        ^^ keyword.operator.comparison
   1275 
   1276         x = (e & 1) << c^2;
   1277 //             ^ keyword.operator.bitwise
   1278 //                  ^^ keyword.operator.bitshift
   1279 //                      ^ keyword.operator.bitwise
   1280 
   1281         y = ~e >>> (c | 2);
   1282 //          ^ keyword.operator.bitwise
   1283 //             ^^^ keyword.operator.bitshift
   1284 //                    ^ keyword.operator.bitwise
   1285 
   1286         z &= x; z ^= x; z *= x; z /= x;
   1287 //        ^^ keyword.operator.assignment
   1288 //                ^^ keyword.operator.assignment
   1289 //                        ^^ keyword.operator.assignment
   1290 //                                ^^ keyword.operator.assignment
   1291 
   1292     }
   1293 
   1294     boolean inst = a instanceof Object;
   1295 //                   ^^^^^^^^^^ keyword.operator.word.instanceof
   1296   }
   1297 //^ meta.method.java meta.method.body.java punctuation.section.block.end.java
   1298 
   1299   int numbers() {
   1300 
   1301     a = 0x1.
   1302 //      ^^^^ constant.numeric.float.hexadecimal
   1303 //      ^^ punctuation.definition.numeric.hexadecimal
   1304 //         ^ punctuation.separator.decimal
   1305 
   1306     a = 0x.1a2f
   1307 //      ^^^^^^^ constant.numeric.float.hexadecimal
   1308 //      ^^ punctuation.definition.numeric.hexadecimal
   1309 //        ^ punctuation.separator.decimal
   1310 //            ^ - punctuation
   1311 
   1312     a = 0x1.a2f
   1313 //      ^^^^^^^ constant.numeric.float.hexadecimal
   1314 //      ^^ punctuation.definition.numeric.hexadecimal
   1315 //         ^ punctuation.separator.decimal
   1316 //            ^ - punctuation
   1317 
   1318     a = 0x1ffp+1023
   1319 //      ^^^^^^^^^^^ constant.numeric.float.hexadecimal
   1320 //      ^^ punctuation.definition.numeric.hexadecimal
   1321 
   1322     a = 0xd.aP-1074 0x_1_f_._a_d_P-_10_74_
   1323 //      ^^^^^^^^^^^ constant.numeric.float.hexadecimal
   1324 //      ^^ punctuation.definition.numeric.hexadecimal
   1325 //         ^ punctuation.separator.decimal
   1326 //                  ^^^^^^^^^^^^^^^^^^^^^^ constant.numeric.float.hexadecimal
   1327 //                  ^^ punctuation.definition.numeric.hexadecimal
   1328 //                    ^ invalid.illegal.numeric
   1329 //                      ^ - invalid
   1330 //                        ^ invalid.illegal.numeric
   1331 //                         ^ punctuation.separator.decimal
   1332 //                          ^ invalid.illegal.numeric
   1333 //                            ^ - invalid
   1334 //                              ^ invalid.illegal.numeric
   1335 //                                 ^ invalid.illegal.numeric
   1336 //                                    ^ - invalid
   1337 //                                       ^ invalid.illegal.numeric
   1338 
   1339 //  decimal floats
   1340 
   1341     a = 0D + 12345D + 12345D + 12_34_5_D - _12_34_5D - 12a45D;
   1342 //      ^^ constant.numeric.float.decimal
   1343 //       ^ storage.type.numeric
   1344 //           ^^^^^^ constant.numeric.float.decimal
   1345 //                ^ storage.type.numeric
   1346 //                    ^^^^^^ constant.numeric.float.decimal
   1347 //                         ^ storage.type.numeric
   1348 //                             ^^^^^^^^^ constant.numeric.float.decimal
   1349 //                                    ^ invalid.illegal.numeric
   1350 //                                     ^ storage.type.numeric
   1351 //                                         ^^^^^^^^^ - constant.numeric
   1352 //                                                     ^^^^^^ - constant.numeric
   1353 
   1354     a = 0F + 12345F + 12345F + 12_34_5_F - _12_34_5F - 12a45F;
   1355 //      ^^ constant.numeric.float.decimal
   1356 //       ^ storage.type.numeric
   1357 //           ^^^^^^ constant.numeric.float.decimal
   1358 //                ^ storage.type.numeric
   1359 //                    ^^^^^^ constant.numeric.float.decimal
   1360 //                         ^ storage.type.numeric
   1361 //                             ^^^^^^^^^ constant.numeric.float.decimal
   1362 //                                    ^ invalid.illegal.numeric
   1363 //                                     ^ storage.type.numeric
   1364 //                                         ^^^^^^^^^ - constant.numeric
   1365 //                                                     ^^^^^^ - constant.numeric
   1366 
   1367     a = 1. + 1_. + 1_2. - _1.;
   1368 //      ^^ constant.numeric.float.decimal
   1369 //       ^ punctuation.separator.decimal
   1370 //           ^^^ constant.numeric.float.decimal
   1371 //            ^ invalid.illegal.numeric
   1372 //             ^ punctuation.separator.decimal
   1373 //                 ^^^^ constant.numeric.float.decimal
   1374 //                    ^ punctuation.separator.decimal
   1375 //                        ^^^ - constant.numeric
   1376 
   1377     a = 1.D + 1_.D + 1_2.D - _1.D;
   1378 //      ^^^ constant.numeric.float.decimal
   1379 //       ^ punctuation.separator.decimal
   1380 //        ^ storage.type.numeric
   1381 //            ^^^^ constant.numeric.float.decimal
   1382 //             ^ invalid.illegal.numeric
   1383 //              ^ punctuation.separator.decimal
   1384 //               ^ storage.type.numeric
   1385 //                   ^^^^^ constant.numeric.float.decimal
   1386 //                      ^ punctuation.separator.decimal
   1387 //                       ^ storage.type.numeric
   1388 //                           ^^^^ - constant.numeric
   1389 
   1390     a = 1.2 + 1_.2_ + 1_2.3_4 + 1_2_._3_4_ - _1.5;
   1391 //      ^^^ constant.numeric.float.decimal
   1392 //       ^ punctuation.separator.decimal
   1393 //            ^^^^^ constant.numeric.float.decimal
   1394 //             ^ invalid.illegal.numeric
   1395 //              ^ punctuation.separator.decimal
   1396 //                    ^^^^^^^ constant.numeric.float.decimal
   1397 //                       ^ punctuation.separator.decimal
   1398 //                              ^^^^^^^^^^ constant.numeric.float.decimal
   1399 //                                 ^ invalid.illegal.numeric
   1400 //                                  ^ punctuation.separator.decimal
   1401 //                                   ^ invalid.illegal.numeric
   1402 //                                           ^^ - constant.numeric
   1403 //                                             ^ punctuation.separator.decimal
   1404 //                                             ^^ constant.numeric.float.decimal
   1405 
   1406     a = 1.2d + 1_.2_d + 1_2.3_4d + 1_2_._3_4_d - _1.5d;
   1407 //      ^^^^ constant.numeric.float.decimal
   1408 //       ^ punctuation.separator.decimal
   1409 //         ^ storage.type.numeric
   1410 //             ^^^^^^ constant.numeric.float.decimal
   1411 //              ^ invalid.illegal.numeric
   1412 //               ^ punctuation.separator.decimal
   1413 //                 ^ invalid.illegal.numeric
   1414 //                  ^ storage.type.numeric
   1415 //                      ^^^^^^^^ constant.numeric.float.decimal
   1416 //                         ^ punctuation.separator.decimal
   1417 //                             ^ storage.type.numeric
   1418 //                                 ^^^^^^^^^^^ constant.numeric.float.decimal
   1419 //                                    ^ invalid.illegal.numeric
   1420 //                                     ^ punctuation.separator.decimal
   1421 //                                      ^ invalid.illegal.numeric
   1422 //                                           ^ storage.type.numeric
   1423 //                                          ^ invalid.illegal.numeric
   1424 //                                               ^^ - constant.numeric
   1425 //                                                 ^ punctuation.separator.decimal
   1426 //                                                 ^^^ constant.numeric.float.decimal
   1427 //                                                   ^ storage.type.numeric
   1428 
   1429     a = 12e34 + 12e+3_ + 1_2e3_4 + 1_2_e3_4_ + 1_2_e_3_4 + 12e+34 + 12e-34 + 12e+3_4 - _12e34;
   1430 //      ^^^^^ constant.numeric.float.decimal
   1431 //              ^^^^^^ constant.numeric.float.decimal
   1432 //                       ^^^^^^^ constant.numeric.float.decimal
   1433 //                                 ^^^^^^^^^ constant.numeric.float.decimal
   1434 //                                    ^ invalid.illegal.numeric
   1435 //                                             ^^^^^^^^^ constant.numeric.float.decimal
   1436 //                                                ^ invalid.illegal.numeric
   1437 //                                                  ^ invalid.illegal.numeric
   1438 //                                                         ^^^^^^ constant.numeric.float.decimal
   1439 //                                                                  ^^^^^^ constant.numeric.float.decimal
   1440 //                                                                           ^^^^^^^ constant.numeric.float.decimal
   1441 //                                                                                     ^^^^^^ - constant.numeric
   1442 
   1443     a = 12e34f + 12e+3_f + 1_2e3_4f + 1_2_e3_4_f + 1_2_e_3_4f + 12e+34f + 12e-34f + 12e+3_4f - _12e34f;
   1444 //      ^^^^^^ constant.numeric.float.decimal
   1445 //           ^ storage.type.numeric
   1446 //               ^^^^^^^ constant.numeric.float.decimal
   1447 //                    ^ invalid.illegal.numeric
   1448 //                     ^ storage.type.numeric
   1449 //                         ^^^^^^^^ constant.numeric.float.decimal
   1450 //                                ^ storage.type.numeric
   1451 //                                    ^^^^^^^^^^ constant.numeric.float.decimal
   1452 //                                       ^ invalid.illegal.numeric
   1453 //                                            ^ invalid.illegal.numeric
   1454 //                                             ^ storage.type.numeric
   1455 //                                                 ^^^^^^^^^^ constant.numeric.float.decimal
   1456 //                                                    ^ invalid.illegal.numeric
   1457 //                                                      ^ invalid.illegal.numeric
   1458 //                                                          ^ storage.type.numeric
   1459 //                                                              ^^^^^^^ constant.numeric.float.decimal
   1460 //                                                                    ^ storage.type.numeric
   1461 //                                                                        ^^^^^^^ constant.numeric.float.decimal
   1462 //                                                                              ^ storage.type.numeric
   1463 //                                                                                  ^^^^^^^^ constant.numeric.float.decimal
   1464 //                                                                                         ^ storage.type.numeric
   1465 //                                                                                             ^^^^^^^ - constant.numeric
   1466 
   1467     a = 12.e34 + 12.e+3_ + 1_2.e3_4 + 1_2_.e3_4_ + 1_2_.e_3_4 + 12.e+34 + 12.e-34 + 12.e+3_4 - _12.e34;
   1468 //      ^^^^^^ constant.numeric.float.decimal
   1469 //        ^ punctuation.separator.decimal
   1470 //               ^^^^^^^ constant.numeric.float.decimal
   1471 //                 ^ punctuation.separator.decimal
   1472 //                         ^^^^^^^^ constant.numeric.float.decimal
   1473 //                            ^ punctuation.separator.decimal
   1474 //                                    ^^^^^^^^^^ constant.numeric.float.decimal
   1475 //                                       ^ invalid.illegal.numeric
   1476 //                                        ^ punctuation.separator.decimal
   1477 //                                                 ^^^^^^^^^^ constant.numeric.float.decimal
   1478 //                                                    ^ invalid.illegal.numeric
   1479 //                                                     ^ punctuation.separator.decimal
   1480 //                                                       ^ invalid.illegal.numeric
   1481 //                                                              ^^^^^^^ constant.numeric.float.decimal
   1482 //                                                                ^ punctuation.separator.decimal
   1483 //                                                                        ^^^^^^^ constant.numeric.float.decimal
   1484 //                                                                          ^ punctuation.separator.decimal
   1485 //                                                                                  ^^^^^^^^ constant.numeric.float.decimal
   1486 //                                                                                    ^ punctuation.separator.decimal
   1487 //                                                                                             ^^^^^^^ - constant.numeric
   1488 
   1489     a = 12.e34f + 12.e+3_f + 1_2.e3_4f + 1_2_.e3_4_f + 1_2_.e_3_4f + 12.e+34f + 12.e-34f + 12.e+3_4f - _12.e34f;
   1490 //      ^^^^^^^ constant.numeric.float.decimal
   1491 //        ^ punctuation.separator.decimal
   1492 //            ^ storage.type.numeric
   1493 //                ^^^^^^^^ constant.numeric.float.decimal
   1494 //                  ^ punctuation.separator.decimal
   1495 //                      ^ invalid.illegal.numeric
   1496 //                       ^ storage.type.numeric
   1497 //                           ^^^^^^^^^ constant.numeric.float.decimal
   1498 //                              ^ punctuation.separator.decimal
   1499 //                                   ^ storage.type.numeric
   1500 //                                       ^^^^^^^^^^^ constant.numeric.float.decimal
   1501 //                                          ^ invalid.illegal.numeric
   1502 //                                           ^ punctuation.separator.decimal
   1503 //                                                ^ invalid.illegal.numeric
   1504 //                                                 ^ storage.type.numeric
   1505 //                                                     ^^^^^^^^^^^ constant.numeric.float.decimal
   1506 //                                                        ^ invalid.illegal.numeric
   1507 //                                                         ^ punctuation.separator.decimal
   1508 //                                                           ^ invalid.illegal.numeric
   1509 //                                                               ^ storage.type.numeric
   1510 //                                                                   ^^^^^^^^ constant.numeric.float.decimal
   1511 //                                                                     ^ punctuation.separator.decimal
   1512 //                                                                          ^ storage.type.numeric
   1513 //                                                                              ^^^^^^^^ constant.numeric.float.decimal
   1514 //                                                                                ^ punctuation.separator.decimal
   1515 //                                                                                     ^ storage.type.numeric
   1516 //                                                                                         ^^^^^^^^^ constant.numeric.float.decimal
   1517 //                                                                                           ^ punctuation.separator.decimal
   1518 //                                                                                                 ^ storage.type.numeric
   1519 //                                                                                                     ^^^^^^^^ - constant.numeric
   1520 
   1521     a = 12.34e56 + 12_.34_e+5_ + 1_2.3_4e5_6 + 1_2_.3_4_e5_6_ + 1_2_._3_4e_5_6 + 12.34e+56 + 12.34e-56 + 12.34e+5_6 - _12.34e+5_6;
   1522 //      ^^^^^^^^ constant.numeric.float.decimal
   1523 //        ^ punctuation.separator.decimal
   1524 //                 ^^^^^^^^^^^ constant.numeric.float.decimal
   1525 //                   ^ invalid.illegal.numeric
   1526 //                    ^ punctuation.separator.decimal
   1527 //                               ^^^^^^^^^^^ constant.numeric.float.decimal
   1528 //                                  ^ punctuation.separator.decimal
   1529 //                                             ^^^^^^^^^^^^^^ constant.numeric.float.decimal
   1530 //                                                ^ invalid.illegal.numeric
   1531 //                                                 ^ punctuation.separator.decimal
   1532 //                                                              ^^^^^^^^^^^^^^ constant.numeric.float.decimal
   1533 //                                                                 ^ invalid.illegal.numeric
   1534 //                                                                  ^ punctuation.separator.decimal
   1535 //                                                                   ^ invalid.illegal.numeric
   1536 //                                                                               ^^^^^^^^^ constant.numeric.float.decimal
   1537 //                                                                                 ^ punctuation.separator.decimal
   1538 //                                                                                           ^^^^^^^^^ constant.numeric.float.decimal
   1539 //                                                                                             ^ punctuation.separator.decimal
   1540 //                                                                                                       ^^^^^^^^^^ constant.numeric.float.decimal
   1541 //                                                                                                         ^ punctuation.separator.decimal
   1542 //                                                                                                                    ^^^ - constant.numeric
   1543 
   1544     a = 12.34e56f + 12_.34_e+5_f + 1_2.3_4e5_6f + 1_2_.3_4_e5_6_f + 1_2_._3_4e_5_6f + 12.34e+56f + 12.34e-56f + 12.34e+5_6f - _12.34e+5_6f;
   1545 //      ^^^^^^^^^ constant.numeric.float.decimal
   1546 //        ^ punctuation.separator.decimal
   1547 //              ^ storage.type.numeric
   1548 //                  ^^^^^^^^^^^^ constant.numeric.float.decimal
   1549 //                    ^ invalid.illegal.numeric
   1550 //                     ^ punctuation.separator.decimal
   1551 //                        ^ invalid.illegal.numeric
   1552 //                            ^ invalid.illegal.numeric
   1553 //                             ^ storage.type.numeric
   1554 //                                 ^^^^^^^^^^^^ constant.numeric.float.decimal
   1555 //                                    ^ punctuation.separator.decimal
   1556 //                                            ^ storage.type.numeric
   1557 //                                                ^^^^^^^^^^^^^^^ constant.numeric.float.decimal
   1558 //                                                   ^ invalid.illegal.numeric
   1559 //                                                    ^ punctuation.separator.decimal
   1560 //                                                             ^ invalid.illegal.numeric
   1561 //                                                              ^ storage.type.numeric
   1562 //                                                                  ^^^^^^^^^^^^^^^ constant.numeric.float.decimal
   1563 //                                                                     ^ invalid.illegal.numeric
   1564 //                                                                      ^ punctuation.separator.decimal
   1565 //                                                                       ^ invalid.illegal.numeric
   1566 //                                                                                ^ storage.type.numeric
   1567 //                                                                                    ^^^^^^^^^^ constant.numeric.float.decimal
   1568 //                                                                                      ^ punctuation.separator.decimal
   1569 //                                                                                             ^ storage.type.numeric
   1570 //                                                                                                 ^^^^^^^^^^ constant.numeric.float.decimal
   1571 //                                                                                                   ^ punctuation.separator.decimal
   1572 //                                                                                                          ^ storage.type.numeric
   1573 //                                                                                                              ^^^^^^^^^^^ constant.numeric.float.decimal
   1574 //                                                                                                                ^ punctuation.separator.decimal
   1575 //                                                                                                                        ^ storage.type.numeric
   1576 //                                                                                                                            ^^^ - constant.numeric
   1577 
   1578     a = .2 + .2_ + .3_4 + ._3_4_;
   1579 //      ^^ constant.numeric.float.decimal
   1580 //      ^ punctuation.separator.decimal
   1581 //           ^^^ constant.numeric.float.decimal
   1582 //           ^ punctuation.separator.decimal
   1583 //                 ^^^^ constant.numeric.float.decimal
   1584 //                 ^ punctuation.separator.decimal
   1585 //                        ^^^^^^ constant.numeric.float.decimal
   1586 //                        ^ punctuation.separator.decimal
   1587 //                         ^ invalid.illegal.numeric
   1588 
   1589     a = .2d + .2_d + .3_4d + ._3_4_d;
   1590 //      ^^^ constant.numeric.float.decimal
   1591 //      ^ punctuation.separator.decimal
   1592 //            ^^^^ constant.numeric.float.decimal
   1593 //            ^ punctuation.separator.decimal
   1594 //              ^ invalid.illegal.numeric
   1595 //                   ^^^^^ constant.numeric.float.decimal
   1596 //                   ^ punctuation.separator.decimal
   1597 //                           ^^^^^^^ constant.numeric.float.decimal
   1598 //                           ^ punctuation.separator.decimal
   1599 //                            ^ invalid.illegal.numeric
   1600 //                                ^ invalid.illegal.numeric
   1601 
   1602     a = .34e56 + .34_e+5_ + .3_4e5_6 + .3_4_e5_6_ + ._3_4e_5_6 + .34e+56 + .34e-56 + .34e+5_6;
   1603 //      ^^^^^^ constant.numeric.float.decimal
   1604 //      ^ punctuation.separator.decimal
   1605 //               ^^^^^^^^ constant.numeric.float.decimal
   1606 //               ^ punctuation.separator.decimal
   1607 //                          ^^^^^^^^ constant.numeric.float.decimal
   1608 //                          ^ punctuation.separator.decimal
   1609 //                                     ^^^^^^^^^^ constant.numeric.float.decimal
   1610 //                                     ^ punctuation.separator.decimal
   1611 //                                                  ^^^^^^^^^^ constant.numeric.float.decimal
   1612 //                                                  ^ punctuation.separator.decimal
   1613 //                                                   ^ invalid.illegal.numeric
   1614 //                                                               ^^^^^^^ constant.numeric.float.decimal
   1615 //                                                               ^ punctuation.separator.decimal
   1616 //                                                                         ^^^^^^^ constant.numeric.float.decimal
   1617 //                                                                         ^ punctuation.separator.decimal
   1618 //                                                                                   ^^^^^^^^ constant.numeric.float.decimal
   1619 //                                                                                   ^ punctuation.separator.decimal
   1620 
   1621     a = 23.45 + 23.45F + 23.45d;
   1622 //      ^^^^^ constant.numeric.float.decimal
   1623 //              ^^^^^^ constant.numeric.float.decimal
   1624 //                   ^ storage.type.numeric
   1625 //                       ^^^^^^ constant.numeric.float.decimal
   1626 //                            ^ storage.type.numeric
   1627 
   1628     a = .01 + .02e3+.02e3F;
   1629 //      ^^^ constant.numeric.float.decimal
   1630 //          ^ keyword.operator
   1631 //            ^^^^^ constant.numeric.float.decimal
   1632 //                 ^ keyword.operator
   1633 //                   ^^^^^ constant.numeric.float.decimal
   1634 //                       ^ storage.type.numeric
   1635 
   1636     a = 23.45e67+23.45e+6F+23.45e-67D;
   1637 //      ^^^^^^^^ constant.numeric.float.decimal
   1638 //              ^ keyword.operator
   1639 //               ^^^^^^^^^ constant.numeric.float.decimal
   1640 //                       ^ storage.type.numeric
   1641 //                        ^ keyword.operator
   1642 //                         ^^^^^^^^^^ constant.numeric.float.decimal
   1643 //                                  ^ storage.type.numeric
   1644 
   1645 // binary integers
   1646 
   1647     a = 0b101101 + 0b10_11_01 + 0b10_11_01_ + 0b_101101 - 0_b10_1101 - 0b;
   1648 //      ^^ punctuation.definition.numeric.binary
   1649 //      ^^^^^^^^ constant.numeric.integer.binary
   1650 //                 ^^ punctuation.definition.numeric.binary
   1651 //                 ^^^^^^^^^^ constant.numeric.integer.binary
   1652 //                              ^^ punctuation.definition.numeric.binary
   1653 //                              ^^^^^^^^^^^ constant.numeric.integer.binary
   1654 //                                        ^ invalid.illegal.numeric
   1655 //                                            ^^ punctuation.definition.numeric.binary
   1656 //                                            ^^^^^^^^^ constant.numeric.integer.binary
   1657 //                                              ^ invalid.illegal.numeric
   1658 //                                                        ^^^^^^^^^^ - constant.numeric
   1659 //                                                                     ^^ - constant.numeric
   1660 
   1661     a = 0b101101l + 0b10_11_01l + 0b10_11_01_l + 0b_101101l - 0_b10_1101l;
   1662 //      ^^ punctuation.definition.numeric.binary
   1663 //      ^^^^^^^^^ constant.numeric.integer.binary
   1664 //              ^ storage.type.numeric
   1665 //                  ^^ punctuation.definition.numeric.binary
   1666 //                  ^^^^^^^^^^^ constant.numeric.integer.binary
   1667 //                            ^ storage.type.numeric
   1668 //                                ^^ punctuation.definition.numeric.binary
   1669 //                                ^^^^^^^^^^^^ constant.numeric.integer.binary
   1670 //                                          ^ invalid.illegal.numeric
   1671 //                                           ^ storage.type.numeric
   1672 //                                               ^^ punctuation.definition.numeric.binary
   1673 //                                               ^^^^^^^^^^ constant.numeric.integer.binary
   1674 //                                                 ^ invalid.illegal.numeric
   1675 //                                                        ^ storage.type.numeric
   1676 //                                                            ^^^^^^^^^^^ - constant.numeric
   1677 
   1678 // hexadecimal integers
   1679 
   1680     a = 0xABCD + 0xAB_CD + 0xAB_CD_ + 0x_AB_CD - 0_xAB_CD - 0x;
   1681 //      ^^ punctuation.definition.numeric.hexadecimal
   1682 //      ^^^^^^ constant.numeric.integer.hexadecimal
   1683 //               ^^ punctuation.definition.numeric.hexadecimal
   1684 //               ^^^^^^ constant.numeric.integer.hexadecimal
   1685 //                         ^^ punctuation.definition.numeric.hexadecimal
   1686 //                         ^^^^^^^^ constant.numeric.integer.hexadecimal
   1687 //                                ^ invalid.illegal.numeric
   1688 //                                    ^^ punctuation.definition.numeric.hexadecimal
   1689 //                                    ^^^^^^^^ constant.numeric.integer.hexadecimal
   1690 //                                      ^ invalid.illegal.numeric
   1691 //                                               ^^^^^^^^ - constant.numeric
   1692 //                                                          ^^ - constant.numeric
   1693 
   1694     a = 0xABCDl + 0xAB_CDl + 0xAB_CD_l + 0x_AB_CDl - 0_xAB_CDl;
   1695 //      ^^ punctuation.definition.numeric.hexadecimal
   1696 //      ^^^^^^^ constant.numeric.integer.hexadecimal
   1697 //            ^ storage.type.numeric
   1698 //                ^^ punctuation.definition.numeric.hexadecimal
   1699 //                ^^^^^^^^ constant.numeric.integer.hexadecimal
   1700 //                       ^ storage.type.numeric
   1701 //                           ^^ punctuation.definition.numeric.hexadecimal
   1702 //                           ^^^^^^^^^ constant.numeric.integer.hexadecimal
   1703 //                                  ^ invalid.illegal.numeric
   1704 //                                   ^ storage.type.numeric
   1705 //                                       ^^ punctuation.definition.numeric.hexadecimal
   1706 //                                       ^^^^^^^^^ constant.numeric.integer.hexadecimal
   1707 //                                         ^ invalid.illegal.numeric
   1708 //                                               ^ storage.type.numeric
   1709 //                                                   ^^^^^^^^^ - constant.numeric
   1710 
   1711 //  octal integers
   1712 
   1713     a = 07 + 0_ + 0_7 + 07_ + 079 + 079_ + 0_79_ - 0a - 0_a;
   1714 //      ^^ constant.numeric.integer.octal
   1715 //      ^ punctuation.definition.numeric.octal
   1716 //           ^ punctuation.definition.numeric.octal
   1717 //           ^^ constant.numeric.integer.octal
   1718 //            ^ invalid.illegal.numeric
   1719 //                ^ punctuation.definition.numeric.octal
   1720 //                ^^^ constant.numeric.integer.octal
   1721 //                      ^ punctuation.definition.numeric.octal
   1722 //                      ^^^ constant.numeric.integer.octal
   1723 //                        ^ invalid.illegal.numeric
   1724 //                            ^ punctuation.definition.numeric.octal
   1725 //                            ^^^ constant.numeric.integer.octal
   1726 //                             ^^ invalid.illegal.numeric
   1727 //                                  ^ punctuation.definition.numeric.octal
   1728 //                                  ^^^^ constant.numeric.integer.octal
   1729 //                                   ^^^ invalid.illegal.numeric
   1730 //                                         ^ punctuation.definition.numeric.octal
   1731 //                                         ^^^^^ constant.numeric.integer.octal
   1732 //                                          ^^^^ invalid.illegal.numeric
   1733 //                                                 ^^ - constant.numeric
   1734 //                                                      ^^^ - constant.numeric
   1735 
   1736     a = 07l + 0_l + 0_7l + 07_l + 0792l + 079_2_l - 0al - 0_a_l;
   1737 //      ^ punctuation.definition.numeric.octal
   1738 //      ^^^ constant.numeric.integer.octal
   1739 //        ^ storage.type.numeric
   1740 //            ^ punctuation.definition.numeric.octal
   1741 //            ^^^ constant.numeric.integer.octal
   1742 //             ^ invalid.illegal.numeric
   1743 //                  ^ punctuation.definition.numeric.octal
   1744 //                  ^^^^ constant.numeric.integer.octal
   1745 //                         ^ punctuation.definition.numeric.octal
   1746 //                         ^^^^ constant.numeric.integer.octal
   1747 //                           ^ invalid.illegal.numeric
   1748 //                            ^ storage.type.numeric
   1749 //                                ^^^^^ constant.numeric.integer.octal
   1750 //                                ^ punctuation.definition.numeric.octal
   1751 //                                 ^^^ invalid.illegal.numeric
   1752 //                                    ^ storage.type.numeric
   1753 //                                        ^ punctuation.definition.numeric.octal
   1754 //                                         ^^^^^ invalid.illegal.numeric
   1755 //                                              ^ storage.type.numeric
   1756 //                                                  ^^^ - constant.numeric
   1757 //                                                        ^^^^^ - constant.numeric
   1758 
   1759 //  decimal integers
   1760 
   1761     a = 0 + 0L;
   1762 //      ^ constant.numeric.integer.decimal
   1763 //          ^^ constant.numeric.integer.decimal
   1764 //           ^ storage.type.numeric
   1765 
   1766     a = 12345 + 12_34_5 + 1_____5 + 12_34_5_ - _12_34_5 - 12a45;
   1767 //      ^^^^^ constant.numeric.integer.decimal
   1768 //              ^^^^^^^ constant.numeric.integer.decimal
   1769 //                        ^^^^^^^ constant.numeric.integer.decimal
   1770 //                                  ^^^^^^^^ constant.numeric.integer.decimal
   1771 //                                         ^ invalid.illegal.numeric
   1772 //                                             ^^^^^^^^ - constant.numeric
   1773 //                                                        ^^^^^ - constant.numeric
   1774 
   1775     a = 12345l + 12345L + 12_34_5_L - _12_34_5L - 12a45L;
   1776 //      ^^^^^^ constant.numeric.integer.decimal
   1777 //           ^ storage.type.numeric
   1778 //               ^^^^^^ constant.numeric.integer.decimal
   1779 //                    ^ storage.type.numeric
   1780 //                        ^^^^^^^^^ constant.numeric.integer.decimal
   1781 //                               ^ invalid.illegal.numeric
   1782 //                                ^ storage.type.numeric
   1783 //                                    ^^^^^^^^^ - constant.numeric
   1784 //                                                ^^^^^^ - constant.numeric
   1785 
   1786     a = 123_-_456;
   1787 //      ^^^^ constant.numeric.integer.decimal
   1788 //         ^ invalid.illegal.numeric
   1789 //          ^ keyword.operator
   1790 //           ^^^^ - constant.numeric
   1791   }
   1792 
   1793   String stringAndChars() {
   1794     String doubleQuotes = "String with double quotes";
   1795 //                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double
   1796 //                        ^ punctuation.definition.string.begin
   1797 //                                                  ^ punctuation.definition.string.end
   1798 
   1799     char singleQuotes = 'x';
   1800 //                      ^^^ string.quoted.single
   1801 //                      ^ punctuation.definition.string.begin
   1802 //                        ^ punctuation.definition.string.end
   1803 
   1804     String escapes = "Here \2 are \n some \t escaped \'\\' characters \"";
   1805 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double
   1806 //                         ^^ constant.character.escape
   1807 //                                ^^ constant.character.escape
   1808 //                                                   ^^^^ constant.character.escape
   1809 //                                                                    ^^ constant.character.escape
   1810 
   1811     char escape = '\t' + '\1' + '\'' + '\\';
   1812 //                ^^^^ string.quoted.single
   1813 //                 ^^ constant.character.escape
   1814 //                       ^^^^ string.quoted.single
   1815 //                        ^^ constant.character.escape
   1816 //                              ^^^^ string.quoted.single
   1817 //                               ^^ constant.character.escape
   1818 //                                     ^^^^ string.quoted.single
   1819 //                                      ^^ constant.character.escape
   1820 
   1821     String text = "String without closing quote
   1822 //                                             ^ invalid.illegal.newline
   1823     System.out.println(text);
   1824 //  ^^^^^^ support.class
   1825 
   1826     char letter = 'z
   1827 //                  ^ invalid.illegal.newline
   1828     System.out.println(letter);
   1829 //  ^^^^^^ support.class
   1830   }
   1831 
   1832   void varType() {
   1833     var x = "String";
   1834 //  ^^^ storage.type.var.java
   1835 
   1836     try (var in = new BufferedReader()) {
   1837 //       ^^^ storage.type.var.java
   1838         var line = in.readLine();
   1839 //      ^^^ storage.type.var.java
   1840     }
   1841   }
   1842 
   1843   @Test
   1844 //^ punctuation.definition.annotation.java
   1845   public void someMethod(WithParam foo) throws Exception {
   1846 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.java
   1847 //            ^^^^^^^^^^ meta.method.identifier.java entity.name.function.java
   1848 //                       ^ support.class.java
   1849 //                                 ^ variable.parameter.java
   1850 //                                      ^^^^^^^^^^^^^^^^ meta.method.throws.java
   1851 //                                      ^^^^^^ keyword.declaration.throws.java
   1852 //                                             ^^^^^^^^^ support.class.java
   1853 //                                                       ^ meta.method.java meta.method.body.java punctuation.section.block.begin.java
   1854     Object otherFoo = methodInvocation(foo);
   1855 //  ^  support.class.java
   1856 //                  ^ keyword.operator.assignment.java
   1857 //                    ^ meta.function-call.java variable.function.java
   1858 //                                         ^ punctuation.terminator.java
   1859     OtherObject bob = new OtherObject(foo);
   1860 //                    ^ keyword.other.storage.new.java
   1861 //                        ^ support.class.java
   1862     this.foo = new SubClass[0];
   1863 //             ^ keyword.other.storage.new.java
   1864 //                 ^ support.class.java
   1865 //                         ^^^ meta.brackets
   1866 
   1867     OuterClass.InnerClass foo = new OuterClass.InnerClass();
   1868 //                                  ^^^^^^^^^^ support.class.java
   1869 //                                            ^ punctuation.accessor.dot.java
   1870 //                                             ^^^^^^^^^^ support.class.java
   1871 
   1872    String[][] doubleStringArray;
   1873 // ^^^^^^ support.class.java
   1874 //       ^^^^ storage.modifier.array.java
   1875 
   1876     String[] stringArray = new String[] {"foo", "bar"};
   1877 //  ^^^^^^ support.class.java
   1878 //        ^^ storage.modifier.array.java
   1879 //                       ^ keyword.operator.assignment.java
   1880 //                         ^^^ keyword.other.storage.new.java
   1881 //                             ^^^^^^ support.class.java
   1882 //                                   ^ punctuation.section.brackets.begin.java
   1883 //                                    ^ punctuation.section.brackets.end.java
   1884 //                                      ^^^^^^^^^^^^^^ meta.braces.array-initialization.java
   1885 //                                      ^ punctuation.section.braces.begin.java
   1886 //                                       ^^^^^ string.quoted.double.java
   1887 //                                            ^ punctuation.separator.comma.java
   1888 //                                              ^^^^^ string.quoted.double.java
   1889 //                                                   ^ punctuation.section.braces.end.java
   1890 //                                                    ^ punctuation.terminator.java
   1891 
   1892     int[] data = new int[]{0, 0, 0};
   1893 //  ^^^ storage.type.primitive.java
   1894 //     ^^ storage.modifier.array.java
   1895 //               ^^^ keyword.other.storage.new.java
   1896 //                   ^^^ storage.type.primitive.java
   1897 //                      ^ punctuation.section.brackets.begin.java
   1898 //                       ^ punctuation.section.brackets.end.java
   1899 //                        ^ punctuation.section.braces.begin.java
   1900 //                         ^ constant.numeric.integer.decimal
   1901 //                          ^ punctuation.separator.comma.java
   1902 //                            ^ constant.numeric.integer.decimal
   1903 //                             ^ punctuation.separator.comma.java
   1904 //                               ^ constant.numeric.integer.decimal
   1905 //                                ^ punctuation.section.braces.end.java
   1906 
   1907     byte [] foo;
   1908 //  ^^^^ storage.type.primitive.java
   1909 //       ^^ storage.modifier.array.java
   1910     byte []b=new byte[size];
   1911 //  ^^^^ storage.type.primitive.java
   1912 //       ^^ storage.modifier.array.java
   1913 //          ^ keyword.operator.assignment.java
   1914 //           ^^^ keyword.other.storage.new.java
   1915 //               ^^^^ storage.type.primitive.java
   1916 
   1917     int[][][] threeDimArr = new int[][][] {
   1918 //  ^^^ storage.type.primitive.java
   1919 //     ^^^^^^ storage.modifier.array.java
   1920 //                              ^^^ storage.type.primitive.java
   1921 //                                 ^ punctuation.section.brackets.begin.java
   1922 //                                  ^ punctuation.section.brackets.end.java
   1923 //                                   ^ punctuation.section.brackets.begin.java
   1924 //                                    ^ punctuation.section.brackets.end.java
   1925 //                                     ^ punctuation.section.brackets.begin.java
   1926 //                                      ^ punctuation.section.brackets.end.java
   1927 //                                        ^ punctuation.section.braces.begin.java
   1928       { { 1, 2 }, { 3, 4 } },
   1929 //        ^ constant.numeric.integer.decimal
   1930 //         ^ punctuation.separator.comma.java
   1931 //           ^ constant.numeric.integer.decimal
   1932 //    ^ punctuation.section.braces.begin.java
   1933 //                         ^ punctuation.section.braces.end.java
   1934 //                          ^ punctuation.separator.comma.java
   1935       { { 5, 6 }, { 7, 8 } }
   1936 //        ^ constant.numeric.integer.decimal
   1937 //         ^ punctuation.separator.comma.java
   1938 //           ^ constant.numeric.integer.decimal
   1939 //    ^ punctuation.section.braces.begin.java
   1940 //                         ^ punctuation.section.braces.end.java
   1941     };
   1942 //  ^ punctuation.section.braces.end.java
   1943 
   1944     threeDimArr = new int[1][3][4];
   1945 //                    ^^^ storage.type.primitive.java
   1946 //                       ^^^^^^^^^ meta.brackets.array-initialization.java
   1947 //                       ^ punctuation.section.brackets.begin.java
   1948 //                        ^ constant.numeric.integer.decimal
   1949 //                         ^ punctuation.section.brackets.end.java
   1950 //                          ^ punctuation.section.brackets.begin.java
   1951 //                           ^ constant.numeric.integer.decimal
   1952 //                            ^ punctuation.section.brackets.end.java
   1953 //                             ^ punctuation.section.brackets.begin.java
   1954 //                              ^ constant.numeric.integer.decimal
   1955 //                               ^ punctuation.section.brackets.end.java
   1956 
   1957     bob = new some.path.to.MyObject[3];
   1958 //            ^^^^^^^^^^^^^^^^^^^^^ meta.path.java
   1959 //                         ^^^^^^^^ support.class.java
   1960 //                                 ^^^ meta.brackets.array-initialization.java
   1961 //                                 ^ punctuation.section.brackets.begin.java
   1962 //                                  ^ constant.numeric.integer.decimal
   1963 //                                   ^ punctuation.section.brackets.end.java
   1964 
   1965     foo.forEach((k, v) -> {
   1966 //                     ^ storage.type.function.anonymous.java
   1967 //                        ^ punctuation.section.block.begin
   1968 
   1969       return;
   1970 //    ^^^^^^ keyword.control.flow.return.java
   1971 //          ^ punctuation.terminator
   1972     });
   1973 //  ^ punctuation.section.block.end.java
   1974 //    ^ punctuation.terminator
   1975     this.foo = new SubClass(new SubClass[0], true);
   1976 //             ^ keyword.other.storage.new.java
   1977 //                 ^ support.class.java
   1978 //                                      ^^^ meta.brackets
   1979 //                                           ^ constant.language.java
   1980 /* We can't support this yet.*/
   1981     some.other.path.
   1982 /*  ^^^^^^^^^^^^^^^^ support.class.java */
   1983         foo.MyClass.staticMethod(true);
   1984 /*      ^^^^^^^^^^^ support.class.java */
   1985 
   1986     some.other.path
   1987 /*  ^^^^^^^^^^^^^^^ support.class.java */
   1988         .foo.MyClass.staticMethod(true);
   1989 /*      ^^^^^^^^^^^^ support.class.java */
   1990 
   1991     @MyAnnotation
   1992 //  ^ punctuation.definition.annotation.java
   1993 //  ^^^^^^^^^^^^^ meta.annotation.java
   1994     int foo;
   1995   }
   1996 //^ meta.method.java meta.method.body.java punctuation.section.block.end.java
   1997 
   1998   void arrayMethod(byte [] [] a, int b, byte[] c) {}
   1999 //^^^^ storage.type.void.java
   2000 //     ^^^^^^^^^^^ entity.name.function.java
   2001 //                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.parameters.java
   2002 //                                               ^ - meta.method.parameters.java
   2003 //                 ^^^^ storage.type.primitive.java
   2004 //                      ^^ storage.modifier.array.java
   2005 //                         ^^ storage.modifier.array.java
   2006 //                            ^ variable.parameter.java
   2007 //                               ^^^ storage.type.primitive.java
   2008 //                                   ^ variable.parameter.java
   2009 //                                      ^^^^ storage.type.primitive.java
   2010 //                                          ^^ storage.modifier.array.java
   2011 //                                             ^ variable.parameter.java
   2012 
   2013   int[] arrayMethod2(int a[], String b[]) {}
   2014 //^^^ storage.type.primitive.java
   2015 //   ^^ storage.modifier.array.java
   2016 //                   ^^^ storage.type.primitive.java
   2017 //                       ^ variable.parameter.java
   2018 //                        ^^ storage.modifier.array.java
   2019 //                            ^^^^^^ support.class.java
   2020 //                                   ^ variable.parameter.java
   2021 //                                    ^^ storage.modifier.array.java
   2022 
   2023   void arrayOfGenericMethod(Map<Long, Date>[] mapping) {}
   2024 //                                         ^^ storage.modifier.array.java
   2025 //                                            ^^^^^^^ variable.parameter.java
   2026 
   2027   void primitiveVarArgs(int... values) {}
   2028 //                      ^^^ storage.type.primitive.java
   2029 //                         ^^^ keyword.operator.variadic.java
   2030 //                             ^^^ variable.parameter.java
   2031 
   2032   public class Foo<T extends int> {}
   2033   //              ^^^^^^^^^^^^^^^ meta.generic.declaration.java
   2034   //               ^ variable.parameter.type.java
   2035   //                 ^^^^^^^ keyword.declaration.extends.java
   2036   //                         ^^^ - storage.type.primitive.java
   2037 
   2038   @RunWith(JUnit4.class)
   2039 //^ punctuation.definition.annotation.java
   2040 //        ^^^^^^^^^^^^^^ meta.annotation.parameters.java
   2041 //         ^ support.class.java
   2042 //                ^ variable.language.java
   2043   public void someReallyReallyLongMethodNameThatMakesTheBraceOverflowToTheNextLine(
   2044 //            ^ meta.method.java meta.method.identifier.java entity.name.function.java
   2045 //                                                                                ^ punctuation.section.parens.begin
   2046       WITHSOMEPARAMS foo,
   2047 //    ^ meta.method.java meta.method.parameters.java support.class.java
   2048 //                   ^ meta.method.java meta.method.parameters.java variable.parameter.java
   2049       Generic<Param> bar)
   2050 //    ^ meta.method.java meta.method.parameters.java support.class.java
   2051 //           ^^^^^^^ meta.generic.java
   2052 //                   ^ meta.method.java meta.method.parameters.java variable.parameter.java
   2053 //                      ^ punctuation.section.parens.end
   2054       throws Exception {
   2055 //    ^ meta.method.java meta.method.throws.java keyword.declaration.throws.java
   2056 //           ^ meta.method.java meta.method.throws.java support.class.java
   2057     return someMethod(new Function<V, V>() {
   2058 //                                         ^ meta.class.body.anonymous.java punctuation.section.braces.begin.java
   2059       @Override
   2060       public V apply(V input) {
   2061 //           ^ support.class.java
   2062 //                  ^^^^^^^^^ meta.method.parameters.java
   2063 //                   ^ support.class.java
   2064 //                     ^ variable.parameter.java
   2065 //                            ^ meta.method.body
   2066         return input;
   2067       }
   2068 //    ^ meta.method.body
   2069     }, executor);
   2070 //  ^ meta.class.body.anonymous.java punctuation.section.braces.end.java
   2071 //             ^ meta.function-call.java punctuation.section.parens.end.java
   2072   }
   2073 //^ meta.method.body.java punctuation.section.block.end.java
   2074 
   2075   public static <T> T writeAll(Collection<? extends T>, Sink<T>) {}
   2076 //                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.java
   2077 //              ^^^ meta.generic.declaration.java
   2078 //               ^ variable.parameter.type.java
   2079 //                 ^ - meta.generic.java
   2080 //                  ^ support.class.java
   2081 //                             ^ support.class.java
   2082 //                                       ^^^^^^^^^^^^^ meta.generic.java
   2083 //                                       ^ punctuation.definition.generic.begin.java
   2084 //                                        ^ keyword.operator.wildcard.java
   2085 //                                          ^ keyword.declaration.extends.java
   2086 //                                                  ^ support.class.java
   2087 //                                                   ^ punctuation.definition.generic.end.java
   2088 //                                                    ^ punctuation.separator.comma.java - meta.generic.java
   2089 //                                                          ^^^ meta.generic.java
   2090 
   2091   public static <T extends Comparable<? super T>>
   2092 //              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.generic.declaration.java
   2093 //               ^ variable.parameter.type.java
   2094 //                         ^^^^^^^^^^ support.class.java
   2095 //                                   ^ punctuation.definition.generic.begin.java
   2096 //                                    ^ keyword.operator.wildcard.java
   2097 //                                      ^ keyword.declaration.super.java
   2098 //                                            ^ support.class.java
   2099 //                                             ^ punctuation.definition.generic.end.java
   2100 //                                              ^ punctuation.definition.generic.end.java
   2101 //                                   ^^^^^^^^^^^  meta.generic.java
   2102         T max(Collection<T> coll);
   2103 //      ^ support.class.java
   2104 
   2105     <T> public static Set<T> unmodifiableSet(Set<T> set);
   2106 //  ^^^ meta.generic.declaration.java
   2107 //   ^ variable.parameter.type.java
   2108 
   2109   public void
   2110 //       ^ storage.type.void.java
   2111       methodNameOnDifferentLine();
   2112 //    ^ meta.method.identifier.java entity.name.function.java
   2113 
   2114   void myAbstractMethod(With<GenericParam> foo);
   2115 //     ^ meta.method.java meta.method.identifier.java entity.name.function.java
   2116 
   2117   private Long myOtherAbstractMethod(@WithAnnotation Blah blah);
   2118 //             ^ meta.method.java meta.method.identifier.java entity.name.function.java
   2119 //                                   ^ meta.method.java meta.method.parameters.java punctuation.definition.annotation.java
   2120 
   2121   public MyGeneric<Param, With, Multiple, Types> otherAbstractMethod(Foo<With, Another> bar);
   2122 //                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.generic.java
   2123 //                                              ^ - meta.generic.java
   2124 //       ^ support.class.java
   2125 //                 ^ support.class.java
   2126 //                        ^ support.class.java
   2127 //                              ^ support.class.java
   2128 //                                        ^ support.class.java
   2129 //                                               ^ meta.method.java meta.method.identifier.java entity.name.function.java
   2130 
   2131   public static <T extends AutoCloseable> void myGenericMethod(SomeType<T> root)
   2132 //              ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.generic.declaration.java
   2133 //              ^ punctuation.definition.generic.begin.java
   2134 //               ^  variable.parameter.type.java
   2135 //                 ^ keyword.declaration.extends.java
   2136 //                         ^ support.class.java
   2137 //                                        ^ storage.type.void.java
   2138 //                                             ^entity.name.function.java
   2139 
   2140         throws Exception, IOException, SAXException {
   2141 //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.method.throws
   2142 //                                                  ^ - meta.method.throws
   2143   }
   2144 }}
   2145 // <- meta.class.java meta.class.body.java punctuation.section.block.end.java
   2146  //<- invalid.illegal.stray-brace-end
   2147 
   2148 public
   2149 // <- storage.modifier.java
   2150 class IOException { }
   2151 // <- storage.type.java
   2152 
   2153 public class Generic<T> implements fully.qualified.Other<T> {
   2154 //                                 ^^^^^^^^^^^^^^^^^^^^^ meta.path.java
   2155 //                                 ^^^^^ entity.other.inherited-class.package.java
   2156 //                                      ^ punctuation.accessor.dot.java
   2157 //                                       ^^^^^^^^^ entity.other.inherited-class.package.java
   2158 //                                                ^ punctuation.accessor.dot.java
   2159 //                                                 ^^^^^ entity.other.inherited-class.java
   2160 //                                                      ^^^ meta.generic.java
   2161 //                                                      ^ punctuation.definition.generic.begin.java
   2162 //                                                       ^ support.class.java
   2163 //                                                        ^ punctuation.definition.generic.end.java
   2164 }
   2165 // <- punctuation.section.block.end.java
   2166 
   2167 public class Generic<T> extends iNtf implements iNterface<T> {
   2168 //                              ^^^^ entity.other.inherited-class.java
   2169 //                                              ^^^^^^^^^ entity.other.inherited-class.java
   2170 //                                                       ^^^ meta.generic.java
   2171 //                                                       ^ punctuation.definition.generic.begin.java
   2172 //                                                        ^ support.class.java
   2173 //                                                         ^ punctuation.definition.generic.end.java
   2174 }
   2175 // <- punctuation.section.block.end.java
   2176 
   2177 public class Bar {
   2178   public void missingSemiColon() {
   2179     boolean foo = foo
   2180 //               ^^^^ meta.assignment.rhs.java
   2181   }
   2182 //^ punctuation.section.block.end.java
   2183 
   2184   private SomeClass methodWithBadParens(
   2185     CombinedServerSpec vendorManagementServerSpec;
   2186 //                                               ^ invalid.illegal.missing-parameter-end
   2187 
   2188   public void strayParans() {
   2189 //                          ^ punctuation.section.block.begin.java
   2190     foo.bar(hello(world);
   2191 //                      ^ invalid.illegal.stray-terminator-end
   2192   }
   2193 //^ punctuation.section.block.end.java
   2194 
   2195   public void strayParansInBlock() {
   2196 //                                 ^ punctuation.section.block.begin.java
   2197     if (hello(world) {
   2198 //                  ^ invalid.illegal
   2199 //                   ^ - meta.parens.java
   2200 //                   ^ meta.block.java
   2201       return false;
   2202     }
   2203   }
   2204 
   2205   public void strayParansInForLoop() {
   2206 //                                   ^ punctuation.section.block.begin.java
   2207     for (;; {
   2208 //         ^ invalid.illegal
   2209 //          ^ meta.block.java - meta.parens.java
   2210     }
   2211   }
   2212 //^ punctuation.section.block.end.java
   2213 
   2214   public void strayParansInConstructor() {
   2215 //                                       ^ punctuation.section.block.begin.java
   2216     return new Foo(;
   2217 //                 ^ invalid.illegal
   2218   }
   2219 //^ punctuation.section.block.end.java
   2220 
   2221   private boolean missingSemiColonForStaticAssignment = true
   2222 //                                                      ^^^^ meta.assignment.rhs.java
   2223 
   2224   public void strayParansInConstructor() {
   2225 //^^^^^^ meta.class.body.java storage.modifier.java - meta.assignment.rhs.java
   2226 //            ^ meta.method.identifier.java entity.name.function.java
   2227 //                                       ^ punctuation.section.block.begin.java
   2228     return;
   2229   }
   2230 
   2231   private boolean missingSemiColonForStaticAssignmentPackageProtected = true
   2232 //                                                                      ^^^^ meta.assignment.rhs.java
   2233 
   2234   void strayParansInConstructor() {
   2235 //^^^^ storage.type.void.java - meta.assignment.rhs.java
   2236 //     ^ meta.method.identifier.java entity.name.function.java
   2237 //                                ^ punctuation.section.block.begin.java
   2238     return;
   2239   }
   2240 //^ punctuation.section.block.end.java
   2241 }
   2242 // <- punctuation.section.block.end.java
   2243 
   2244 class Javadoc {
   2245 
   2246   /** This is javadoc, not a simple comment */
   2247 //^^^ punctuation.definition.comment.begin.javadoc
   2248 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.block.documentation.javadoc
   2249 //                                          ^^ punctuation.definition.comment.end.javadoc
   2250 
   2251   /**
   2252 //^^^ comment.block.documentation.javadoc punctuation.definition.comment.begin.javadoc
   2253    * Description of some sort.
   2254 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.block.documentation.javadoc
   2255    */
   2256 // ^^ comment.block.documentation.javadoc punctuation.definition.comment.end.javadoc
   2257 
   2258   /**
   2259    * <p>Description that starts with tag
   2260 //   ^^^ text.html.javadoc meta.tag
   2261    */
   2262 
   2263   /** <b>One-liner with tags</b> */
   2264 //    ^^^ text.html.javadoc meta.tag
   2265 //                          ^^^ text.html.javadoc meta.tag
   2266 
   2267   /** @param onFirstLine     @param
   2268 //    ^^^^^^ keyword.other.documentation.param.javadoc
   2269 //                           ^^^^^^ -keyword.other.documentation.param.javadoc
   2270    *  @param normal          @param
   2271 //                           ^^^^^^ -keyword.other.documentation.param.javadoc
   2272 //    ^^^^^^ keyword.other.documentation.param.javadoc
   2273    *
   2274       @param withoutAsterisk @param
   2275 //                           ^^^^^^ -keyword.other.documentation.param.javadoc
   2276 //    ^^^^^^ keyword.other.documentation.param.javadoc
   2277    */
   2278 
   2279   /**
   2280    * Parameters
   2281    *
   2282    * @param paramName Some description
   2283 //   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block-tag.javadoc
   2284 //          ^^^^^^^^^ variable.parameter.javadoc
   2285    *                  that spans <i>several</i> lines.
   2286 //                    ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block-tag.javadoc
   2287 //                               ^^^ meta.tag
   2288 //                                         ^^^^ meta.tag
   2289 // ^ punctuation.definition.comment.javadoc
   2290    *
   2291    * @param
   2292    * paramName1
   2293 //   ^^^^^^^^^^ variable.parameter.javadoc
   2294    * Parameter description
   2295 //   ^^^^^^^^^^^^^^^^^^^^^ meta.block-tag.javadoc
   2296    *
   2297    * @param
   2298    * paramName2
   2299 //   ^^^^^^^^^^ variable.parameter.javadoc
   2300    *
   2301    * @param
   2302    * @param
   2303    * paramName3
   2304 //   ^^^^^^^^^^ variable.parameter.javadoc
   2305    */
   2306 // ^^ punctuation.definition.comment.end.javadoc
   2307 
   2308   /** Not a @param tag */
   2309 // ^^^^^^^^^^^^^^^^^^^^^^ comment.block.documentation.javadoc
   2310 //          ^^^^^^ -keyword.other.documentation.param.javadoc
   2311 
   2312   /**
   2313    * Code blocks
   2314    *
   2315    * {@code} {@literal}
   2316 //    ^^^^^ keyword.other.documentation.code-or-literal.javadoc
   2317 //    ^ punctuation.definition.keyword.javadoc
   2318 //            ^^^^^^^^ keyword.other.documentation.code-or-literal.javadoc
   2319 //            ^ punctuation.definition.keyword.javadoc
   2320 
   2321    * {@code List<T> lst = new ArrayList<>()}
   2322 //   ^ punctuation.section.inline-tag.begin.javadoc
   2323 //    ^^^^^ keyword.other.documentation.code-or-literal.javadoc
   2324 //         ^ -markup.raw.javadoc
   2325 //          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.javadoc -meta.tag
   2326 //                                         ^ punctuation.section.inline-tag.end.javadoc
   2327 
   2328    * Multiline, line break in content: {@code x + y
   2329 //                                            ^^^^^ markup.raw.javadoc
   2330 //                                                 ^ -markup.raw.javadoc
   2331    * = z}
   2332 //^^^ -markup.raw.javadoc
   2333 //   ^^^ markup.raw.javadoc
   2334 
   2335    * Multiline, line break before content: {@literal
   2336 //                                                  ^ -markup.raw.javadoc
   2337    * x + y = z}
   2338 //^^^ -markup.raw.javadoc
   2339 //   ^^^^^^^^^ markup.raw.javadoc
   2340 
   2341    * Bracket balancing: {@code int[][] a = {{1, 2, 3}, {4, 5}}}
   2342 //                      ^ punctuation.section.inline-tag.begin.javadoc
   2343 //                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.javadoc
   2344 //                                                            ^ punctuation.section.inline-tag.end.javadoc
   2345 
   2346    * Bracket balancing with line break: {@code int[][] a = {
   2347 //                                      ^ punctuation.section.inline-tag.begin.javadoc
   2348 //                                             ^^^^^^^^^^^^^ markup.raw.javadoc
   2349 //                                                          ^ -markup.raw.javadoc
   2350    * {1, 2, 3}, {4, 5}}}
   2351 //^^^ -markup.raw.javadoc
   2352 //   ^^^^^^^^^^^^^^^^^^ markup.raw.javadoc
   2353 //                     ^ punctuation.section.inline-tag.end.javadoc
   2354    */
   2355 
   2356   /**
   2357    * Inline tags with references
   2358 
   2359    * {@link} {@linkplain}
   2360 //    ^^^^^ keyword.other.documentation.link.javadoc
   2361 //            ^^^^^^^^^^ keyword.other.documentation.link.javadoc
   2362 
   2363    * {@link Class} {@linkplain org.package.Class} {@link org.package.Class.NestedClass}
   2364 //    ^^^^^ keyword.other.documentation.link.javadoc
   2365 //          ^^^^^ markup.underline.link.javadoc
   2366 //                   ^^^^^^^^^ keyword.other.documentation.link.javadoc
   2367 //                             ^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2368 //                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2369 
   2370    * Method separator:
   2371    * {@link package.Class#method} {@linkplain #method}
   2372 //          ^^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2373 //                                            ^^^^^^^ markup.underline.link.javadoc
   2374 
   2375    * Brackets:
   2376    * {@link Class#method(Type, Type)} {@link #method(Type, Type) label}
   2377 //          ^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2378 //                                           ^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2379 //                                                               ^^^^^ meta.label.javadoc -markup.underline.link.javadoc
   2380 
   2381    * Line breaks:
   2382    * {@link Class#method(Type,
   2383    * Type, Type) label}
   2384 //   ^^^^^^^^^^^ markup.underline.link.javadoc
   2385 //               ^^^^^ meta.label.javadoc
   2386 //^^^ -markup.underline.link.javadoc
   2387    * {@link
   2388    * Class#method(Type, Type, Type) label}
   2389 //   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2390 //                                  ^^^^^ meta.label.javadoc
   2391    * {@link Class#method(Type, Type, Type)
   2392    * label}
   2393 //   ^^^^^ meta.label.javadoc
   2394    *
   2395    * Tags in label:
   2396    * {@link Class#method(Type, Type, Type) <i>label</i>}
   2397 //                                         ^^^^^^^^^^^^ meta.label.javadoc
   2398 //                                         ^^^ meta.tag
   2399 //                                                 ^^^^ meta.tag
   2400    *
   2401    * {@value} {@value #SOME_CONSTANT} {@value package.Class#SOME_CONSTANT}
   2402 //    ^^^^^^ keyword.other.documentation.value.javadoc
   2403 //                    ^^^^^^^^^^^ markup.underline.link.javadoc
   2404 //                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2405    */
   2406 
   2407   /**
   2408    * Block tags with reference
   2409    *
   2410    * @see Class#method(Type, Type)
   2411 //   ^^^^ keyword.other.documentation.see.javadoc
   2412 //        ^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.javadoc
   2413    *
   2414    * @see <a>java.util.stream</a>
   2415 //   ^^^^ keyword.other.documentation.see.javadoc
   2416 //        ^^^^^^^^^^^^^^^^^^^^^^^ -markup.underline.link.javadoc
   2417 //        ^^^ meta.tag
   2418 //                           ^^^ meta.tag
   2419    *
   2420    * @see 'java.util.stream'
   2421 //   ^^^^ keyword.other.documentation.see.javadoc
   2422 //        ^^^^^^^^^^^^^^^^^^ -markup.underline.link.javadoc
   2423    *
   2424    * @throws IOException
   2425 //   ^^^^^^^ keyword.other.documentation.throws.javadoc
   2426 //           ^^^^^^^^^^^ markup.underline.link.javadoc
   2427 
   2428    * @throws IOException because IOException
   2429 //   ^^^^^^^ keyword.other.documentation.throws.javadoc
   2430 //           ^^^^^^^^^^^ markup.underline.link.javadoc
   2431 //                       ^^^^^^^^^^^^^^^^^^^ - markup.underline.link.javadoc
   2432    */
   2433 
   2434   /**
   2435    * Leading asterisk with space
   2436 // ^ punctuation.definition.comment.javadoc
   2437    *Without space
   2438 // ^ punctuation.definition.comment.javadoc
   2439    *<p>Before tag
   2440 // ^ punctuation.definition.comment.javadoc
   2441    *{@value} Before inline tag
   2442 // ^ punctuation.definition.comment.javadoc
   2443    *@return Before block tag
   2444 // ^ punctuation.definition.comment.javadoc
   2445    */
   2446 
   2447   /**
   2448    * Unclosed html tag: <li
   2449    */
   2450 // ^^ comment.block.documentation.javadoc punctuation.definition.comment.end.javadoc
   2451 
   2452   /**
   2453    * Unclosed javadoc tag: {@link
   2454    */
   2455 // ^^ comment.block.documentation.javadoc punctuation.definition.comment.end.javadoc
   2456 }
   2457 
   2458 module java.base {
   2459 //^^^^^^^^^^^^^^^^ meta.module.java
   2460 //^^^^^^^^^^^^^^ meta.module.identifier.java
   2461 //              ^ -meta.module.identifier.java
   2462 //^^^^ storage.type.java
   2463 //     ^^^^^^^^^ entity.name.module.java
   2464 //               ^ meta.module.body.java punctuation.section.braces.begin.java
   2465 
   2466   exports java.io;
   2467 //^^^^^^^^^^^^^^^^ meta.module.java meta.module.body.java
   2468 //^^^^^^^^^^^^^^^ meta.exports.java
   2469 //^^^^^^ keyword.other.module.exports.java
   2470 //        ^^^^^^^ support.type.package.java
   2471 //            ^ punctuation.accessor.dot.java
   2472 //               ^ punctuation.terminator.java
   2473 
   2474   exports jdk.internal.jmod to jdk.compiler, jdk.jlink;
   2475 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.exports.java
   2476 //                          ^^ keyword.other.module.to.java
   2477 //                             ^^^^^^^^^^^^ support.type.module.java
   2478 //                                         ^ punctuation.separator.comma.java
   2479 //                                           ^^^^^^^^^ support.type.module.java
   2480 //                                                    ^ punctuation.terminator.java
   2481 
   2482   opens java.io;
   2483 //^^^^^^^^^^^^^ meta.opens.java
   2484 //^^^^^ keyword.other.module.opens.java
   2485 //      ^^^^^^^ support.type.package.java
   2486 //          ^ punctuation.accessor.dot.java
   2487 //             ^ punctuation.terminator.java
   2488 
   2489   opens jdk.internal.jmod to jdk.compiler, jdk.jlink;
   2490 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.opens.java
   2491 //                        ^^ keyword.other.module.to.java
   2492 //                           ^^^^^^^^^^^^ support.type.module.java
   2493 //                                       ^ punctuation.separator.comma.java
   2494 //                                         ^^^^^^^^^ support.type.module.java
   2495 //                                                  ^ punctuation.terminator.java
   2496 
   2497   opens // incomplete to check if it affects the next statement
   2498 
   2499   uses java.security.Provider;
   2500 //^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.uses.java
   2501 //^^^^ keyword.other.module.uses.java
   2502 //     ^^^^^^^^^^^^^^^^^^^^^^ meta.path.java
   2503 //     ^^^^ support.type.package.java
   2504 //         ^ punctuation.accessor.dot.java
   2505 //          ^^^^^^^^ support.type.package.java
   2506 //                  ^ punctuation.accessor.dot.java
   2507 //                   ^^^^^^^^ support.class.java
   2508 //                           ^ punctuation.terminator.java
   2509 
   2510   provides java.nio.file.spi.FileSystemProvider with jdk.internal.jrtfs.JrtFileSystemProvider;
   2511 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.provides.java
   2512 //^^^^^^^^ keyword.other.module.provides.java
   2513 //         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.path.java
   2514 //                                              ^^^^ keyword.other.module.with.java
   2515 //                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.path.java
   2516 //                                                                                           ^ punctuation.terminator.java
   2517 
   2518   provides incomplete.but.should.not.break.next.Statement;
   2519 //                                                       ^ punctuation.terminator.java
   2520 
   2521   provides sun.jvmstat.monitor.MonitoredHostService with
   2522     sun.jvmstat.perfdata.monitor.protocol.file.MonitoredHostFileService,
   2523 //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.provides.java meta.path.java
   2524 //                                                                     ^ punctuation.separator.comma.java
   2525     sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostLocalService;
   2526 //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.provides.java meta.path.java
   2527 
   2528   requires java.xml;
   2529 //^^^^^^^^^^^^^^^^^ meta.requires.java
   2530 //^^^^^^^^ keyword.other.module.requires.java
   2531 //         ^^^^^^^^ support.type.module.java
   2532 //                 ^ punctuation.terminator.java
   2533 
   2534   requires transitive javafx.base;
   2535 //^^^^^^^^ keyword.other.module.requires.java
   2536 //         ^^^^^^^^^^ keyword.other.module.transitive.java
   2537 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.requires.java
   2538 //                    ^^^^^^^^^^^ support.type.module.java
   2539 //                               ^ punctuation.terminator.java
   2540 
   2541 }
   2542 //<- meta.module.body.java punctuation.section.braces.end.java
   2543 
   2544 open module open.module {}
   2545 //^^^^^^^^^^^^^^^^^^^^^^^^ meta.module.java
   2546 //^^^ -meta.module.identifier.java
   2547 //^^ storage.modifier.java
   2548 //   ^^^^^^ storage.type.java
   2549 //   ^^^^^^^^^^^^^^^^^^ meta.module.identifier.java
   2550 //                      ^^ meta.module.body.java