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:
+20
@@ -0,0 +1,20 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
public open class A<T> {
|
||||
fun foo(x: T) = "O"
|
||||
fun foo(x: A<T>) = "K"
|
||||
}
|
||||
|
||||
interface C<E> {
|
||||
fun foo(x: E): String
|
||||
fun foo(x: A<E>): String
|
||||
}
|
||||
|
||||
interface D {
|
||||
fun foo(x: A<String>): String
|
||||
}
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>B1<!> : A<A<String>>(), D
|
||||
|
||||
interface <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>B2<!> : C<A<String>>, D
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package
|
||||
|
||||
public open class A</*0*/ T> {
|
||||
public constructor A</*0*/ T>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ x: A<T>): kotlin.String
|
||||
public final fun foo(/*0*/ x: T): 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 B1 : A<A<kotlin.String>>, D {
|
||||
public constructor B1()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun foo(/*0*/ x: A<A<kotlin.String>>): kotlin.String
|
||||
public final override /*2*/ /*fake_override*/ fun foo(/*0*/ x: A<kotlin.String>): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface B2 : C<A<kotlin.String>>, D {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: A<A<kotlin.String>>): kotlin.String
|
||||
public abstract override /*2*/ /*fake_override*/ fun foo(/*0*/ x: A<kotlin.String>): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface C</*0*/ E> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ x: A<E>): kotlin.String
|
||||
public abstract fun foo(/*0*/ x: E): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface D {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ x: A<kotlin.String>): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
public open class A<T> {
|
||||
fun foo(x: T) = "O"
|
||||
fun foo(x: A<T>) = "K"
|
||||
}
|
||||
|
||||
interface C<E> {
|
||||
fun foo(x: E): String
|
||||
fun foo(x: A<E>): String
|
||||
}
|
||||
|
||||
interface D {
|
||||
fun foo(x: A<String>): String
|
||||
}
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>B1<!> : A<A<String>>(), D
|
||||
|
||||
interface <!CONFLICTING_INHERITED_JVM_DECLARATIONS, CONFLICTING_INHERITED_JVM_DECLARATIONS!>B2<!> : C<A<String>>, D
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package
|
||||
|
||||
public open class A</*0*/ T> {
|
||||
public constructor A</*0*/ T>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ x: A<T>): kotlin.String
|
||||
public final fun foo(/*0*/ x: T): 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 B1 : A<A<kotlin.String>>, D {
|
||||
public constructor B1()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun foo(/*0*/ x: A<A<kotlin.String>>): kotlin.String
|
||||
public final override /*2*/ /*fake_override*/ fun foo(/*0*/ x: A<kotlin.String>): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface B2 : C<A<kotlin.String>>, D {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: A<A<kotlin.String>>): kotlin.String
|
||||
public abstract override /*2*/ /*fake_override*/ fun foo(/*0*/ x: A<kotlin.String>): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface C</*0*/ E> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ x: A<E>): kotlin.String
|
||||
public abstract fun foo(/*0*/ x: E): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface D {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ x: A<kotlin.String>): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: List<String>)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: MutableList<String>)<!> {}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ s: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public fun foo(/*0*/ s: kotlin.collections.MutableList<kotlin.String>): kotlin.Unit
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
interface Bar<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
class Baz(f: Foo<String>, b: Bar<Int>) :
|
||||
Foo<String> by <!CONFLICTING_JVM_DECLARATIONS!>f<!>,
|
||||
Bar<Int> by <!CONFLICTING_JVM_DECLARATIONS!>b<!> {
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package
|
||||
|
||||
public interface Bar</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Baz : Foo<kotlin.String>, Bar<kotlin.Int> {
|
||||
public constructor Baz(/*0*/ f: Foo<kotlin.String>, /*1*/ b: Bar<kotlin.Int>)
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
interface Bar<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>Baz(f: Foo<String>, b: Bar<Int>)<!> :
|
||||
Foo<String> by f,
|
||||
Bar<Int> by b {
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package
|
||||
|
||||
public interface Bar</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Baz : Foo<kotlin.String>, Bar<kotlin.Int> {
|
||||
public constructor Baz(/*0*/ f: Foo<kotlin.String>, /*1*/ b: Bar<kotlin.Int>)
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
class Bar(f: Foo<String>): Foo<String> by <!CONFLICTING_JVM_DECLARATIONS!>f<!> {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package
|
||||
|
||||
public final class Bar : Foo<kotlin.String> {
|
||||
public constructor Bar(/*0*/ f: Foo<kotlin.String>)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>Bar(f: Foo<String>)<!>: Foo<String> by f {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package
|
||||
|
||||
public final class Bar : Foo<kotlin.String> {
|
||||
public constructor Bar(/*0*/ f: Foo<kotlin.String>)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class Bar(f: Foo<String>): Foo<String> by <!CONFLICTING_JVM_DECLARATIONS!>f<!> {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
|
||||
}
|
||||
|
||||
class BarOther(f: Foo<String>): Foo<String> by f {
|
||||
override fun foo(l: List<String>) {}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public final class Bar : Foo<kotlin.String> {
|
||||
public constructor Bar(/*0*/ f: Foo<kotlin.String>)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class BarOther : Foo<kotlin.String> {
|
||||
public constructor BarOther(/*0*/ f: Foo<kotlin.String>)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>Bar(f: Foo<String>)<!>: Foo<String> by f {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
|
||||
}
|
||||
|
||||
class BarOther(f: Foo<String>): Foo<String> by f {
|
||||
override fun foo(l: List<String>) {}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public final class Bar : Foo<kotlin.String> {
|
||||
public constructor Bar(/*0*/ f: Foo<kotlin.String>)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class BarOther : Foo<kotlin.String> {
|
||||
public constructor BarOther(/*0*/ f: Foo<kotlin.String>)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
class G<T>
|
||||
|
||||
val <T> G<T>.foo: Int
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
|
||||
|
||||
val G<String>.foo: Int
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package
|
||||
|
||||
public val </*0*/ T> G<T>.foo: kotlin.Int
|
||||
public val G<kotlin.String>.foo: kotlin.Int
|
||||
|
||||
public final class G</*0*/ T> {
|
||||
public constructor G</*0*/ T>()
|
||||
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
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
class G<T>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: G<String>): G<Int><!> {null!!}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: G<Int>): G<String><!> {null!!}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ x: G<kotlin.Int>): G<kotlin.String>
|
||||
public fun foo(/*0*/ x: G<kotlin.String>): G<kotlin.Int>
|
||||
|
||||
public final class G</*0*/ T> {
|
||||
public constructor G</*0*/ T>()
|
||||
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
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
interface Bar<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>Baz()<!>: Foo<String>, Bar<Int> {
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package
|
||||
|
||||
public interface Bar</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Baz : Foo<kotlin.String>, Bar<kotlin.Int> {
|
||||
public constructor Baz()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
interface Bar<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>Baz()<!>: Foo<String>, Bar<Int> {
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package
|
||||
|
||||
public interface Bar</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Baz : Foo<kotlin.String>, Bar<kotlin.Int> {
|
||||
public constructor Baz()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: List<String>)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: java.util.List<String>)<!> {}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ s: java.util.List<kotlin.String>): kotlin.Unit
|
||||
public fun foo(/*0*/ s: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: String)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: String?)<!> {}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ x: kotlin.String): kotlin.Unit
|
||||
public fun foo(/*0*/ x: kotlin.String?): kotlin.Unit
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
interface A<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
interface B {
|
||||
fun foo(l: List<Int>) {}
|
||||
}
|
||||
|
||||
class C(f: A<String>): A<String> by <!ACCIDENTAL_OVERRIDE!>f<!>, B
|
||||
|
||||
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class D<!>(f: A<Int>): A<Int> by f, B
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package
|
||||
|
||||
public interface A</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface B {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C : A<kotlin.String>, B {
|
||||
public constructor C(/*0*/ f: A<kotlin.String>)
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class D : A<kotlin.Int>, B {
|
||||
public constructor D(/*0*/ f: A<kotlin.Int>)
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
interface A<T> {
|
||||
fun foo(l: List<T>)
|
||||
}
|
||||
|
||||
interface B {
|
||||
fun foo(l: List<Int>) {}
|
||||
}
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>C(f: A<String>)<!>: A<String> by f, B
|
||||
|
||||
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class D<!>(f: A<Int>): A<Int> by f, B
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package
|
||||
|
||||
public interface A</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface B {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C : A<kotlin.String>, B {
|
||||
public constructor C(/*0*/ f: A<kotlin.String>)
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*1*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class D : A<kotlin.Int>, B {
|
||||
public constructor D(/*0*/ f: A<kotlin.Int>)
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*delegation*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
interface Bar<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
class Baz(): Foo<String>, Bar<Int> {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun foo(l: List<Long>)<!> {}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public interface Bar</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Baz : Foo<kotlin.String>, Bar<kotlin.Int> {
|
||||
public constructor Baz()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public final fun foo(/*0*/ l: kotlin.collections.List<kotlin.Long>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// TARGET_BACKEND: JVM_OLD
|
||||
|
||||
interface Foo<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
interface Bar<T> {
|
||||
fun foo(l: List<T>) {}
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>Baz()<!>: Foo<String>, Bar<Int> {
|
||||
<!ACCIDENTAL_OVERRIDE, CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Long>)<!> {}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public interface Bar</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Baz : Foo<kotlin.String>, Bar<kotlin.Int> {
|
||||
public constructor Baz()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
public final fun foo(/*0*/ l: kotlin.collections.List<kotlin.Long>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ l: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Foo</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ l: kotlin.collections.List<T>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: java.lang.String)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: String)<!> {}
|
||||
compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeMappedToJava.txt
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ s: java.lang.String): kotlin.Unit
|
||||
public fun foo(/*0*/ s: kotlin.String): kotlin.Unit
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T<!> {null!!}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Any): Any<!> {null!!}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ T> foo(/*0*/ x: T): T
|
||||
public fun foo(/*0*/ x: kotlin.Any): kotlin.Any
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
interface Foo
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T: Foo> foo(x: T): T<!> {null!!}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ x: Foo): Foo
|
||||
public fun </*0*/ T : Foo> foo(/*0*/ x: T): T
|
||||
|
||||
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
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
interface Foo
|
||||
interface Bar
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T<!> where T: Foo, T: Bar {null!!}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
|
||||
fun foo(x: Bar): Bar {null!!}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ x: Bar): Bar
|
||||
public fun foo(/*0*/ x: Foo): Foo
|
||||
public fun </*0*/ T : Foo> foo(/*0*/ x: T): T where T : Bar
|
||||
|
||||
public interface Bar {
|
||||
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
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
interface Foo
|
||||
interface Bar
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T<!> where T: Foo, T: Bar {null!!}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
|
||||
fun foo(x: Bar): Bar {null!!}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ x: Bar): Bar
|
||||
public fun foo(/*0*/ x: Foo): Foo
|
||||
public fun </*0*/ T : Foo> foo(/*0*/ x: T): T where T : Bar
|
||||
|
||||
public interface Bar {
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user