No synthetic properties in java class for methods inherited from Kotlin

This commit is contained in:
Valentin Kipyatkov
2015-07-17 20:33:03 +03:00
parent e0e7044032
commit 367e294452
5 changed files with 11 additions and 10 deletions
@@ -109,13 +109,14 @@ class JavaSyntheticExtensionsScope(storageManager: StorageManager) : JetScope by
val getMethod = possibleGetMethodNames(name)
.asSequence()
.flatMap { memberScope.getFunctions(it).asSequence() }
.singleOrNull { isGoodGetMethod(it) } ?: return null
.singleOrNull { it.kind != CallableMemberDescriptor.Kind.FAKE_OVERRIDE && isGoodGetMethod(it) } ?: return null
// don't accept "uRL" for "getURL" etc
if (SyntheticJavaPropertyDescriptor.propertyNameByGetMethodName(getMethod.name) != name) return null
val propertyType = getMethod.getReturnType() ?: return null
val setMethod = memberScope.getFunctions(setMethodName(getMethod.getName())).singleOrNull { isGoodSetMethod(it, propertyType) }
val setMethod = memberScope.getFunctions(setMethodName(getMethod.getName()))
.singleOrNull { it.kind != CallableMemberDescriptor.Kind.FAKE_OVERRIDE && isGoodSetMethod(it, propertyType) }
return MyPropertyDescriptor(javaClass, getMethod.original, setMethod?.original, name, propertyType)
}
@@ -1,10 +1,10 @@
// FILE: KotlinFile.kt
open class KotlinClass1 : JavaClass1() {
fun getSomethingKotlin1(): Int = 1
public fun getSomethingKotlin1(): Int = 1
}
class KotlinClass2 : JavaClass2() {
fun getSomethingKotlin2(): Int = 1
public fun getSomethingKotlin2(): Int = 1
}
fun foo(k: KotlinClass2) {
@@ -16,7 +16,7 @@ public open class JavaClass2 : KotlinClass1 {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getSomething1(): kotlin.Int
public open fun getSomething2(): kotlin.Int
internal final override /*1*/ /*fake_override*/ fun getSomethingKotlin1(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun getSomethingKotlin1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -25,7 +25,7 @@ internal open class KotlinClass1 : JavaClass1 {
public constructor KotlinClass1()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getSomething1(): kotlin.Int
internal final fun getSomethingKotlin1(): kotlin.Int
public final fun getSomethingKotlin1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -35,8 +35,8 @@ internal final class KotlinClass2 : JavaClass2 {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getSomething1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun getSomething2(): kotlin.Int
internal final override /*1*/ /*fake_override*/ fun getSomethingKotlin1(): kotlin.Int
internal final fun getSomethingKotlin2(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun getSomethingKotlin1(): kotlin.Int
public final fun getSomethingKotlin2(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,6 +1,6 @@
// FILE: KotlinFile.kt
class KotlinClass {
fun getSomething(): Int = 1
public fun getSomething(): Int = 1
}
fun foo(javaClass: JavaClass, kotlinClass: KotlinClass) {
@@ -14,7 +14,7 @@ public open class JavaClass {
internal final class KotlinClass {
public constructor KotlinClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun getSomething(): kotlin.Int
public final fun getSomething(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}