Kapt+JVM_IR: do not attempt to transform error types in InsertImplicitCasts

This commit is contained in:
Alexander Udalov
2023-01-06 21:45:02 +01:00
parent 690fe7ac9a
commit d85b23ebb9
3 changed files with 304 additions and 1 deletions
@@ -528,6 +528,7 @@ internal class InsertImplicitCasts(
// This is a kludge to remove IR-based descriptors where possible.
private fun KotlinType.toNonIrBased(): KotlinType {
if (this !is SimpleType) return this
if (this.isError) return this
val newDescriptor = constructor.declarationDescriptor?.let {
if (it is IrBasedDeclarationDescriptor<*> && it.owner.symbol.hasDescriptor)
it.owner.symbol.descriptor as ClassifierDescriptor
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// CORRECT_ERROR_TYPES
// NON_EXISTENT_CLASS
// NO_VALIDATION
@@ -0,0 +1,303 @@
import java.util.Calendar;
import kotlin.reflect.KClass;
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@kotlin.Metadata()
public abstract @interface Anno {
public abstract java.lang.Class<?> a();
public abstract java.lang.Class<?>[] b();
public abstract java.lang.Class<?>[] c();
public abstract java.lang.Class<?>[] d();
}
////////////////////
import java.util.Calendar;
import kotlin.reflect.KClass;
@kotlin.Metadata()
public final class MyType<T extends java.lang.Object> {
public MyType() {
super();
}
}
////////////////////
import java.util.Calendar;
import kotlin.reflect.KClass;
@kotlin.Metadata()
@kotlin.Suppress(names = {"UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION", "UNSUPPORTED_FEATURE"})
public final class NonExistentClassTypesConversionKt {
}
////////////////////
import java.util.Calendar;
import kotlin.reflect.KClass;
@Anno(a = Blah.class, b = {NoFoo1.class, NoBar1.class}, c = {NoFoo2.class, kotlin.String.class}, d = {kotlin.Boolean.class, NoBar3.class})
@kotlin.Metadata()
public final class Test<G extends java.lang.Object> {
public ABC a;
@org.jetbrains.annotations.Nullable()
private final ABC b = null;
@org.jetbrains.annotations.Nullable()
private final java.util.List<ABC> c = null;
@org.jetbrains.annotations.Nullable()
private final java.util.List<java.util.Map<BCD, ABC<java.util.List<BCD>>>> d = null;
public java.util.List<java.util.Map<? extends ABC, BCD>> e;
public ABC<?> f;
public java.util.List<?> g;
public ABC<java.lang.Integer, java.lang.String> h;
public Function2<ABC, java.util.List<BCD>, CDE> i;
public Function0<CDE> j;
public Function2<ABC, java.util.List<BCD>, CDE> k;
public ABC.BCD.EFG l;
public ABC coocoo;
public ABC<java.lang.String> coocoo2;
public ABC<ABC> coocoo21;
public ABC<java.lang.String, java.lang.String> coocoo3;
public ABC<java.lang.String, ABC<ABC>> coocoo31;
public ABC nested;
@org.jetbrains.annotations.NotNull()
private final java.lang.Object m = null;
@org.jetbrains.annotations.NotNull()
private final java.lang.String n = "";
public java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<error.NonExistentClass>>>>>>>>>> o11;
public java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<ABC>>>>>>>>> o10;
public java.util.Calendar.Builder p;
public Test() {
super();
}
@org.jetbrains.annotations.NotNull()
public final ABC getA() {
return null;
}
public final void setA(@org.jetbrains.annotations.NotNull()
ABC p0) {
}
@org.jetbrains.annotations.Nullable()
public final ABC getB() {
return null;
}
@org.jetbrains.annotations.Nullable()
public final java.util.List<ABC> getC() {
return null;
}
@org.jetbrains.annotations.Nullable()
public final java.util.List<java.util.Map<BCD, ABC<java.util.List<BCD>>>> getD() {
return null;
}
@org.jetbrains.annotations.NotNull()
public final java.util.List<java.util.Map<? extends ABC, BCD>> getE() {
return null;
}
public final void setE(@org.jetbrains.annotations.NotNull()
java.util.List<? extends java.util.Map<? extends ABC, ? extends BCD>> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC<?> getF() {
return null;
}
public final void setF(@org.jetbrains.annotations.NotNull()
ABC<?> p0) {
}
@org.jetbrains.annotations.NotNull()
public final java.util.List<?> getG() {
return null;
}
public final void setG(@org.jetbrains.annotations.NotNull()
java.util.List<?> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC<java.lang.Integer, java.lang.String> getH() {
return null;
}
public final void setH(@org.jetbrains.annotations.NotNull()
ABC<java.lang.Integer, java.lang.String> p0) {
}
@org.jetbrains.annotations.NotNull()
public final Function2<ABC, java.util.List<BCD>, CDE> getI() {
return null;
}
public final void setI(@org.jetbrains.annotations.NotNull()
Function2<ABC, java.util.List<? extends BCD>, CDE> p0) {
}
@org.jetbrains.annotations.NotNull()
public final Function0<CDE> getJ() {
return null;
}
public final void setJ(@org.jetbrains.annotations.NotNull()
Function0<CDE> p0) {
}
@org.jetbrains.annotations.NotNull()
public final Function2<ABC, java.util.List<BCD>, CDE> getK() {
return null;
}
public final void setK(@org.jetbrains.annotations.NotNull()
Function2<ABC, java.util.List<? extends BCD>, CDE> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC.BCD.EFG getL() {
return null;
}
public final void setL(@org.jetbrains.annotations.NotNull()
ABC.BCD.EFG p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC getCoocoo() {
return null;
}
public final void setCoocoo(@org.jetbrains.annotations.NotNull()
ABC p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC<java.lang.String> getCoocoo2() {
return null;
}
public final void setCoocoo2(@org.jetbrains.annotations.NotNull()
ABC<java.lang.String> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC<ABC> getCoocoo21() {
return null;
}
public final void setCoocoo21(@org.jetbrains.annotations.NotNull()
ABC<ABC> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC<java.lang.String, java.lang.String> getCoocoo3() {
return null;
}
public final void setCoocoo3(@org.jetbrains.annotations.NotNull()
ABC<java.lang.String, java.lang.String> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC<java.lang.String, ABC<ABC>> getCoocoo31() {
return null;
}
public final void setCoocoo31(@org.jetbrains.annotations.NotNull()
ABC<java.lang.String, ABC<ABC>> p0) {
}
@org.jetbrains.annotations.NotNull()
public final ABC getNested() {
return null;
}
public final void setNested(@org.jetbrains.annotations.NotNull()
ABC p0) {
}
@org.jetbrains.annotations.NotNull()
public final java.lang.Object getM() {
return null;
}
@org.jetbrains.annotations.NotNull()
public final java.lang.String getN() {
return null;
}
@org.jetbrains.annotations.NotNull()
public final java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<error.NonExistentClass>>>>>>>>>> getO11() {
return null;
}
public final void setO11(@org.jetbrains.annotations.NotNull()
java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<error.NonExistentClass>>>>>>>>>> p0) {
}
@org.jetbrains.annotations.NotNull()
public final java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<java.util.List<ABC>>>>>>>>> getO10() {
return null;
}
public final void setO10(@org.jetbrains.annotations.NotNull()
java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends java.util.List<? extends ABC>>>>>>>>> p0) {
}
@org.jetbrains.annotations.NotNull()
public final java.util.Calendar.Builder getP() {
return null;
}
public final void setP(@org.jetbrains.annotations.NotNull()
java.util.Calendar.Builder p0) {
}
@org.jetbrains.annotations.Nullable()
public final BCD f1(@org.jetbrains.annotations.NotNull()
ABC a) {
return null;
}
public final <T extends java.lang.Object>void f2(@org.jetbrains.annotations.NotNull()
ABC<java.lang.String, java.lang.Integer, Function0<BCD>> a) {
}
public final <T extends java.lang.Object>long f3(@org.jetbrains.annotations.NotNull()
ABC a, int b) {
return 0L;
}
@org.jetbrains.annotations.NotNull()
public final java.lang.Object f4() {
return null;
}
@org.jetbrains.annotations.Nullable()
public final <T extends java.lang.Object>java.lang.Class<java.lang.Enum<?>> f5(@org.jetbrains.annotations.NotNull()
MyType<T> $this$f5) {
return null;
}
}
////////////////////
package error;
public final class NonExistentClass {
}