Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.

Commit 6412941

Browse files
committed
annotations: Add a new sample for TypeMethodReference node type.
1 parent e0a5ac5 commit 6412941

4 files changed

Lines changed: 739 additions & 1 deletion

File tree

TODO.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ but there are some missing:
2323

2424
* BlockComment
2525
* LineComment
26-
* TypeMethodReference
2726
* UnionType
2827
* WildcardType
2928

tests/type_method_reference.native

Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
{
2+
"status": "ok",
3+
"errors": [],
4+
"ast": {
5+
"CompilationUnit": {
6+
"imports": [
7+
{
8+
"internalClass": "ImportDeclaration",
9+
"line": 1,
10+
"name": {
11+
"internalClass": "QualifiedName",
12+
"name": {
13+
"identifier": "annotation",
14+
"internalClass": "SimpleName",
15+
"line": 1,
16+
"startPosition": 17
17+
},
18+
"qualifier": {
19+
"internalClass": "QualifiedName",
20+
"name": {
21+
"identifier": "lang",
22+
"internalClass": "SimpleName",
23+
"line": 1,
24+
"startPosition": 12
25+
},
26+
"qualifier": {
27+
"identifier": "java",
28+
"internalClass": "SimpleName",
29+
"line": 1,
30+
"startPosition": 7
31+
}
32+
}
33+
},
34+
"onDemand": "true",
35+
"startPosition": 0,
36+
"static": "false"
37+
}
38+
],
39+
"internalClass": "CompilationUnit",
40+
"types": [
41+
{
42+
"internalClass": "AnnotationTypeDeclaration",
43+
"modifiers": [
44+
{
45+
"internalClass": "SingleMemberAnnotation",
46+
"typeName": {
47+
"identifier": "Target",
48+
"internalClass": "SimpleName",
49+
"line": 2,
50+
"startPosition": 32
51+
},
52+
"value": {
53+
"internalClass": "QualifiedName",
54+
"name": {
55+
"identifier": "TYPE_USE",
56+
"internalClass": "SimpleName",
57+
"line": 2,
58+
"startPosition": 52
59+
},
60+
"qualifier": {
61+
"identifier": "ElementType",
62+
"internalClass": "SimpleName",
63+
"line": 2,
64+
"startPosition": 40
65+
}
66+
}
67+
}
68+
],
69+
"name": {
70+
"identifier": "X",
71+
"internalClass": "SimpleName",
72+
"line": 3,
73+
"startPosition": 73
74+
}
75+
},
76+
{
77+
"bodyDeclarations": [
78+
{
79+
"constructor": "false",
80+
"internalClass": "MethodDeclaration",
81+
"line": 5,
82+
"name": {
83+
"identifier": "copy",
84+
"internalClass": "SimpleName",
85+
"line": 5,
86+
"startPosition": 99
87+
},
88+
"parameters": [
89+
{
90+
"internalClass": "SingleVariableDeclaration",
91+
"line": 5,
92+
"name": {
93+
"identifier": "xs",
94+
"internalClass": "SimpleName",
95+
"line": 5,
96+
"startPosition": 111
97+
},
98+
"startPosition": 104,
99+
"type": {
100+
"dimensions": [
101+
{
102+
"internalClass": "Dimension"
103+
}
104+
],
105+
"elementType": {
106+
"internalClass": "PrimitiveType",
107+
"line": 5,
108+
"primitiveTypeCode": "int",
109+
"startPosition": 104
110+
},
111+
"internalClass": "ArrayType"
112+
},
113+
"varargs": "false"
114+
}
115+
],
116+
"returnType2": {
117+
"internalClass": "SimpleType",
118+
"name": {
119+
"identifier": "Object",
120+
"internalClass": "SimpleName",
121+
"line": 5,
122+
"startPosition": 92
123+
}
124+
},
125+
"startPosition": 92
126+
}
127+
],
128+
"interface": "true",
129+
"internalClass": "TypeDeclaration",
130+
"line": 5,
131+
"name": {
132+
"identifier": "I",
133+
"internalClass": "SimpleName",
134+
"line": 5,
135+
"startPosition": 88
136+
},
137+
"startPosition": 78
138+
},
139+
{
140+
"bodyDeclarations": [
141+
{
142+
"body": {
143+
"internalClass": "Block",
144+
"statements": [
145+
{
146+
"fragments": [
147+
{
148+
"initializer": {
149+
"internalClass": "TypeMethodReference",
150+
"name": {
151+
"identifier": "clone",
152+
"internalClass": "SimpleName",
153+
"line": 9,
154+
"startPosition": 173
155+
},
156+
"type": {
157+
"dimensions": [
158+
{
159+
"internalClass": "Dimension"
160+
}
161+
],
162+
"elementType": {
163+
"annotations": [
164+
{
165+
"internalClass": "MarkerAnnotation",
166+
"typeName": {
167+
"identifier": "X",
168+
"internalClass": "SimpleName",
169+
"line": 9,
170+
"startPosition": 155
171+
}
172+
}
173+
],
174+
"internalClass": "PrimitiveType",
175+
"line": 9,
176+
"primitiveTypeCode": "int",
177+
"startPosition": 154
178+
},
179+
"internalClass": "ArrayType"
180+
},
181+
"typeArguments": [
182+
{
183+
"internalClass": "SimpleType",
184+
"name": {
185+
"identifier": "String",
186+
"internalClass": "SimpleName",
187+
"line": 9,
188+
"startPosition": 166
189+
}
190+
}
191+
]
192+
},
193+
"internalClass": "VariableDeclarationFragment",
194+
"name": {
195+
"identifier": "i",
196+
"internalClass": "SimpleName",
197+
"line": 9,
198+
"startPosition": 150
199+
}
200+
}
201+
],
202+
"internalClass": "VariableDeclarationStatement",
203+
"type": {
204+
"internalClass": "SimpleType",
205+
"name": {
206+
"identifier": "I",
207+
"internalClass": "SimpleName",
208+
"line": 9,
209+
"startPosition": 148
210+
}
211+
}
212+
}
213+
]
214+
},
215+
"constructor": "false",
216+
"internalClass": "MethodDeclaration",
217+
"line": 8,
218+
"name": {
219+
"identifier": "bar",
220+
"internalClass": "SimpleName",
221+
"line": 8,
222+
"startPosition": 136
223+
},
224+
"returnType2": {
225+
"internalClass": "PrimitiveType",
226+
"line": 8,
227+
"primitiveTypeCode": "void",
228+
"startPosition": 131
229+
},
230+
"startPosition": 131
231+
}
232+
],
233+
"interface": "false",
234+
"internalClass": "TypeDeclaration",
235+
"line": 7,
236+
"name": {
237+
"identifier": "X",
238+
"internalClass": "SimpleName",
239+
"line": 7,
240+
"startPosition": 125
241+
},
242+
"startPosition": 119
243+
}
244+
]
245+
}
246+
}
247+
}

tests/type_method_reference.source

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import java.lang.annotation.*;
2+
@Target (ElementType.TYPE_USE)
3+
@interface X{}
4+
5+
interface I { Object copy(int [] xs); }
6+
7+
class X {
8+
void bar() {
9+
I i = @X int []::<String>clone;
10+
}
11+
}
12+

0 commit comments

Comments
 (0)