Targeted annotation diagnostic tests

This commit is contained in:
Yan Zhulanow
2015-07-17 22:43:35 +03:00
parent 8849d7d10a
commit b38b7071b7
15 changed files with 498 additions and 0 deletions
@@ -0,0 +1,34 @@
annotation class Ann
class CustomDelegate {
public fun get(thisRef: Any?, prop: PropertyMetadata): String = prop.name
}
<!INAPPLICABLE_FIELD_TARGET, WRONG_ANNOTATION_TARGET!>@field:Ann<!>
class SomeClass {
<!INAPPLICABLE_FIELD_TARGET, WRONG_ANNOTATION_TARGET!>@field:Ann<!>
constructor()
@field:Ann
protected val simpleProperty: String = "text"
@field:[Ann]
protected val simplePropertyWithAnnotationList: String = "text"
@field:Ann
protected val delegatedProperty: String by CustomDelegate()
<!INAPPLICABLE_FIELD_TARGET_NO_BACKING_FIELD!>@field:Ann<!>
val propertyWithCustomGetter: Int
get() = 5
<!INAPPLICABLE_FIELD_TARGET, WRONG_ANNOTATION_TARGET!>@field:Ann<!>
fun anotherFun(<!INAPPLICABLE_FIELD_TARGET!>@field:Ann<!> <!UNUSED_PARAMETER!>s<!>: String) {
<!INAPPLICABLE_FIELD_TARGET!>@field:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
}
class WithPrimaryConstructor(<!INAPPLICABLE_FIELD_TARGET!>@field:Ann<!> val a: String)
@@ -0,0 +1,36 @@
package
kotlin.annotation.annotation() internal final 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
}
internal final class CustomDelegate {
public constructor CustomDelegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun get(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@field:Ann() internal final class SomeClass {
@field:Ann() public constructor SomeClass()
@field:Ann() protected final val delegatedProperty: kotlin.String
@field:Ann() internal final val propertyWithCustomGetter: kotlin.Int
@field:Ann() protected final val simpleProperty: kotlin.String = "text"
@field:Ann() protected final val simplePropertyWithAnnotationList: kotlin.String = "text"
@field:Ann() internal final fun anotherFun(/*0*/ @field:Ann() s: kotlin.String): 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
}
internal final class WithPrimaryConstructor {
public constructor WithPrimaryConstructor(/*0*/ @field:Ann() a: kotlin.String)
@field:Ann() internal final val a: 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
}
@@ -0,0 +1,37 @@
annotation class Ann
class CustomDelegate {
public fun get(thisRef: Any?, prop: PropertyMetadata): String = prop.name
}
<!INAPPLICABLE_GET_TARGET, WRONG_ANNOTATION_TARGET!>@get:Ann<!>
class SomeClass {
<!INAPPLICABLE_GET_TARGET, WRONG_ANNOTATION_TARGET!>@get:Ann<!>
constructor()
@get:Ann
protected val simpleProperty: String = "text"
@get:Ann
protected var mutableProperty: String = "text"
@get:[Ann]
protected val simplePropertyWithAnnotationList: String = "text"
@get:Ann
protected val delegatedProperty: String by CustomDelegate()
@get:Ann
val propertyWithCustomGetter: Int
get() = 5
<!INAPPLICABLE_GET_TARGET, WRONG_ANNOTATION_TARGET!>@get:Ann<!>
fun annotationOnFunction(a: Int) = a + 5
fun anotherFun() {
<!INAPPLICABLE_GET_TARGET!>@get:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
}
@@ -0,0 +1,30 @@
package
kotlin.annotation.annotation() internal final 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
}
internal final class CustomDelegate {
public constructor CustomDelegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun get(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@get:Ann() internal final class SomeClass {
@get:Ann() public constructor SomeClass()
@get:Ann() protected final val delegatedProperty: kotlin.String
@get:Ann() protected final var mutableProperty: kotlin.String
@get:Ann() internal final val propertyWithCustomGetter: kotlin.Int
@get:Ann() protected final val simpleProperty: kotlin.String = "text"
@get:Ann() protected final val simplePropertyWithAnnotationList: kotlin.String = "text"
@get:Ann() internal final fun annotationOnFunction(/*0*/ a: kotlin.Int): kotlin.Int
internal final fun anotherFun(): 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 @@
annotation class Ann
annotation class Second
<!INAPPLICABLE_SPARAM_TARGET, WRONG_ANNOTATION_TARGET!>@param:Ann<!>
class SomeClass {
<!INAPPLICABLE_SPARAM_TARGET, WRONG_ANNOTATION_TARGET!>@param:Ann<!>
constructor(<!INAPPLICABLE_SPARAM_TARGET!>@param:Ann<!> <!UNUSED_PARAMETER!>a<!>: String)
<!INAPPLICABLE_SPARAM_TARGET!>@param:Ann<!>
protected val simpleProperty: String = "text"
<!INAPPLICABLE_SPARAM_TARGET!>@param:Ann<!>
fun anotherFun() {
<!INAPPLICABLE_SPARAM_TARGET!>@param:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
}
class PrimaryConstructorClass(
@param:Ann <!UNUSED_PARAMETER!>a<!>: String,
@param:[Ann Second] <!UNUSED_PARAMETER!>b<!>: String,
@param:Ann val <!UNUSED_PARAMETER!>c<!>: String)
@@ -0,0 +1,31 @@
package
kotlin.annotation.annotation() internal final 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
}
internal final class PrimaryConstructorClass {
public constructor PrimaryConstructorClass(/*0*/ @param:Ann() a: kotlin.String, /*1*/ @param:Ann() @param:Second() b: 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
}
kotlin.annotation.annotation() internal final class Second : kotlin.Annotation {
public constructor Second()
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
}
@param:Ann() internal final class SomeClass {
@param:Ann() public constructor SomeClass(/*0*/ @param:Ann() a: kotlin.String)
@param:Ann() protected final val simpleProperty: kotlin.String = "text"
@param:Ann() internal final fun anotherFun(): 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,37 @@
annotation class Ann
annotation class Second
class CustomDelegate {
public fun get(thisRef: Any?, prop: PropertyMetadata): String = prop.name
}
<!INAPPLICABLE_PROPERTY_TARGET, WRONG_ANNOTATION_TARGET!>@property:Ann<!>
class SomeClass {
<!INAPPLICABLE_PROPERTY_TARGET, WRONG_ANNOTATION_TARGET!>@property:Ann<!>
constructor(<!UNUSED_PARAMETER!>s<!>: String)
@property:Ann
protected val p1: String = ""
@property:[Ann Second]
protected val p2: String = ""
@property:Ann
protected var p3: String = ""
@property:Ann
protected val p4: String by CustomDelegate()
@property:Ann
var propertyWithCustomSetter: Int
get() = 5
set(v) {}
<!INAPPLICABLE_PROPERTY_TARGET, WRONG_ANNOTATION_TARGET!>@property:Ann<!>
fun anotherFun() {
<!INAPPLICABLE_PROPERTY_TARGET, WRONG_ANNOTATION_TARGET!>@property:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
}
@@ -0,0 +1,36 @@
package
kotlin.annotation.annotation() internal final 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
}
internal final class CustomDelegate {
public constructor CustomDelegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun get(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
kotlin.annotation.annotation() internal final class Second : kotlin.Annotation {
public constructor Second()
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
}
@property:Ann() internal final class SomeClass {
@property:Ann() public constructor SomeClass(/*0*/ s: kotlin.String)
@property:Ann() protected final val p1: kotlin.String = ""
@property:Ann() @property:Second() protected final val p2: kotlin.String = ""
@property:Ann() protected final var p3: kotlin.String
@property:Ann() protected final val p4: kotlin.String
@property:Ann() internal final var propertyWithCustomSetter: kotlin.Int
@property:Ann() internal final fun anotherFun(): 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,28 @@
annotation class Ann
<!INAPPLICABLE_RECEIVER_TARGET, WRONG_ANNOTATION_TARGET!>@receiver:Ann<!>
class SomeClass {
<!INAPPLICABLE_RECEIVER_TARGET, WRONG_ANNOTATION_TARGET!>@receiver:Ann<!>
constructor(<!INAPPLICABLE_RECEIVER_TARGET!>@receiver:Ann<!> <!UNUSED_PARAMETER!>a<!>: String)
<!INAPPLICABLE_RECEIVER_TARGET!>@receiver:Ann<!>
protected val simpleProperty: String = "text"
<!INAPPLICABLE_RECEIVER_TARGET!>@receiver:Ann<!>
fun anotherFun() {
<!INAPPLICABLE_RECEIVER_TARGET!>@receiver:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
@receiver:Ann
val String.extensionProperty2: String
get() = "A"
}
@receiver:Ann
fun String.length2() = length()
@receiver:Ann
val String.extensionProperty: String
get() = "A"
@@ -0,0 +1,20 @@
package
@receiver:Ann() internal val kotlin.String.extensionProperty: kotlin.String
@receiver:Ann() internal fun kotlin.String.length2(): kotlin.Int
kotlin.annotation.annotation() internal final 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
}
@receiver:Ann() internal final class SomeClass {
@receiver:Ann() public constructor SomeClass(/*0*/ @receiver:Ann() a: kotlin.String)
@receiver:Ann() protected final val simpleProperty: kotlin.String = "text"
@receiver:Ann() internal final fun anotherFun(): 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,36 @@
annotation class Ann
class CustomDelegate {
public fun get(thisRef: Any?, prop: PropertyMetadata): String = prop.name
fun set(thisRef: Any?, prop: PropertyMetadata, value: String) {}
}
<!INAPPLICABLE_SET_TARGET, WRONG_ANNOTATION_TARGET!>@set:Ann<!>
class SomeClass {
<!INAPPLICABLE_TARGET_PROPERTY_IMMUTABLE!>@set:Ann<!>
protected val simpleProperty: String = "text"
@set:Ann
protected var mutableProperty: String = "text"
@set:[Ann]
protected var mutablePropertyWithAnnotationList: String = "text"
@set:Ann
protected var delegatedProperty: String by CustomDelegate()
@set:Ann
var propertyWithCustomSetter: Int
get() = 5
set(v) {}
<!INAPPLICABLE_SET_TARGET, WRONG_ANNOTATION_TARGET!>@set:Ann<!>
fun annotationOnFunction(a: Int) = a + 5
fun anotherFun() {
<!INAPPLICABLE_SET_TARGET!>@set:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
}
@@ -0,0 +1,31 @@
package
kotlin.annotation.annotation() internal final 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
}
internal final class CustomDelegate {
public constructor CustomDelegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun get(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun set(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata, /*2*/ value: kotlin.String): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@set:Ann() internal final class SomeClass {
public constructor SomeClass()
@set:Ann() protected final var delegatedProperty: kotlin.String
@set:Ann() protected final var mutableProperty: kotlin.String
@set:Ann() protected final var mutablePropertyWithAnnotationList: kotlin.String
@set:Ann() internal final var propertyWithCustomSetter: kotlin.Int
@set:Ann() protected final val simpleProperty: kotlin.String = "text"
@set:Ann() internal final fun annotationOnFunction(/*0*/ a: kotlin.Int): kotlin.Int
internal final fun anotherFun(): 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,37 @@
annotation class Ann
class CustomDelegate {
public fun get(thisRef: Any?, prop: PropertyMetadata): String = prop.name
fun set(thisRef: Any?, prop: PropertyMetadata, value: String) {}
}
<!INAPPLICABLE_SPARAM_TARGET, WRONG_ANNOTATION_TARGET!>@sparam:Ann<!>
class SomeClass {
<!INAPPLICABLE_SPARAM_TARGET, WRONG_ANNOTATION_TARGET!>@sparam:Ann<!>
constructor()
<!INAPPLICABLE_TARGET_PROPERTY_IMMUTABLE!>@sparam:Ann<!>
protected val simpleProperty: String = "text"
@sparam:Ann
protected var mutableProperty: String = "text"
@sparam:[Ann]
protected var mutablePropertyWithAnnotationList: String = "text"
@sparam:Ann
protected var delegatedProperty: String by CustomDelegate()
@sparam:Ann
var propertyWithCustomSetter: Int
get() = 5
set(v) {}
<!INAPPLICABLE_SPARAM_TARGET!>@sparam:Ann<!>
fun anotherFun() {
<!INAPPLICABLE_SPARAM_TARGET!>@sparam:Ann<!>
val <!UNUSED_VARIABLE!>localVariable<!> = 5
}
}
@@ -0,0 +1,30 @@
package
kotlin.annotation.annotation() internal final 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
}
internal final class CustomDelegate {
public constructor CustomDelegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun get(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun set(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.PropertyMetadata, /*2*/ value: kotlin.String): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@sparam:Ann() internal final class SomeClass {
@sparam:Ann() public constructor SomeClass()
@sparam:Ann() protected final var delegatedProperty: kotlin.String
@sparam:Ann() protected final var mutableProperty: kotlin.String
@sparam:Ann() protected final var mutablePropertyWithAnnotationList: kotlin.String
@sparam:Ann() internal final var propertyWithCustomSetter: kotlin.Int
@sparam:Ann() protected final val simpleProperty: kotlin.String = "text"
@sparam:Ann() internal final fun anotherFun(): 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
}