Report JVM signature clashes from JVM_IR

Also:

* Do not rename public ABI fields
This includes backing fields for const, lateinit, @JvmField properties,
and instance fields for objects.

* FAKE_OVERRIDE declarations for static members of parent Java classes
Required to report cases when a Kotlin function accidentally overrides
Java class member.
This commit is contained in:
Dmitry Petrov
2020-02-10 11:27:48 +03:00
parent c1db9b6d40
commit 866f188120
233 changed files with 4487 additions and 44 deletions
@@ -0,0 +1,8 @@
class C {
companion object {
val X = 1
<!CONFLICTING_JVM_DECLARATIONS!>val `X$1`<!> = 1
}
<!CONFLICTING_JVM_DECLARATIONS!>val X<!> = 1
}
@@ -0,0 +1,18 @@
package
public final class C {
public constructor C()
public final val X: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
public final val X: kotlin.Int = 1
public final val `X$1`: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,20 @@
// TARGET_BACKEND: JVM_IR
class B {
companion object <!REDECLARATION!>A<!> {
}
val <!REDECLARATION!>A<!>: A = B.A
}
class C {
companion object A {
val A: A = C.A
}
}
class <!CONFLICTING_JVM_DECLARATIONS!>D<!> {
companion object A {
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var A: A<!>
}
}
@@ -0,0 +1,46 @@
package
public final class B {
public constructor B()
public final val A: B.A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object A {
private constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public final class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object A {
private constructor A()
public final val A: C.A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public final class D {
public constructor D()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object A {
private constructor A()
public final lateinit var A: D.A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,20 @@
// TARGET_BACKEND: JVM_OLD
class B {
companion <!CONFLICTING_JVM_DECLARATIONS!>object <!REDECLARATION!>A<!><!> {
}
<!CONFLICTING_JVM_DECLARATIONS!>val <!REDECLARATION!>A<!>: A<!> = B.A
}
class C {
companion <!CONFLICTING_JVM_DECLARATIONS!>object A<!> {
<!CONFLICTING_JVM_DECLARATIONS!>val A: A<!> = C.A
}
}
class D {
companion <!CONFLICTING_JVM_DECLARATIONS!>object A<!> {
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var A: A<!>
}
}
@@ -0,0 +1,46 @@
package
public final class B {
public constructor B()
public final val A: B.A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object A {
private constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public final class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object A {
private constructor A()
public final val A: C.A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public final class D {
public constructor D()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object A {
private constructor A()
public final lateinit var A: D.A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,7 @@
// TARGET_BACKEND: JVM_IR
class C {
companion <!REDECLARATION!>object<!> {}
val <!REDECLARATION!>Companion<!> = C
}
@@ -0,0 +1,16 @@
package
public final class C {
public constructor C()
public final val Companion: C.Companion
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,7 @@
// TARGET_BACKEND: JVM_OLD
class C {
companion <!CONFLICTING_JVM_DECLARATIONS, REDECLARATION!>object<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>val <!REDECLARATION!>Companion<!><!> = C
}
@@ -0,0 +1,16 @@
package
public final class C {
public constructor C()
public final val Companion: C.Companion
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,5 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
data class <!CONFLICTING_JVM_DECLARATIONS!>C(val c: Int)<!> {
<!CONFLICTING_JVM_DECLARATIONS!>fun `copy$default`(c: C, x: Int, m: Int, mh: Any)<!> = C(this.c)
}
@@ -0,0 +1,12 @@
package
public final data class C {
public constructor C(/*0*/ c: kotlin.Int)
public final val c: kotlin.Int
public final operator /*synthesized*/ fun component1(): kotlin.Int
public final /*synthesized*/ fun copy(/*0*/ c: kotlin.Int = ...): C
public final fun `copy$default`(/*0*/ c: C, /*1*/ x: kotlin.Int, /*2*/ m: kotlin.Int, /*3*/ mh: kotlin.Any): C
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
@@ -0,0 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_JVM_DECLARATIONS!>fun `a$default`(c: C, x: Int, m: Int, mh: Any)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun a(x: Int = 1)<!> {}
}
@@ -0,0 +1,10 @@
package
public final class C {
public constructor C()
public final fun a(/*0*/ x: kotlin.Int = ...): kotlin.Unit
public final fun `a$default`(/*0*/ c: C, /*1*/ x: kotlin.Int, /*2*/ m: kotlin.Int, /*3*/ mh: kotlin.Any): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,15 @@
// TARGET_BACKEND: JVM_IR
interface Foo
class Bar(f: Foo) : Foo by f {
// Backing field is renamed to `$$delegate_0$1` in JVM_IR
val `$$delegate_0`: Foo? = null
}
class Bar2(f: Foo) :
// Backing field for delegate is renamed to `$$delegate_0$1` in JVM_IR
Foo by f {
lateinit var `$$delegate_0`: Foo
}
@@ -0,0 +1,23 @@
package
public final class Bar : Foo {
public constructor Bar(/*0*/ f: Foo)
public final val `$$delegate_0`: Foo? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Bar2 : Foo {
public constructor Bar2(/*0*/ f: Foo)
public final lateinit var `$$delegate_0`: Foo
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Foo {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,15 @@
// TARGET_BACKEND: JVM_OLD
interface Foo
class <!CONFLICTING_JVM_DECLARATIONS!>Bar(f: Foo)<!> : Foo by f {
// Backing field is renamed to `$$delegate_0$1` in JVM_IR
<!CONFLICTING_JVM_DECLARATIONS!>val `$$delegate_0`: Foo?<!> = null
}
class <!CONFLICTING_JVM_DECLARATIONS!>Bar2(f: Foo)<!> :
// Backing field for delegate is renamed to `$$delegate_0$1` in JVM_IR
Foo by f {
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var `$$delegate_0`: Foo<!>
}
@@ -0,0 +1,23 @@
package
public final class Bar : Foo {
public constructor Bar(/*0*/ f: Foo)
public final val `$$delegate_0`: Foo? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Bar2 : Foo {
public constructor Bar2(/*0*/ f: Foo)
public final lateinit var `$$delegate_0`: Foo
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Foo {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
enum class <!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>E<!> {
A;
<!CONFLICTING_JVM_DECLARATIONS!>fun values(): Array<E><!> = null!!
<!CONFLICTING_JVM_DECLARATIONS!>fun valueOf(s: String): E<!> = null!!
}
@@ -0,0 +1,22 @@
package
public final enum class E : kotlin.Enum<E> {
enum entry A
private constructor E()
public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<E!>!
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final fun valueOf(/*0*/ s: kotlin.String): E
public final fun values(): kotlin.Array<E>
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E
public final /*synthesized*/ fun values(): kotlin.Array<E>
}
@@ -0,0 +1,8 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// TARGET_BACKEND: JVM_IR
class C {
inner class D {
val `this$0`: C? = null
}
}
@@ -0,0 +1,16 @@
package
public final class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final inner class D {
public constructor D()
public final val `this$0`: C? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,8 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// TARGET_BACKEND: JVM_OLD
class C {
inner class <!CONFLICTING_JVM_DECLARATIONS!>D<!> {
<!CONFLICTING_JVM_DECLARATIONS!>val `this$0`: C?<!> = null
}
}
@@ -0,0 +1,16 @@
package
public final class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final inner class D {
public constructor D()
public final val `this$0`: C? = null
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,9 @@
// TARGET_BACKEND: JVM_IR
object O {
val INSTANCE: O = null!!
}
<!CONFLICTING_JVM_DECLARATIONS!>object O2<!> {
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var INSTANCE: O2<!>
}
@@ -0,0 +1,17 @@
package
public object O {
private constructor O()
public final val INSTANCE: O
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public object O2 {
private constructor O2()
public final lateinit var INSTANCE: O2
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,9 @@
// TARGET_BACKEND: JVM_OLD
<!CONFLICTING_JVM_DECLARATIONS!>object O<!> {
<!CONFLICTING_JVM_DECLARATIONS!>val INSTANCE: O<!> = null!!
}
<!CONFLICTING_JVM_DECLARATIONS!>object O2<!> {
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var INSTANCE: O2<!>
}
@@ -0,0 +1,17 @@
package
public object O {
private constructor O()
public final val INSTANCE: O
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public object O2 {
private constructor O2()
public final lateinit var INSTANCE: O2
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,19 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// TARGET_BACKEND: JVM_IR
import kotlin.reflect.KProperty
operator fun Any.getValue(x: Any?, y: Any): Any = null!!
class C {
val x by 1
val `$$delegatedProperties`: Array<KProperty<*>> = null!!
}
class C2 {
val x by 1
lateinit var `$$delegatedProperties`: Array<KProperty<*>>
}
val x by 1
lateinit var `$$delegatedProperties`: Array<KProperty<*>>
@@ -0,0 +1,23 @@
package
public lateinit var `$$delegatedProperties`: kotlin.Array<kotlin.reflect.KProperty<*>>
public val x: kotlin.Any
public operator fun kotlin.Any.getValue(/*0*/ x: kotlin.Any?, /*1*/ y: kotlin.Any): kotlin.Any
public final class C {
public constructor C()
public final val `$$delegatedProperties`: kotlin.Array<kotlin.reflect.KProperty<*>>
public final val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C2 {
public constructor C2()
public final lateinit var `$$delegatedProperties`: kotlin.Array<kotlin.reflect.KProperty<*>>
public final val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,19 @@
<!CONFLICTING_JVM_DECLARATIONS!>package test
// TARGET_BACKEND: JVM_OLD
import kotlin.reflect.KProperty
operator fun Any.getValue(x: Any?, y: Any): Any = null!!
class <!CONFLICTING_JVM_DECLARATIONS!>C<!> {
val x by 1
<!CONFLICTING_JVM_DECLARATIONS!>val `$$delegatedProperties`: Array<KProperty<*>><!> = null!!
}
class <!CONFLICTING_JVM_DECLARATIONS!>C2<!> {
val x by 1
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var `$$delegatedProperties`: Array<KProperty<*>><!>
}
val x by 1
<!CONFLICTING_JVM_DECLARATIONS!>lateinit var `$$delegatedProperties`: Array<KProperty<*>><!><!>
@@ -0,0 +1,25 @@
package
package test {
public lateinit var `$$delegatedProperties`: kotlin.Array<kotlin.reflect.KProperty<*>>
public val x: kotlin.Any
public operator fun kotlin.Any.getValue(/*0*/ x: kotlin.Any?, /*1*/ y: kotlin.Any): kotlin.Any
public final class C {
public constructor C()
public final val `$$delegatedProperties`: kotlin.Array<kotlin.reflect.KProperty<*>>
public final val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C2 {
public constructor C2()
public final lateinit var `$$delegatedProperties`: kotlin.Array<kotlin.reflect.KProperty<*>>
public final val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}