Noarg: prohibit noarg for inner and local classes

Report warning if old JVM backend is used, and error for JVM IR, which
is supposed to be enabled as default in the next Kotlin release.

 #KT-43725 Fixed
This commit is contained in:
Alexander Udalov
2020-11-26 17:44:29 +01:00
parent a343fffe9e
commit a06bffc4b9
13 changed files with 177 additions and 21 deletions
@@ -0,0 +1,14 @@
annotation class NoArg
class Outer {
@NoArg
inner class <!NOARG_ON_INNER_CLASS!>Inner<!>(val b: Any)
}
fun local() {
@NoArg
class <!NOARG_ON_LOCAL_CLASS!>Local<!>(val l: Any) {
@NoArg
inner class <!NOARG_ON_INNER_CLASS!>InnerLocal<!>(val x: Any)
}
}
@@ -0,0 +1,25 @@
package
public fun local(): kotlin.Unit
public final annotation class NoArg : kotlin.Annotation {
public constructor NoArg()
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 Outer {
public constructor Outer()
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
@NoArg public final inner class Inner {
public constructor Inner(/*0*/ b: kotlin.Any)
public final val b: 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,6 @@
annotation class NoArg
open class Base(val s: String)
@NoArg
class <!NO_NOARG_CONSTRUCTOR_IN_SUPERCLASS!>Derived<!>(s: String) : Base(s)
@@ -0,0 +1,24 @@
package
public open class Base {
public constructor Base(/*0*/ s: kotlin.String)
public final val s: kotlin.String
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
}
@NoArg public final class Derived : Base {
public constructor Derived(/*0*/ s: kotlin.String)
public final override /*1*/ /*fake_override*/ val s: kotlin.String
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 annotation class NoArg : kotlin.Annotation {
public constructor NoArg()
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
}