1 /*
2 GenericWhitespace
3
4
5 */
6
7 package com.puppycrawl.tools.checkstyle.checks.whitespace.genericwhitespace;
8
9 import java.lang.annotation.Target;
10
11 import static java.lang.annotation.ElementType.TYPE_USE;
12
13 public class InputGenericWhitespaceAfterNew {
14 public class Inner<T> { }
15
16 Object obj1 = new <String>Object();
17 Object obj2 = new <String> Object(); // violation, ''>' is followed by whitespace.'
18
19 void method() {
20 new <@A Inner>Inner();
21 new< @A Inner > Inner ();
22 // 4 violations above:
23 // ''<' is followed by whitespace.'
24 // ''<' is not preceded with whitespace.'
25 // ''>' is followed by whitespace.'
26 // ''>' is preceded with whitespace.'
27
28 new <@A Inner> @A Inner<@A Inner>(); // violation, ''>' is followed by whitespace.'
29 }
30
31 void popCan() {
32 Can.Pop cannot = new <String>Can.Pop();
33 Can.Pop burstCan = new< String > Can.Pop();
34 // 4 violations above:
35 // ''<' is followed by whitespace.'
36 // ''<' is not preceded with whitespace.'
37 // ''>' is followed by whitespace.'
38 // ''>' is preceded with whitespace.'
39
40 // + + + + + ++ + +
41 Can.must("idk", new<Can<Can< @A Inner<Can<Can<?> [] >>> >> Can.Pop.But.Wont <String> ());
42 // 9 violations above:
43 // ''<' is not preceded with whitespace.'
44 // ''<' is followed by whitespace.'
45 // ''>' is followed by whitespace.'
46 // ''>' is preceded with whitespace.'
47 // ''>' is followed by whitespace.'
48 // ''>' is preceded with whitespace.'
49 // ''>' is followed by whitespace.'
50 // ''<' is preceded with whitespace.'
51 // ''>' is followed by whitespace.'
52 }
53
54 @Target({TYPE_USE}) @interface A {}
55 }
56
57 class Can<T> {
58 static <T> void must(String why, T whatever) {}
59 static class Pop {
60 static class But {
61 static class Wont<T> {
62 }
63 }
64 }
65 }