Skip to content

Commit 4e5dfd3

Browse files
Handle parenthesized trees (#733)
1 parent 8602980 commit 4e5dfd3

File tree

3 files changed

+64
-39
lines changed

3 files changed

+64
-39
lines changed

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTrees.java

+4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.sun.source.tree.LiteralTree;
2121
import com.sun.source.tree.NewArrayTree;
2222
import com.sun.source.tree.AnnotationTree;
23+
import com.sun.source.tree.ParenthesizedTree;
2324

2425
import java.util.HashMap;
2526
import java.util.ArrayList;
@@ -160,6 +161,9 @@ private Semanticdb.Tree annotationParameter(ExpressionTree expr) {
160161
unaryOpTree(
161162
semanticdbUnaryOperator(unaryExpr.getKind()),
162163
annotationParameter(unaryExpr.getExpression())));
164+
} else if (expr instanceof ParenthesizedTree) {
165+
ParenthesizedTree parenExpr = (ParenthesizedTree) expr;
166+
return annotationParameter(parenExpr.getExpression());
163167
}
164168
throw new IllegalArgumentException(
165169
semanticdbUri
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
package minimized;
22

3-
43
@interface Bar {
5-
double value();
4+
double value();
65
}
76

87
@interface BarB {
9-
boolean value();
8+
boolean value();
9+
}
10+
11+
@interface Nullable {
12+
String value() default "";
1013
}
1114

1215
interface Foo {
13-
@Bar(-1d)
14-
double test();
16+
@Bar(-1d)
17+
double test();
1518

16-
@Bar(~5)
17-
@SuppressWarnings(value = "unchecked")
18-
double test2();
19+
@Bar(~5)
20+
@SuppressWarnings(value = "unchecked")
21+
double test2();
1922

20-
@BarB(!true)
21-
double test3();
22-
}
23+
@BarB(!true)
24+
double test3();
2325

26+
@Nullable(("what"))
27+
Foo test4();
28+
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package minimized;
22

3-
43
@interface Bar {
54
// ^^^ definition semanticdb maven . . minimized/Bar#
65
// display_name Bar
76
// signature_documentation java @interface Bar
87
// kind Interface
98
// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation#
10-
double value();
9+
double value();
1110
}
1211

1312
@interface BarB {
@@ -16,39 +15,56 @@
1615
// signature_documentation java @interface BarB
1716
// kind Interface
1817
// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation#
19-
boolean value();
18+
boolean value();
19+
}
20+
21+
@interface Nullable {
22+
// ^^^^^^^^ definition semanticdb maven . . minimized/Nullable#
23+
// display_name Nullable
24+
// signature_documentation java @interface Nullable
25+
// kind Interface
26+
// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation#
27+
String value() default "";
2028
}
2129

2230
interface Foo {
2331
// ^^^ definition semanticdb maven . . minimized/Foo#
2432
// display_name Foo
2533
// signature_documentation java interface Foo
2634
// kind Interface
27-
@Bar(-1d)
28-
// ^^^ reference semanticdb maven . . minimized/Bar#
29-
double test();
30-
// ^^^^ definition semanticdb maven . . minimized/Foo#test().
31-
// display_name test
32-
// signature_documentation java @Bar(-1.0)\npublic abstract double test()
33-
// kind AbstractMethod
35+
@Bar(-1d)
36+
//^^^ reference semanticdb maven . . minimized/Bar#
37+
double test();
38+
// ^^^^ definition semanticdb maven . . minimized/Foo#test().
39+
// display_name test
40+
// signature_documentation java @Bar(-1.0)\npublic abstract double test()
41+
// kind AbstractMethod
3442

35-
@Bar(~5)
36-
// ^^^ reference semanticdb maven . . minimized/Bar#
37-
@SuppressWarnings(value = "unchecked")
38-
// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#
39-
// ^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#value().
40-
double test2();
41-
// ^^^^^ definition semanticdb maven . . minimized/Foo#test2().
42-
// display_name test2
43-
// signature_documentation java @Bar(~5)\n@SuppressWarnings("unchecked")\npublic abstract double test2()
44-
// kind AbstractMethod
43+
@Bar(~5)
44+
//^^^ reference semanticdb maven . . minimized/Bar#
45+
@SuppressWarnings(value = "unchecked")
46+
//^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#
47+
// ^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#value().
48+
double test2();
49+
// ^^^^^ definition semanticdb maven . . minimized/Foo#test2().
50+
// display_name test2
51+
// signature_documentation java @Bar(~5)\n@SuppressWarnings("unchecked")\npublic abstract double test2()
52+
// kind AbstractMethod
4553

46-
@BarB(!true)
47-
// ^^^^ reference semanticdb maven . . minimized/BarB#
48-
double test3();
49-
// ^^^^^ definition semanticdb maven . . minimized/Foo#test3().
50-
// display_name test3
51-
// signature_documentation java @BarB(!true)\npublic abstract double test3()
52-
// kind AbstractMethod
53-
}
54+
@BarB(!true)
55+
//^^^^ reference semanticdb maven . . minimized/BarB#
56+
double test3();
57+
// ^^^^^ definition semanticdb maven . . minimized/Foo#test3().
58+
// display_name test3
59+
// signature_documentation java @BarB(!true)\npublic abstract double test3()
60+
// kind AbstractMethod
5461

62+
@Nullable(("what"))
63+
//^^^^^^^^ reference semanticdb maven . . minimized/Nullable#
64+
Foo test4();
65+
//^^ reference semanticdb maven . . minimized/Foo#
66+
// ^^^^^ definition semanticdb maven . . minimized/Foo#test4().
67+
// display_name test4
68+
// signature_documentation java @Nullable("what")\npublic abstract Foo test4()
69+
// kind AbstractMethod
70+
}

0 commit comments

Comments
 (0)