Fix disambiguation of constructor declaration annotations
MOE_MIGRATED_REVID=138929417
diff --git a/java/com/google/turbine/binder/DisambiguateTypeAnnotations.java b/java/com/google/turbine/binder/DisambiguateTypeAnnotations.java
index 0f6c9b4..43e9f23 100644
--- a/java/com/google/turbine/binder/DisambiguateTypeAnnotations.java
+++ b/java/com/google/turbine/binder/DisambiguateTypeAnnotations.java
@@ -100,7 +100,11 @@
ImmutableList.Builder<AnnoInfo> declarationAnnotations = ImmutableList.builder();
Type returnType =
disambiguate(
- env, ElementType.METHOD, base.returnType(), base.annotations(), declarationAnnotations);
+ env,
+ base.name().equals("<init>") ? ElementType.CONSTRUCTOR : ElementType.METHOD,
+ base.returnType(),
+ base.annotations(),
+ declarationAnnotations);
return new MethodInfo(
base.sym(),
base.tyParams(),
diff --git a/javatests/com/google/turbine/lower/LowerIntegrationTest.java b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
index a7f1e26..7799c07 100644
--- a/javatests/com/google/turbine/lower/LowerIntegrationTest.java
+++ b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
@@ -264,6 +264,7 @@
"const_nonfinal.test",
"enum_abstract.test",
"deficient_types_classfile.test",
+ "ctor_anno.test",
};
List<Object[]> tests =
ImmutableList.copyOf(testCases).stream().map(x -> new Object[] {x}).collect(toList());
diff --git a/javatests/com/google/turbine/lower/testdata/ctor_anno.test b/javatests/com/google/turbine/lower/testdata/ctor_anno.test
new file mode 100644
index 0000000..6999eb7
--- /dev/null
+++ b/javatests/com/google/turbine/lower/testdata/ctor_anno.test
@@ -0,0 +1,11 @@
+=== Anno.java ===
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+
+@Target(ElementType.CONSTRUCTOR)
+@interface Anno {}
+
+=== Test.java ===
+public class Test {
+ @Anno Test(int x) {}
+}