Kapt: Always use raw types for annotation parameter types (KT-30346)

This commit is contained in:
Yan Zhulanow
2019-03-13 23:13:58 +03:00
parent 90e84aa15d
commit 66754e62da
10 changed files with 74 additions and 11 deletions
@@ -818,7 +818,15 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati
else -> null
}
},
ifNonError = { genericSignature.returnType }
ifNonError = ifNonError@ {
if (descriptor is PropertyDescriptor) {
val containingClass = descriptor.containingDeclaration
if (containingClass is ClassDescriptor && containingClass.kind == ClassKind.ANNOTATION_CLASS) {
return@ifNonError jcReturnType
}
}
genericSignature.returnType
}
)
return Pair(genericSignature, returnType)
@@ -354,6 +354,11 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi
runTest("plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassWIthoutCorrection.kt");
}
@TestMetadata("outProjection.kt")
public void testOutProjection() throws Exception {
runTest("plugins/kapt3/kapt3-compiler/testData/converter/outProjection.kt");
}
@TestMetadata("primitiveTypes.kt")
public void testPrimitiveTypes() throws Exception {
runTest("plugins/kapt3/kapt3-compiler/testData/converter/primitiveTypes.kt");
@@ -28,9 +28,9 @@ public abstract @interface Anno2 {
public abstract Colors[] colors() default {Colors.BLACK, Colors.WHITE};
public abstract java.lang.Class<?> clazz();
public abstract java.lang.Class clazz();
public abstract java.lang.Class<?>[] classes();
public abstract java.lang.Class[] classes();
}
////////////////////
@@ -4,7 +4,7 @@ import kotlin.reflect.KClass;
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public abstract @interface Anno {
public abstract java.lang.Class<java.lang.Object> a();
public abstract java.lang.Class a();
}
////////////////////
@@ -159,7 +159,7 @@ public abstract interface IFoo {
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public static abstract @interface Anno {
public abstract java.lang.Class<?>[] value();
public abstract java.lang.Class[] value();
}
@kotlin.Metadata()
@@ -164,7 +164,7 @@ public abstract interface IFoo {
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public static abstract @interface Anno {
public abstract java.lang.Class<?>[] value();
public abstract java.lang.Class[] value();
}
@kotlin.Metadata()
@@ -5,13 +5,13 @@ import kotlin.reflect.KClass;
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public abstract @interface Anno {
public abstract java.lang.Class<?> a();
public abstract java.lang.Class a();
public abstract java.lang.Class<?>[] b();
public abstract java.lang.Class[] b();
public abstract java.lang.Class<?>[] c();
public abstract java.lang.Class[] c();
public abstract java.lang.Class<?>[] d();
public abstract java.lang.Class[] d();
}
////////////////////
@@ -0,0 +1,10 @@
import kotlin.reflect.KClass;
annotation class Anno(val baseClass: KClass<out Intf<*, *, *>>)
interface Intf<S, R, A>
abstract class Base<S, R, A> : Intf<S, R, A>
@Anno(baseClass = Base::class)
interface Impl
@@ -0,0 +1,40 @@
import java.lang.System;
@kotlin.Metadata()
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public abstract @interface Anno {
public abstract java.lang.Class baseClass();
}
////////////////////
import java.lang.System;
@kotlin.Metadata()
public abstract class Base<S extends java.lang.Object, R extends java.lang.Object, A extends java.lang.Object> implements Intf<S, R, A> {
public Base() {
super();
}
}
////////////////////
import java.lang.System;
@kotlin.Metadata()
@Anno(baseClass = Base.class)
public abstract interface Impl {
}
////////////////////
import java.lang.System;
@kotlin.Metadata()
public abstract interface Intf<S extends java.lang.Object, R extends java.lang.Object, A extends java.lang.Object> {
}
@@ -48,7 +48,7 @@ public abstract @interface AnnoClass {
public abstract int x();
public abstract java.lang.Class<Color> c();
public abstract java.lang.Class c();
}
////////////////////