Warn about annotations that targets non-existing accessors
#KT-15453 In Progress
This commit is contained in:
compiler/testData/diagnostics/testsWithStdLib/annotations/annotationsTargetingNonExistentAccessor.kt
Vendored
+116
@@ -0,0 +1,116 @@
|
||||
// Please make sure that this test is consistent with the blackbox test "annotationsOnNonExistentAccessors.kt"
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
annotation class Ann
|
||||
annotation class AnnRepeat
|
||||
|
||||
class Foo(
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!> private val y0: Int,
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!> private vararg val y1: String
|
||||
) {
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
private val x1 = ""
|
||||
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@set:Ann<!>
|
||||
private var x2 = ""
|
||||
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@setparam:Ann<!>
|
||||
private var x3 = ""
|
||||
|
||||
@setparam:[<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>Ann<!> <!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>AnnRepeat<!>]
|
||||
private var x4 = ""
|
||||
|
||||
@get:Ann
|
||||
internal val x5 = ""
|
||||
|
||||
@get:Ann
|
||||
protected val x6 = ""
|
||||
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
private val x7: String = ""
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@AnnRepeat<!> get
|
||||
|
||||
@get:Ann
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@set:Ann<!>
|
||||
private var x8: String = ""
|
||||
get() { return "" }
|
||||
|
||||
@get:Ann
|
||||
@set:Ann
|
||||
private var x9: String = ""
|
||||
get() { return "" }
|
||||
set(f) { field = f }
|
||||
}
|
||||
|
||||
private class EffetivelyPrivate private constructor(
|
||||
@get:Ann val x0: Int,
|
||||
@get:Ann protected val x1: Int,
|
||||
@get:Ann internal val x2: Int
|
||||
) {
|
||||
private class Nested {
|
||||
@get:Ann
|
||||
val fofo = 0
|
||||
}
|
||||
}
|
||||
|
||||
class PrivateToThis<in I> {
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@set:Ann<!>
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@setparam:Ann<!>
|
||||
private var x0: I = TODO()
|
||||
}
|
||||
|
||||
class Statics {
|
||||
@get:Ann
|
||||
lateinit var y0: String
|
||||
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
private lateinit var y1: String
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
val x0 = ""
|
||||
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
const val x1 = ""
|
||||
|
||||
@JvmStatic
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
val x2 = ""
|
||||
|
||||
@JvmStatic
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@get:Ann<!>
|
||||
private val x3 = ""
|
||||
}
|
||||
}
|
||||
|
||||
private class Other(@param:Ann private val param: Int) {
|
||||
@property:Ann
|
||||
@field:Ann
|
||||
private val other = ""
|
||||
|
||||
private fun @receiver:Ann Int.receiver() {}
|
||||
|
||||
@delegate:Ann
|
||||
@get:Ann
|
||||
private val delegate by CustomDelegate()
|
||||
}
|
||||
|
||||
class CustomDelegate {
|
||||
operator fun getValue(thisRef: Any?, prop: KProperty<*>): String = prop.name
|
||||
}
|
||||
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class SourceAnn
|
||||
|
||||
class WithSource {
|
||||
@get:SourceAnn
|
||||
@set:SourceAnn
|
||||
@setparam:SourceAnn
|
||||
private var x0 = ""
|
||||
|
||||
private val x1 = ""
|
||||
@SourceAnn get
|
||||
}
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
package
|
||||
|
||||
public final annotation class Ann : kotlin.Annotation {
|
||||
public constructor Ann()
|
||||
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 AnnRepeat : kotlin.Annotation {
|
||||
public constructor AnnRepeat()
|
||||
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 CustomDelegate {
|
||||
public constructor CustomDelegate()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final operator fun getValue(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.reflect.KProperty<*>): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
private final class EffetivelyPrivate {
|
||||
private constructor EffetivelyPrivate(/*0*/ x0: kotlin.Int, /*1*/ x1: kotlin.Int, /*2*/ x2: kotlin.Int)
|
||||
public final val x0: kotlin.Int
|
||||
protected final val x1: kotlin.Int
|
||||
internal final val x2: kotlin.Int
|
||||
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
|
||||
|
||||
private final class Nested {
|
||||
public constructor Nested()
|
||||
public final val fofo: kotlin.Int = 0
|
||||
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 Foo {
|
||||
public constructor Foo(/*0*/ y0: kotlin.Int, /*1*/ vararg y1: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
private final val x1: kotlin.String = ""
|
||||
private final var x2: kotlin.String
|
||||
@setparam:Ann private final var x3: kotlin.String
|
||||
@setparam:Ann @setparam:AnnRepeat private final var x4: kotlin.String
|
||||
internal final val x5: kotlin.String = ""
|
||||
protected final val x6: kotlin.String = ""
|
||||
private final val x7: kotlin.String = ""
|
||||
private final var x8: kotlin.String
|
||||
private final var x9: kotlin.String
|
||||
private final val y0: kotlin.Int
|
||||
private final val y1: kotlin.Array<out 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
|
||||
}
|
||||
|
||||
private final class Other {
|
||||
public constructor Other(/*0*/ @param:Ann param: kotlin.Int)
|
||||
@delegate:Ann private final val delegate: kotlin.String
|
||||
@property:Ann @field:Ann private final val other: kotlin.String = ""
|
||||
private final val param: kotlin.Int
|
||||
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
|
||||
private final fun @receiver:Ann kotlin.Int.receiver(): kotlin.Unit
|
||||
}
|
||||
|
||||
public final class PrivateToThis</*0*/ in I> {
|
||||
public constructor PrivateToThis</*0*/ in I>()
|
||||
@setparam:Ann private/*private to this*/ final var x0: I
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class SourceAnn : kotlin.Annotation {
|
||||
public constructor SourceAnn()
|
||||
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 Statics {
|
||||
public constructor Statics()
|
||||
public final lateinit var y0: kotlin.String
|
||||
private final lateinit var y1: 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 companion object Companion {
|
||||
private constructor Companion()
|
||||
@kotlin.jvm.JvmField public final val x0: kotlin.String = ""
|
||||
public const final val x1: kotlin.String = ""
|
||||
@kotlin.jvm.JvmStatic public final val x2: kotlin.String = ""
|
||||
@kotlin.jvm.JvmStatic private final val x3: 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 class WithSource {
|
||||
public constructor WithSource()
|
||||
@setparam:SourceAnn private final var x0: kotlin.String
|
||||
private final val x1: 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
|
||||
}
|
||||
Vendored
+2
-2
@@ -37,11 +37,11 @@ abstract class C : I{
|
||||
|
||||
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
|
||||
val explicitDefaultAnnotatedGetter: String = ""
|
||||
@DemoAnnotation get
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@DemoAnnotation<!> get
|
||||
|
||||
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
|
||||
var explicitDefaultAnnotatedSetter: String = ""
|
||||
@DemoAnnotation set
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@DemoAnnotation<!> set
|
||||
|
||||
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
|
||||
var customSetter: String = ""
|
||||
|
||||
Vendored
+1
-1
@@ -45,7 +45,7 @@ interface B {
|
||||
<!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<!>
|
||||
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!><!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@JvmStatic<!> <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set<!>
|
||||
|
||||
public var foo9 = 1
|
||||
<!JVM_STATIC_NOT_IN_OBJECT_OR_CLASS_COMPANION!>@JvmStatic private set<!>
|
||||
|
||||
Vendored
+1
-1
@@ -45,7 +45,7 @@ interface B {
|
||||
<!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<!>
|
||||
<!JVM_STATIC_IN_INTERFACE_1_6!><!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@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<!>
|
||||
|
||||
Vendored
+1
-1
@@ -46,7 +46,7 @@ interface B {
|
||||
@JvmStatic get
|
||||
|
||||
private var foo8 = 1
|
||||
@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set
|
||||
<!ANNOTATION_TARGETS_NON_EXISTENT_ACCESSOR!>@JvmStatic<!> <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set
|
||||
|
||||
public var foo9 = 1
|
||||
<!JVM_STATIC_ON_NON_PUBLIC_MEMBER!>@JvmStatic private set<!>
|
||||
|
||||
Reference in New Issue
Block a user