FIR: Adjust testData for spec tests: annotations

This commit is contained in:
Denis Zharkov
2020-04-16 12:24:09 +03:00
parent 798fe9b7d1
commit 2f0f552880
12 changed files with 359 additions and 0 deletions
@@ -0,0 +1,74 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, annotation-classes
* NUMBER: 1
* DESCRIPTION: Annotation classes with forbidden `JvmOverloads` annotation on its constructor.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-25702
*/
// TESTCASE NUMBER: 2, 3, 4
@Target(AnnotationTarget.CONSTRUCTOR)
annotation class Case12_1
@Target(AnnotationTarget.CONSTRUCTOR)
@Retention(AnnotationRetention.SOURCE)
@Repeatable
annotation class Case12_2
// TESTCASE NUMBER: 1
annotation class Case1 @JvmOverloads constructor(val x: Int)
// TESTCASE NUMBER: 2
annotation class Case2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 JvmOverloads Case12_1] constructor(x: Int = 10)
// TESTCASE NUMBER: 3
annotation class Case3 @Case12_2 @Case12_1 @Case12_2 @`JvmOverloads` @Case12_2 @Case12_2 constructor(x: Int = 10)
// TESTCASE NUMBER: 4
annotation class Case4 @Case12_2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 JvmOverloads Case12_1] @Case12_2 @Case12_2 constructor(x: Int = 10)
// TESTCASE NUMBER: 5
annotation class Case5 @[JvmOverloads] constructor(val x: Int)
// TESTCASE NUMBER: 6
annotation class Case6 @JvmOverloads constructor()
// TESTCASE NUMBER: 7
annotation class Case7@JvmOverloads constructor() {}
// TESTCASE NUMBER: 8
annotation class Case8 @`JvmOverloads` constructor()
// TESTCASE NUMBER: 9
annotation class Case9 <A, Case12_1 : A, Case12_2 : Case12_1, D : Case12_2, E : D> @JvmOverloads constructor(val x: Int)
// TESTCASE NUMBER: 10
annotation class Case10 <T> @JvmOverloads constructor(val x: Int)
// TESTCASE NUMBER: 11
annotation class Case11 <T : Number, K : Comparable<K>> @JvmOverloads constructor(val x: Int)
// TESTCASE NUMBER: 12
annotation class Case12 <T> @JvmOverloads constructor(val x: Int) where T: Number
// TESTCASE NUMBER: 13
annotation class Case13 constructor(val x: Int) {
annotation class Case1 @JvmOverloads constructor(val x: Int)
}
// TESTCASE NUMBER: 14
annotation class Case14 @JvmOverloads constructor(val x: Int) {
annotation class Case1 constructor(val x: Int)
}
// TESTCASE NUMBER: 15
object Case15 {
annotation class Case15 @JvmOverloads constructor(val x: Int)
}
// TESTCASE NUMBER: 16
class Case16 {
annotation class Case16 @JvmOverloads constructor(val x: Int)
}
@@ -0,0 +1,16 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 1
* DESCRIPTION: Type annotations on return type with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
fun case_1(x: String): @Ann(unresolved_reference) String {
return x
}
@@ -0,0 +1,35 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 10
* DESCRIPTION: Type annotations on a lambda type with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
fun case_1() {
val x: (Int) -> @Ann(unresolved_reference) Unit = {} // OK, no error in IDE and in the compiler
}
/*
* TESTCASE NUMBER: 2
* UNEXPECTED BEHAVIOUR
*/
fun case_2() {
val x: (@Ann(unresolved_reference) Int) -> Unit = { a: Int -> println(a) } // OK, no error in IDE and in the compiler
}
// TESTCASE NUMBER: 3
fun case_3() {
val x: (@Ann(unresolved_reference) Int) -> Unit = { a -> println(a) } // ERROR (if argument type isn't specified explicitly)
}
@@ -0,0 +1,37 @@
// !WITH_NEW_INFERENCE
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 11
* DESCRIPTION: Type annotations with invalid target.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-28449
*/
// TESTCASE NUMBER: 1, 2, 3, 4, 5
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.PROPERTY_GETTER)
annotation class Ann(val x: Int)
// TESTCASE NUMBER: 1
abstract class Foo : @Ann(10) Any()
// TESTCASE NUMBER: 2
abstract class Bar<T : @Ann(10) Any>
// TESTCASE NUMBER: 3
fun case_3(a: Any) {
if (a is @Ann(10) String) return
}
// TESTCASE NUMBER: 4
open class TypeToken<T>
val case_4 = object : TypeToken<@Ann(10) String>() {}
// TESTCASE NUMBER: 5
fun case_5(a: Any) {
a as @Ann(10) Int
}
@@ -0,0 +1,17 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 2
* DESCRIPTION: Type annotations on supertypes with unresolved reference in parameters.
* ISSUES: KT-28424
*/
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
abstract class Foo : @Ann(unresolved_reference) Any()
@@ -0,0 +1,26 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 3
* DESCRIPTION: Type annotations on parameter types with unresolved reference in parameters.
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2, 3
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
// TESTCASE NUMBER: 1
class Inv<T>
fun foo(i: Inv<@Ann(unresolved_reference) String>) {}
// TESTCASE NUMBER: 2
fun test(vararg a: @Ann(unresolved_reference) Any) {}
// TESTCASE NUMBER: 3
class A<T>(a: @Ann(unresolved_reference) T)
@@ -0,0 +1,16 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 4
* DESCRIPTION: Type annotations on type arguments for a containing type of return type, with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
class Inv<T>
fun case_1(): Inv<@Ann(unresolved_reference) String> = TODO()
@@ -0,0 +1,21 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 5
* DESCRIPTION: Type annotations on upper bounds with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
// TESTCASE NUMBER: 1
abstract class Bar<T : @Ann(unresolved_reference) Any>
/*
* TESTCASE NUMBER: 2
* UNEXPECTED BEHAVIOUR
*/
class B<T> where @Ann(unresolved_reference) T : Number
@@ -0,0 +1,46 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
// !WITH_NEW_INFERENCE
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 6
* DESCRIPTION: Type annotations inside type check and cast expression with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
fun case_1(a: Any) {
if (a is @Ann(unresolved_reference) String) return
}
/*
* TESTCASE NUMBER: 2
* UNEXPECTED BEHAVIOUR
*/
fun case_2(a: Any) {
a as @Ann(unresolved_reference) String // OK, no error in IDE and in the compiler
}
/*
* TESTCASE NUMBER: 3
* UNEXPECTED BEHAVIOUR
*/
fun case_3_1(a: Any) {}
fun case_3_2(a: Any) {
case_3_1(a as @Ann(unresolved_reference) String) // OK, no error in IDE and in the compiler
}
// TESTCASE NUMBER: 4
fun case_4(a: Any) {
val x = a as @Ann(unresolved_reference) String // ERROR, has error in IDE and in the compiler
}
@@ -0,0 +1,30 @@
// !WITH_NEW_INFERENCE
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 7
* DESCRIPTION: Type annotations on a type in an anonymous object expression, with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
open class TypeToken<T>
val case_1 = object : TypeToken<@Ann(unresolved_reference) String>() {}
/*
* TESTCASE NUMBER: 2
* UNEXPECTED BEHAVIOUR
*/
interface A
val case_2 = object: @Ann(unresolved_reference) A {}
@@ -0,0 +1,20 @@
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 8
* DESCRIPTION: Type annotations on a receiver type (for an extension property only), with unresolved reference in parameters.
* ISSUES: KT-28424
*/
// TESTCASE NUMBER: 1, 2
@Target(AnnotationTarget.TYPE)
annotation class Ann(val x: Int)
// TESTCASE NUMBER: 1
val <T> @Ann(unresolved_reference) T.test // OK, error only in IDE but not in the compiler
get() = 10
// TESTCASE NUMBER: 2
val @Ann(unresolved_reference) Int.test
get() = 10
@@ -0,0 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
*
* SECTIONS: annotations, type-annotations
* NUMBER: 9
* DESCRIPTION: Type annotations on a setter argument type with unresolved reference in parameters.
* ISSUES: KT-28424
*/
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
@Target(AnnotationTarget.TYPE)
annotation class Ann
var <T> T.test
get() = 11
set(value: @Ann(unresolved_reference) Int) {}