[FE 1.0] Prohibit array literals inside nested objects of annotation classes

^KT-39041
^KT-50749 Fixed
This commit is contained in:
Dmitriy Novozhilov
2022-01-12 11:29:10 +03:00
committed by teamcity
parent c1575edca4
commit 139a800ff7
14 changed files with 384 additions and 6 deletions
@@ -0,0 +1,48 @@
// LANGUAGE: +ProhibitArrayLiteralsInCompanionOfAnnotation
// ISSUE: KT-39041
annotation class Ann(val x: IntArray = [1, 2, 3]) { // OK
companion object {
val y1: IntArray = [1, 2, 3] // Error
val z1: IntArray
get() = [1, 2, 3] // Error
fun test_1(): IntArray {
return [1, 2, 3] // Error
}
class Nested {
val y2: IntArray = [1, 2, 3] // Error
val z2: IntArray
get() = [1, 2, 3] // Error
fun test_2(): IntArray {
return [1, 2, 3] // Error
}
}
}
object Foo {
val y3: IntArray = [1, 2, 3] // Error
val z3: IntArray
get() = [1, 2, 3] // Error
fun test_3(): IntArray {
return [1, 2, 3] // Error
}
}
class Nested {
val y4: IntArray = [1, 2, 3] // Error
val z4: IntArray
get() = [1, 2, 3] // Error
fun test_4(): IntArray {
return [1, 2, 3] // Error
}
}
}
@@ -0,0 +1,48 @@
// LANGUAGE: +ProhibitArrayLiteralsInCompanionOfAnnotation
// ISSUE: KT-39041
annotation class Ann(val x: IntArray = [1, 2, 3]) { // OK
companion object {
val y1: IntArray = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
val z1: IntArray
get() = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
fun test_1(): IntArray {
return <!UNSUPPORTED!>[1, 2, 3]<!> // Error
}
class Nested {
val y2: IntArray = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
val z2: IntArray
get() = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
fun test_2(): IntArray {
return <!UNSUPPORTED!>[1, 2, 3]<!> // Error
}
}
}
object Foo {
val y3: IntArray = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
val z3: IntArray
get() = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
fun test_3(): IntArray {
return <!UNSUPPORTED!>[1, 2, 3]<!> // Error
}
}
class Nested {
val y4: IntArray = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
val z4: IntArray
get() = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
fun test_4(): IntArray {
return <!UNSUPPORTED!>[1, 2, 3]<!> // Error
}
}
}
@@ -0,0 +1,49 @@
package
public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.IntArray = ...)
public final val x: kotlin.IntArray
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 y1: kotlin.IntArray
public final val z1: kotlin.IntArray
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_1(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class Nested {
public constructor Nested()
public final val y2: kotlin.IntArray
public final val z2: kotlin.IntArray
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_2(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public object Foo {
private constructor Foo()
public final val y3: kotlin.IntArray
public final val z3: kotlin.IntArray
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_3(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Nested {
public constructor Nested()
public final val y4: kotlin.IntArray
public final val z4: kotlin.IntArray
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_4(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,48 @@
// LANGUAGE: -ProhibitArrayLiteralsInCompanionOfAnnotation
// ISSUE: KT-39041
annotation class Ann(val x: IntArray = [1, 2, 3]) { // OK
companion object {
val y1: IntArray = [1, 2, 3] // Error
val z1: IntArray
get() = [1, 2, 3] // Error
fun test_1(): IntArray {
return [1, 2, 3] // Error
}
class Nested {
val y2: IntArray = [1, 2, 3] // Error
val z2: IntArray
get() = [1, 2, 3] // Error
fun test_2(): IntArray {
return [1, 2, 3] // Error
}
}
}
object Foo {
val y3: IntArray = [1, 2, 3] // Error
val z3: IntArray
get() = [1, 2, 3] // Error
fun test_3(): IntArray {
return [1, 2, 3] // Error
}
}
class Nested {
val y4: IntArray = [1, 2, 3] // Error
val z4: IntArray
get() = [1, 2, 3] // Error
fun test_4(): IntArray {
return [1, 2, 3] // Error
}
}
}
@@ -0,0 +1,48 @@
// LANGUAGE: -ProhibitArrayLiteralsInCompanionOfAnnotation
// ISSUE: KT-39041
annotation class Ann(val x: IntArray = [1, 2, 3]) { // OK
companion object {
val y1: IntArray = <!UNSUPPORTED_WARNING!>[1, 2, 3]<!> // Error
val z1: IntArray
get() = <!UNSUPPORTED_WARNING!>[1, 2, 3]<!> // Error
fun test_1(): IntArray {
return <!UNSUPPORTED_WARNING!>[1, 2, 3]<!> // Error
}
class Nested {
val y2: IntArray = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
val z2: IntArray
get() = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
fun test_2(): IntArray {
return <!UNSUPPORTED!>[1, 2, 3]<!> // Error
}
}
}
object Foo {
val y3: IntArray = <!UNSUPPORTED_WARNING!>[1, 2, 3]<!> // Error
val z3: IntArray
get() = <!UNSUPPORTED_WARNING!>[1, 2, 3]<!> // Error
fun test_3(): IntArray {
return <!UNSUPPORTED_WARNING!>[1, 2, 3]<!> // Error
}
}
class Nested {
val y4: IntArray = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
val z4: IntArray
get() = <!UNSUPPORTED!>[1, 2, 3]<!> // Error
fun test_4(): IntArray {
return <!UNSUPPORTED!>[1, 2, 3]<!> // Error
}
}
}
@@ -0,0 +1,50 @@
package
public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.IntArray = ...)
public final val x: kotlin.IntArray
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 y1: kotlin.IntArray
public final val z1: kotlin.IntArray
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_1(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final class Nested {
public constructor Nested()
public final val y2: kotlin.IntArray
public final val z2: kotlin.IntArray
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_2(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public object Foo {
private constructor Foo()
public final val y3: kotlin.IntArray
public final val z3: kotlin.IntArray
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_3(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Nested {
public constructor Nested()
public final val y4: kotlin.IntArray
public final val z4: kotlin.IntArray
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_4(): kotlin.IntArray
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}