summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/testdir/input/java_annotations_signature.java
blob: 8236218550a344f5de1fbd812698eaa01bb7b67e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
// VIM_TEST_SETUP let g:java_highlight_signature = 1

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

class Annotations$Tests
{
	@Target(ElementType.TYPE_USE)
	@interface Tag
	{
		String value() default "";
		String kind() default "";
	}

	@Target(ElementType.TYPE_USE)
	@interface Text
	{
		String[] value() default {""};
	}

	@Target({
		ElementType.METHOD,
		ElementType.PARAMETER,
		ElementType.TYPE,
	})
	@interface Labels
	{
		Label[] value();
	}

	@java.lang.annotation.Target({
		java.lang.annotation.ElementType.METHOD,
		java.lang.annotation.ElementType.PARAMETER,
		java.lang.annotation.ElementType.TYPE,
	})
	@java.lang.annotation.Repeatable(Labels.class)
	@interface Label
	{
		String value() default "";
		Class<?> type() default Label.class;
		boolean redundant() default true;
		Text text() default @Text;
		Tag head() default @Tag();
		Tag tail() default @Tag(value = "", kind = "");
	}

	/* Use identity cast expressions to nest TYPE_USE annotations. */
								@Label(
							(@Text({
		(@Text({ "a", "aa", "aaa", "aaaa", }) String) "as",
		(@Text({ "b", "bb", "bbb", "bbbb", }) String) "bs",
		(@Text({ "c", "cc", "ccc", "cccc", }) String) "cs",
		(@Text({ "d", "dd", "ddd", "dddd", }) String) "ds",
							}) String) "abcd")
	interface Primer { }

	@Label @Label() @Label("""
	n\
	o\
	O\
	p""")
	@Label(head = @Tag(value = "@Label"/*, kind = "name"*/))
	@Label(// value = "Method",
		type = Annotations$Tests.class,
		redundant = !!!(1 != 1),
		head = @Tag(value = "@Label"),
		text = @Text({ "})", "({" }))
	static void noOp(@Label @Label() @Label("dummy")
		@Label(head = @Tag(/*value = "@Label",*/ kind = "name"))
		@Label(// value = "Parameter",
			type = Annotations$Tests.class,
			head = @Tag(value = "@Label"),
			text = @Text({ "){", "}(" }))
		Object dummy)
	{
	}
}