JVM: do not assume that methods have body in BridgeLowering
They don't have bodies in the kapt stub generation mode. #KT-58787 Fixed
This commit is contained in:
committed by
Space Team
parent
b2230327df
commit
d32268c5cb
+5
-4
@@ -539,10 +539,11 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
||||
}
|
||||
|
||||
// After the checks, insert the original method body.
|
||||
if (body is IrExpressionBody) {
|
||||
+irReturn((body as IrExpressionBody).expression)
|
||||
} else {
|
||||
(body as IrBlockBody).statements.forEach { +it }
|
||||
when (val body = body) {
|
||||
is IrExpressionBody -> +irReturn(body.expression)
|
||||
is IrBlockBody -> body.statements.forEach { +it }
|
||||
null -> {}
|
||||
else -> error("Unsupported method body kind: ${body.render()}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
@kotlin.Metadata()
|
||||
public final class MyList<T extends java.lang.Object> implements java.util.List<T>, kotlin.jvm.internal.markers.KMappedMarker {
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
private final java.util.List<T> wrappedList = null;
|
||||
|
||||
public MyList(@org.jetbrains.annotations.NotNull()
|
||||
java.util.List<? extends T> wrappedList) {
|
||||
super();
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public void add(int index, T element) {
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean add(T element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean addAll(int index, java.util.Collection<? extends T> elements) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean addAll(java.util.Collection<? extends T> elements) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public void clear() {
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean contains(@org.jetbrains.annotations.Nullable()
|
||||
java.lang.Object element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean containsAll(@org.jetbrains.annotations.NotNull()
|
||||
java.util.Collection<? extends java.lang.Object> elements) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public T get(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public int getSize() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public int indexOf(@org.jetbrains.annotations.Nullable()
|
||||
java.lang.Object element) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean isEmpty() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.Iterator<T> iterator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public int lastIndexOf(@org.jetbrains.annotations.Nullable()
|
||||
java.lang.Object element) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.ListIterator<T> listIterator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.ListIterator<T> listIterator(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public T remove(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean remove(java.lang.Object element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean removeAll(java.util.Collection<? extends java.lang.Object> elements) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean retainAll(java.util.Collection<? extends java.lang.Object> elements) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public T set(int index, T element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public final int size() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.List<T> subList(int fromIndex, int toIndex) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public java.lang.Object[] toArray() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public <T extends java.lang.Object>T[] toArray(T[] array) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class MyList<out T : Any>(
|
||||
private val wrappedList: List<T>,
|
||||
) : List<T> by wrappedList
|
||||
@@ -0,0 +1,78 @@
|
||||
@kotlin.Metadata()
|
||||
public final class MyList<T extends java.lang.Object> implements java.util.List<T>, kotlin.jvm.internal.markers.KMappedMarker {
|
||||
private final java.util.List<T> wrappedList = null;
|
||||
|
||||
public MyList(@org.jetbrains.annotations.NotNull()
|
||||
java.util.List<? extends T> wrappedList) {
|
||||
super();
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean contains(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.Object element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean containsAll(@org.jetbrains.annotations.NotNull()
|
||||
java.util.Collection<? extends java.lang.Object> elements) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public T get(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public int getSize() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public int indexOf(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.Object element) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public boolean isEmpty() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.Iterator<T> iterator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public int lastIndexOf(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.Object element) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.ListIterator<T> listIterator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.ListIterator<T> listIterator(int index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public final int size() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public java.util.List<T> subList(int fromIndex, int toIndex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+6
@@ -151,6 +151,12 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi
|
||||
runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegateCorrectErrorTypes.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateToList.kt")
|
||||
public void testDelegateToList() throws Exception {
|
||||
runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegateToList.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegatedProperties.kt")
|
||||
public void testDelegatedProperties() throws Exception {
|
||||
|
||||
+6
@@ -151,6 +151,12 @@ public class IrClassFileToSourceStubConverterTestGenerated extends AbstractIrCla
|
||||
runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegateCorrectErrorTypes.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateToList.kt")
|
||||
public void testDelegateToList() throws Exception {
|
||||
runTest("plugins/kapt3/kapt3-compiler/testData/converter/delegateToList.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegatedProperties.kt")
|
||||
public void testDelegatedProperties() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user