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,4 @@
class C {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -0,0 +1,10 @@
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 final fun getX(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,6 @@
class C {
companion object {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -0,0 +1,17 @@
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 companion object Companion {
private constructor Companion()
public final val x: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun getX(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,3 @@
class C(<!CONFLICTING_JVM_DECLARATIONS!>val x: Int<!>) {
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -0,0 +1,10 @@
package
public final class C {
public constructor C(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun getX(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Any)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun Any.foo()<!> {}
}
@@ -0,0 +1,10 @@
package
public final class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(/*0*/ x: kotlin.Any): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final fun kotlin.Any.foo(): kotlin.Unit
}
@@ -0,0 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_JVM_DECLARATIONS!>fun getX(t: Any)<!> = 1
val Any.x: Int
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
}
@@ -0,0 +1,10 @@
package
public final class C {
public constructor C()
public final val kotlin.Any.x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun getX(/*0*/ t: kotlin.Any): kotlin.Int
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
class C {
<!CONFLICTING_JVM_DECLARATIONS!>fun setX(x: Int)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>var x: Int<!> = 1
}
@@ -0,0 +1,10 @@
package
public final class C {
public constructor C()
public final var x: kotlin.Int
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 final fun setX(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,8 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_JVM_DECLARATIONS!>fun setX(x: Int)<!> {}
var x: Int = 1
<!CONFLICTING_JVM_DECLARATIONS!>set(v)<!> {}
}
@@ -0,0 +1,10 @@
package
public final class C {
public constructor C()
public final var x: kotlin.Int
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 final fun setX(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,6 @@
fun foo() {
class C {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -0,0 +1,3 @@
package
public fun foo(): kotlin.Unit
@@ -0,0 +1,8 @@
class Outer {
fun foo() {
class C {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
}
}
@@ -0,0 +1,9 @@
package
public final class Outer {
public constructor Outer()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,6 @@
class B {
class C {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -0,0 +1,17 @@
package
public final class B {
public constructor B()
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 final val x: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun getX(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,4 @@
object C {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -0,0 +1,10 @@
package
public object C {
private constructor C()
public final val x: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun getX(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,5 @@
fun foo() =
object {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -0,0 +1,3 @@
package
public fun foo(): kotlin.Any
@@ -0,0 +1,6 @@
class Outer {
val x = object {
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -0,0 +1,9 @@
package
public final class Outer {
public constructor Outer()
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,13 @@
// FILE: A.java
public class A {
public String getFoo() {
return "Foo";
}
}
// FILE: B.kt
class B(private val foo: String) : A() {
override fun getFoo(): String = foo
}
@@ -0,0 +1,18 @@
package
public open class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getFoo(): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : A {
public constructor B(/*0*/ foo: kotlin.String)
private final val foo: kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun getFoo(): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,2 @@
<!CONFLICTING_JVM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
@@ -0,0 +1,4 @@
package
public val x: kotlin.Int = 1
public fun getX(): kotlin.Int
@@ -0,0 +1,5 @@
// FILE: a.kt
val x = 1
// FILE: b.kt
fun getX() = 1
@@ -0,0 +1,4 @@
package
public val x: kotlin.Int = 1
public fun getX(): kotlin.Int
@@ -0,0 +1,3 @@
val x: Int
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
@@ -0,0 +1,4 @@
package
public val x: kotlin.Int
public fun getX(): kotlin.Int
@@ -0,0 +1,7 @@
// TARGET_BACKEND: JVM_IR
interface T {
val x: Int
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -0,0 +1,9 @@
package
public interface T {
public open val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getX(): kotlin.Int
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
interface T {
val x: Int
<!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -0,0 +1,9 @@
package
public interface T {
public open val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getX(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}