Allow to use @JvmStatic in interface companion object

This commit is contained in:
Mikhael Bogdanov
2018-01-23 11:22:58 +01:00
parent 2340756b88
commit c4da370b0b
21 changed files with 483 additions and 23 deletions
@@ -1,3 +1,3 @@
class A(<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic val z: Int<!>) {
class A(<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic val z: Int<!>) {
}
@@ -14,20 +14,20 @@ class A {
fun test() {
val s = object {
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic fun a3()<!> {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a3()<!> {
}
}
}
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic fun a4()<!> {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a4()<!> {
}
}
interface B {
companion object {
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic fun a1()<!> {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a1()<!> {
}
}
@@ -40,13 +40,13 @@ interface B {
fun test() {
val s = object {
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic fun a3()<!> {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a3()<!> {
}
}
}
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic fun a4()<!> {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a4()<!> {
}
}
@@ -0,0 +1,53 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// !LANGUAGE: +JvmStaticInInterface
class A {
companion object {
@JvmStatic fun a1() {
}
}
object A {
@JvmStatic fun a2() {
}
}
fun test() {
val s = object {
<!JVM_STATIC_NOT_IN_OBJECT_OR_COMPANION!>@JvmStatic fun a3()<!> {
}
}
}
<!JVM_STATIC_NOT_IN_OBJECT_OR_COMPANION!>@JvmStatic fun a4()<!> {
}
}
interface B {
companion object {
<!JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic fun a1()<!> {
}
}
object A {
@JvmStatic fun a2() {
}
}
fun test() {
val s = object {
<!JVM_STATIC_NOT_IN_OBJECT_OR_COMPANION!>@JvmStatic fun a3()<!> {
}
}
}
<!JVM_STATIC_NOT_IN_OBJECT_OR_COMPANION!>@JvmStatic fun a4()<!> {
}
}
@@ -0,0 +1,50 @@
package
public final class A {
public constructor A()
@kotlin.jvm.JvmStatic public final fun a4(): 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 final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public object A {
private constructor A()
@kotlin.jvm.JvmStatic public final fun a2(): 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
}
public companion object Companion {
private constructor Companion()
@kotlin.jvm.JvmStatic public final fun a1(): 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
}
}
public interface B {
@kotlin.jvm.JvmStatic public open fun a4(): 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 fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public object A {
private constructor A()
@kotlin.jvm.JvmStatic public final fun a2(): 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
}
public companion object Companion {
private constructor Companion()
@kotlin.jvm.JvmStatic public final fun a1(): 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,24 @@
package
public interface 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 companion object Companion {
private constructor Companion()
@kotlin.jvm.JvmStatic public final var foo: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo1: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo2: kotlin.Int
@kotlin.jvm.JvmStatic private final var foo3: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo4: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo5: kotlin.Int
@kotlin.jvm.JvmStatic public final fun a1(): kotlin.Unit
@kotlin.jvm.JvmStatic internal final fun a4(): kotlin.Unit
@kotlin.jvm.JvmStatic private final fun a4(): kotlin.Unit
@kotlin.jvm.JvmStatic protected final fun a4(): 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,53 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
interface B {
companion object {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a1()<!> {
}
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic private fun a2()<!> {
}
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic protected fun a3()<!> {
}
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic internal fun a4()<!> {
}
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
var foo<!> = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
var foo1<!> = 1
protected set
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
var foo2<!> = 1
private set
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
private var foo3<!> = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
protected var foo4<!> = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
protected var foo5<!> = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic
val foo6<!> = 1
val foo7 = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic get<!>
private var foo8 = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set<!>
public var foo9 = 1
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic private set<!>
}
}
@@ -0,0 +1,28 @@
package
public interface 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 companion object Companion {
private constructor Companion()
@kotlin.jvm.JvmStatic public final var foo: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo1: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo2: kotlin.Int
@kotlin.jvm.JvmStatic private final var foo3: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo4: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo5: kotlin.Int
@kotlin.jvm.JvmStatic public final val foo6: kotlin.Int = 1
public final val foo7: kotlin.Int = 1
private final var foo8: kotlin.Int
public final var foo9: kotlin.Int
@kotlin.jvm.JvmStatic public final fun a1(): kotlin.Unit
@kotlin.jvm.JvmStatic private final fun a2(): kotlin.Unit
@kotlin.jvm.JvmStatic protected final fun a3(): kotlin.Unit
@kotlin.jvm.JvmStatic internal final fun a4(): 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,55 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// !LANGUAGE: +JvmStaticInInterface
interface B {
companion object {
<!JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic fun a1()<!> {
}
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic private fun a2()<!> {
}
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic protected fun a3()<!> {
}
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic internal fun a4()<!> {
}
<!JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
var foo<!> = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
var foo1<!> = 1
protected set
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
var foo2<!> = 1
private set
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
private var foo3<!> = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
protected var foo4<!> = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
protected var foo5<!> = 1
<!JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic
val foo6<!> = 1
val foo7 = 1
<!JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic get<!>
private var foo8 = 1
<!JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set<!>
public var foo9 = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER, JVM_STATIC_IN_INTERFACE_1_6!>@JvmStatic private set<!>
}
}
@@ -0,0 +1,28 @@
package
public interface 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 companion object Companion {
private constructor Companion()
@kotlin.jvm.JvmStatic public final var foo: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo1: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo2: kotlin.Int
@kotlin.jvm.JvmStatic private final var foo3: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo4: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo5: kotlin.Int
@kotlin.jvm.JvmStatic public final val foo6: kotlin.Int = 1
public final val foo7: kotlin.Int = 1
private final var foo8: kotlin.Int
public final var foo9: kotlin.Int
@kotlin.jvm.JvmStatic public final fun a1(): kotlin.Unit
@kotlin.jvm.JvmStatic private final fun a2(): kotlin.Unit
@kotlin.jvm.JvmStatic protected final fun a3(): kotlin.Unit
@kotlin.jvm.JvmStatic internal final fun a4(): 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,56 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// !LANGUAGE: +JvmStaticInInterface
// !JVM_TARGET: 1.8
interface B {
companion object {
@JvmStatic fun a1() {
}
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic private fun a2()<!> {
}
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic protected fun a3()<!> {
}
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic internal fun a4()<!> {
}
@JvmStatic
var foo = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic
var foo1<!> = 1
protected set
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic
var foo2<!> = 1
private set
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic
private var foo3<!> = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic
protected var foo4<!> = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic
protected var foo5<!> = 1
@JvmStatic
val foo6 = 1
val foo7 = 1
@JvmStatic get
private var foo8 = 1
@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set
public var foo9 = 1
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic private set<!>
}
}
@@ -0,0 +1,28 @@
package
public interface 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 companion object Companion {
private constructor Companion()
@kotlin.jvm.JvmStatic public final var foo: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo1: kotlin.Int
@kotlin.jvm.JvmStatic public final var foo2: kotlin.Int
@kotlin.jvm.JvmStatic private final var foo3: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo4: kotlin.Int
@kotlin.jvm.JvmStatic protected final var foo5: kotlin.Int
@kotlin.jvm.JvmStatic public final val foo6: kotlin.Int = 1
public final val foo7: kotlin.Int = 1
private final var foo8: kotlin.Int
public final var foo9: kotlin.Int
@kotlin.jvm.JvmStatic public final fun a1(): kotlin.Unit
@kotlin.jvm.JvmStatic private final fun a2(): kotlin.Unit
@kotlin.jvm.JvmStatic protected final fun a3(): kotlin.Unit
@kotlin.jvm.JvmStatic internal final fun a4(): 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
}
}
@@ -1,6 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
fun main(args: Array<String>) {
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic fun a()<!>{
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic fun a()<!>{
}
}
@@ -36,9 +36,9 @@ class A {
}
var p:Int = 1
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic set(p1: Int)<!> {
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic set(p1: Int)<!> {
p = 1
}
<!JVM_STATIC_NOT_IN_OBJECT!>@JvmStatic val z2<!> = 1;
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic val z2<!> = 1;
}