Kapt+JVM_IR: generate delegated members correctly
Generate a declaration for each delegated member without body. If we don't generate delegated declarations, subclasses will have incorrect IR with unbound symbols in fake overrides. #KT-58027 Fixed
This commit is contained in:
committed by
Space Team
parent
5407ac1c72
commit
bc7aea1426
+39
@@ -0,0 +1,39 @@
|
||||
@kotlin.Metadata()
|
||||
@kotlin.Suppress(names = {"UNRESOLVED_REFERENCE"})
|
||||
public abstract interface A {
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final A.Companion Companion = null;
|
||||
|
||||
public abstract void inject(@org.jetbrains.annotations.NotNull()
|
||||
A.B b);
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract java.lang.String getX();
|
||||
|
||||
@kotlin.Metadata()
|
||||
public static abstract class B implements A {
|
||||
|
||||
public B() {
|
||||
super();
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.lang.String getX() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public void inject(@org.jetbrains.annotations.NotNull()
|
||||
A.B b) {
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.Metadata()
|
||||
public static final class Companion extends A.B {
|
||||
|
||||
private Companion() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// CORRECT_ERROR_TYPES
|
||||
|
||||
@Suppress("UNRESOLVED_REFERENCE")
|
||||
interface A {
|
||||
fun inject(b: B)
|
||||
val x: String
|
||||
|
||||
companion object : B()
|
||||
|
||||
abstract class B : A by Unresolved
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
@kotlin.Metadata()
|
||||
@kotlin.Suppress(names = {"UNRESOLVED_REFERENCE"})
|
||||
public abstract interface A {
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final A.Companion Companion = null;
|
||||
|
||||
public abstract void inject(@org.jetbrains.annotations.NotNull()
|
||||
A.B b);
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract java.lang.String getX();
|
||||
|
||||
@kotlin.Metadata()
|
||||
public static abstract class B implements A {
|
||||
|
||||
@java.lang.Override()
|
||||
public void inject(@org.jetbrains.annotations.NotNull()
|
||||
A.B b) {
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.lang.String getX() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public B() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.Metadata()
|
||||
public static final class Companion extends A.B {
|
||||
|
||||
private Companion() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user