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
}
@@ -1193,6 +1193,57 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
}
}
}
@TestMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class WithUseSiteTarget extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInWithUseSiteTarget() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("FieldAnnotations.kt")
public void testFieldAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/FieldAnnotations.kt");
doTest(fileName);
}
@TestMetadata("GetterAnnotations.kt")
public void testGetterAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/GetterAnnotations.kt");
doTest(fileName);
}
@TestMetadata("ParamAnnotations.kt")
public void testParamAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/ParamAnnotations.kt");
doTest(fileName);
}
@TestMetadata("PropertyAnnotations.kt")
public void testPropertyAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/PropertyAnnotations.kt");
doTest(fileName);
}
@TestMetadata("ReceiverAnnotations.kt")
public void testReceiverAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/ReceiverAnnotations.kt");
doTest(fileName);
}
@TestMetadata("SetterAnnotations.kt")
public void testSetterAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/SetterAnnotations.kt");
doTest(fileName);
}
@TestMetadata("SparamAnnotations.kt")
public void testSparamAnnotations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/SparamAnnotations.kt");
doTest(fileName);
}
}
}
@TestMetadata("compiler/testData/diagnostics/tests/backingField")