Foo.class never yields null in Java annotation arguments

This commit is contained in:
Andrey Breslav
2014-01-14 16:35:17 +04:00
parent 84709ed363
commit b120a5150c
3 changed files with 5 additions and 3 deletions
@@ -8,7 +8,7 @@ public open class ClassObjectArrayInParam : java.lang.Object {
public abstract fun value(): jet.Array<java.lang.Class<out jet.Any?>>
}
test.ClassObjectArrayInParam.Anno(value = {test.ClassObjectArrayInParam?.class, test.ClassObjectArrayInParam.Nested?.class, jet.String?.class}: jet.Array<java.lang.Class<out jet.Any?>>) public open class Nested : java.lang.Object {
test.ClassObjectArrayInParam.Anno(value = {test.ClassObjectArrayInParam.class, test.ClassObjectArrayInParam.Nested.class, jet.String.class}: jet.Array<java.lang.Class<out jet.Any?>>) public open class Nested : java.lang.Object {
public constructor Nested()
}
}
@@ -8,7 +8,7 @@ public open class ClassObjectInParam : java.lang.Object {
public abstract fun value(): java.lang.Class<out jet.Any?>
}
test.ClassObjectInParam.Anno(value = test.ClassObjectInParam?.class: java.lang.Class<test.ClassObjectInParam?>) public open class Nested : java.lang.Object {
test.ClassObjectInParam.Anno(value = test.ClassObjectInParam.class: java.lang.Class<test.ClassObjectInParam>) public open class Nested : java.lang.Object {
public constructor Nested()
}
}
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.JetTypeImpl;
import org.jetbrains.jet.lang.types.TypeProjectionImpl;
import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import javax.inject.Inject;
@@ -147,7 +148,8 @@ public final class JavaAnnotationArgumentResolver {
@Nullable
private CompileTimeConstant<?> resolveFromJavaClassObjectType(@NotNull JavaType javaType) {
JetType type = typeTransformer.transformToType(javaType, TypeVariableResolver.EMPTY);
// Foo.class is never nullable
JetType type = TypeUtils.makeNotNullable(typeTransformer.transformToType(javaType, TypeVariableResolver.EMPTY));
ClassDescriptor jlClass = classResolver.resolveClass(JL_CLASS_FQ_NAME, IGNORE_KOTLIN_SOURCES);
if (jlClass == null) return null;