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