Support fake Java property overrides in function equality in bridges

A synthetic property descriptor created for `B.value` (see the added
test) should not be equal to the normal descriptor created by the fake
override construction algorithm. Otherwise we can't reach this synthetic
non-abstract descriptor when building bridges in `C`, which results in
exception.

 #KT-31367 Fixed
This commit is contained in:
Alexander Udalov
2019-05-24 11:04:16 +02:00
parent d05e72dda8
commit 082c337faa
12 changed files with 100 additions and 13 deletions
@@ -0,0 +1,3 @@
package test
class C : B(), I
@@ -0,0 +1,20 @@
package test
public abstract class A {
public constructor A()
public open fun getValue(): kotlin.String!
}
public open class B : test.A, test.I {
public constructor B()
public open override /*2*/ /*fake_override*/ val value: kotlin.String?
}
public final class C : test.B, test.I {
public constructor C()
public open override /*2*/ /*fake_override*/ val value: kotlin.String?
}
public interface I {
public abstract val value: kotlin.String?
}
@@ -0,0 +1,7 @@
package test;
public abstract class A {
public String getValue() {
return null;
}
}
@@ -0,0 +1,4 @@
package test;
public class B extends A implements I {
}
@@ -0,0 +1,5 @@
package test
interface I {
val value: String?
}