aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/google/turbine/binder/bytecode/BytecodeBoundClass.java4
-rw-r--r--javatests/com/google/turbine/lower/LowerIntegrationTest.java1
-rw-r--r--javatests/com/google/turbine/lower/testdata/annotation_clinit.test18
3 files changed, 23 insertions, 0 deletions
diff --git a/java/com/google/turbine/binder/bytecode/BytecodeBoundClass.java b/java/com/google/turbine/binder/bytecode/BytecodeBoundClass.java
index d337181..8939780 100644
--- a/java/com/google/turbine/binder/bytecode/BytecodeBoundClass.java
+++ b/java/com/google/turbine/binder/bytecode/BytecodeBoundClass.java
@@ -379,6 +379,10 @@ public class BytecodeBoundClass implements TypeBoundClass {
ImmutableList.Builder<MethodInfo> methods = ImmutableList.builder();
int idx = 0;
for (ClassFile.MethodInfo m : classFile.get().methods()) {
+ if (m.name().equals("<clinit>")) {
+ // Don't bother reading class initializers, which we don't need
+ continue;
+ }
methods.add(bindMethod(idx++, m));
}
return methods.build();
diff --git a/javatests/com/google/turbine/lower/LowerIntegrationTest.java b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
index 85c3450..0bc883d 100644
--- a/javatests/com/google/turbine/lower/LowerIntegrationTest.java
+++ b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
@@ -180,6 +180,7 @@ public class LowerIntegrationTest {
"field_anno.test",
"annotation_bool_default.test",
"annotation_class_default.test",
+ "annotation_clinit.test",
"annotation_declaration.test",
"annotation_enum_default.test",
"annotations_default.test",
diff --git a/javatests/com/google/turbine/lower/testdata/annotation_clinit.test b/javatests/com/google/turbine/lower/testdata/annotation_clinit.test
new file mode 100644
index 0000000..7419ed6
--- /dev/null
+++ b/javatests/com/google/turbine/lower/testdata/annotation_clinit.test
@@ -0,0 +1,18 @@
+%%% pkg/Anno.java %%%
+package pkg;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Anno {
+ String CONSTANT = Anno.class.toString();
+
+ String value() default "";
+}
+
+=== pkg/T.java ===
+package pkg;
+
+@Anno
+class T {}