Fix override conflicts with different return types
This commit is contained in:
committed by
Pavel Punegov
parent
f2e3c91f79
commit
066bff2004
+1
-1
@@ -160,7 +160,7 @@ private val FunctionDescriptor.signature: String
|
||||
when {
|
||||
this.typeParameters.isNotEmpty() -> "Generic"
|
||||
returnType.let { it != null && it.isValueType() } -> "ValueType"
|
||||
returnType.let { it != null && !KotlinBuiltIns.isUnitOrNullableUnit(it) } -> "Reference"
|
||||
returnType.let { it != null && !KotlinBuiltIns.isUnitOrNullableUnit(it) } -> typeToHashString(returnType!!)
|
||||
else -> ""
|
||||
}
|
||||
|
||||
|
||||
@@ -907,6 +907,10 @@ task bridges_special(type: RunKonanTest) {
|
||||
source = "codegen/bridges/special.kt"
|
||||
}
|
||||
|
||||
task returnTypeSignature(type: RunKonanTest) {
|
||||
source = "codegen/bridges/returnTypeSignature.kt"
|
||||
}
|
||||
|
||||
task classDelegation_method(type: RunKonanTest) {
|
||||
goldValue = "OKOK\n"
|
||||
source = "codegen/classDelegation/method.kt"
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package codegen.bridges.signature
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
class A { }
|
||||
|
||||
class B { }
|
||||
|
||||
class C { }
|
||||
|
||||
interface Parser<in IN: Any, out OUT: Any> {
|
||||
fun parse(source: IN): OUT
|
||||
}
|
||||
|
||||
interface MultiParser<in IN: Any, out OUT: Any> {
|
||||
fun parse(source: IN): Collection<OUT>
|
||||
}
|
||||
|
||||
interface ExtendsInterface<T: Any>: Parser<A, T>, MultiParser<B, T> {
|
||||
override fun parse(source: B): Collection<T> = ArrayList<T>()
|
||||
}
|
||||
|
||||
abstract class AbstractClass(): ExtendsInterface<C> {
|
||||
public override fun parse(source: A): C = C()
|
||||
}
|
||||
|
||||
@Test fun runTest() {
|
||||
val array = object : AbstractClass() { }.parse(B())
|
||||
}
|
||||
Reference in New Issue
Block a user