Report the error when a declaration in Kotlin accidentally overrides a static member from Java

This commit is contained in:
Zalim Bashorov
2015-10-09 21:40:33 +03:00
parent 72a686f9e0
commit 79d38a6c8f
26 changed files with 756 additions and 14 deletions
@@ -0,0 +1,31 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: A.java
public class A {
public static void foo() {}
public static void baz(String s) {}
}
// FILE: B.java
public class B extends A {
public static void bar(int i) {}
}
// FILE: K.kt
open class K : B() {
companion object {
<!ACCIDENTAL_OVERRIDE!>@JvmStatic
fun foo()<!> {}
@JvmStatic
fun foo(a: Any) {}
<!ACCIDENTAL_OVERRIDE!>@JvmStatic
fun bar(i: Int)<!> {}
@JvmStatic
fun bar(i: String) {}
@JvmStatic
fun baz(i: Int) {}
}
}
@@ -0,0 +1,43 @@
package
public open class A {
public 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
// Static members
public open fun baz(/*0*/ s: kotlin.String!): kotlin.Unit
public open fun foo(): kotlin.Unit
}
public open class B : A {
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
// Static members
public open fun bar(/*0*/ i: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun baz(/*0*/ s: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
}
public open class K : B {
public constructor K()
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()
@kotlin.jvm.JvmStatic() public final fun bar(/*0*/ i: kotlin.Int): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun bar(/*0*/ i: kotlin.String): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun baz(/*0*/ i: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.jvm.JvmStatic() public final fun foo(): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun foo(/*0*/ a: kotlin.Any): 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,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: A.java
public class A {
public static void foo() {}
public static void baz(String s) {}
}
// FILE: K.kt
open class K : A() {
companion object {
<!ACCIDENTAL_OVERRIDE!>@JvmStatic
fun foo()<!> {}
@JvmStatic
fun foo(i: Int) {}
@JvmStatic
fun baz(i: Int) {}
}
}
@@ -0,0 +1,29 @@
package
public open class A {
public 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
// Static members
public open fun baz(/*0*/ s: kotlin.String!): kotlin.Unit
public open fun foo(): kotlin.Unit
}
public open class K : A {
public constructor K()
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()
@kotlin.jvm.JvmStatic() public final fun baz(/*0*/ i: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.jvm.JvmStatic() public final fun foo(): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun foo(/*0*/ i: kotlin.Int): 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,36 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: A.java
public class A {
public static void foo() {}
public static void baz(String s) {}
}
// FILE: B.kt
open class B : A() {
}
// FILE: C.java
public class C extends B {
public static void bar(int i) {}
}
// FILE: K.kt
open class K : C() {
companion object {
<!ACCIDENTAL_OVERRIDE!>@JvmStatic
fun foo()<!> {}
@JvmStatic
fun foo(a: Any) {}
<!ACCIDENTAL_OVERRIDE!>@JvmStatic
fun bar(i: Int)<!> {}
@JvmStatic
fun bar(i: String) {}
@JvmStatic
fun baz(i: Int) {}
}
}
@@ -0,0 +1,50 @@
package
public open class A {
public 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
// Static members
public open fun baz(/*0*/ s: kotlin.String!): kotlin.Unit
public open fun foo(): kotlin.Unit
}
public open class B : A {
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 open class C : B {
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
// Static members
public open fun bar(/*0*/ i: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun baz(/*0*/ s: kotlin.String!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
}
public open class K : C {
public constructor K()
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()
@kotlin.jvm.JvmStatic() public final fun bar(/*0*/ i: kotlin.Int): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun bar(/*0*/ i: kotlin.String): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun baz(/*0*/ i: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.jvm.JvmStatic() public final fun foo(): kotlin.Unit
@kotlin.jvm.JvmStatic() public final fun foo(/*0*/ a: kotlin.Any): 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,22 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: foo/A.java
package foo;
public class A {
private static void foo(int s) {}
static void bar(double s) {}
}
// FILE: K.kt
import foo.A
open class K : A() {
companion object {
@JvmStatic
fun foo(i: Int) {}
@JvmStatic
fun bar(d: Double) {}
}
}
@@ -0,0 +1,17 @@
package
public open class K : foo.A {
public constructor K()
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()
@kotlin.jvm.JvmStatic() public final fun bar(/*0*/ d: kotlin.Double): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.jvm.JvmStatic() public final fun foo(/*0*/ i: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}