Add codegen box test templates for identifiers
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
KOTLIN CODEGEN BOX SPEC TEST (<!TEST_TYPE!>)
|
||||
|
||||
SECTIONS: <!SECTIONS!>
|
||||
PARAGRAPH: <!PARAGRAPH_NUMBER!>
|
||||
SENTENCE: [<!SENTENCE_NUMBER!>] <!SENTENCE!>
|
||||
NUMBER: <!TEST_NUMBER!>
|
||||
DESCRIPTION: <!TEST_DESCRIPTION!>
|
||||
NOTE: this test data is generated by FeatureInteractionTestDataGenerator. DO NOT MODIFY CODE MANUALLY!
|
||||
*/
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
KOTLIN NOT LINKED CODEGEN BOX SPEC TEST (<!TEST_TYPE!>)
|
||||
|
||||
SECTION: <!SECTION!>
|
||||
CATEGORIES: <!CATEGORIES!>
|
||||
NUMBER: <!TEST_NUMBER!>
|
||||
DESCRIPTION: <!TEST_DESCRIPTION!>
|
||||
NOTE: this test data is generated by FeatureInteractionTestDataGenerator. DO NOT MODIFY CODE MANUALLY!
|
||||
*/
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
fun box(): String? {
|
||||
val <!ELEMENT(1)!> = 10
|
||||
val <!ELEMENT(2)!> = "."
|
||||
|
||||
val value_1 = <!ELEMENT(1)!> - 100 % <!ELEMENT(1)!>
|
||||
val value_2 = <!ELEMENT(1)!>.dec()
|
||||
val value_3 = "$<!ELEMENT(2)!> 10"
|
||||
val value_4 = "${<!ELEMENT(2)!>}"
|
||||
val value_5 = <!ELEMENT(2)!> + " 11..." + <!ELEMENT(2)!> + "1"
|
||||
val value_6 = <!ELEMENT(1)!>
|
||||
|
||||
if (value_1 != 10) return null
|
||||
if (value_2 != 9) return null
|
||||
if (value_3 != ". 10") return null
|
||||
if (value_4 != ".") return null
|
||||
if (value_5 != ". 11....1") return null
|
||||
if (value_6 != 10) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
val Boolean.<!ELEMENT(1)!>: Boolean
|
||||
get() {
|
||||
return true
|
||||
}
|
||||
|
||||
val Boolean?.<!ELEMENT(2)!>: Boolean
|
||||
get() {
|
||||
return false
|
||||
}
|
||||
|
||||
fun Int?.<!ELEMENT(3)!>(x: Boolean): Boolean {
|
||||
return !x
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
if (!false.<!ELEMENT(1)!> || false.<!ELEMENT(2)!> || !0.<!ELEMENT(3)!>(false)) return null
|
||||
|
||||
if (!checkCallableName(Boolean::<!ELEMENT(1)!>, "<!ELEMENT_VALIDATION(1)!>") || !Boolean::<!ELEMENT(1)!>.get(true)) return null
|
||||
if (!checkCallableName(Boolean????::<!ELEMENT(2)!>, "<!ELEMENT_VALIDATION(2)!>") || Boolean????::<!ELEMENT(2)!>.get(false)) return null
|
||||
if (!checkCallableName(Boolean????::<!ELEMENT(2)!>::equals.call(false)::<!ELEMENT(1)!>, "<!ELEMENT_VALIDATION(1)!>")
|
||||
|| !Boolean????::<!ELEMENT(2)!>::equals.call(false)::<!ELEMENT(1)!>.get()) return null
|
||||
if (!checkCallableName(Int?::<!ELEMENT(3)!>, "<!ELEMENT_VALIDATION(3)!>") || Int?::<!ELEMENT(3)!>.call(10, true)) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
annotation class A
|
||||
|
||||
fun box(): String? {
|
||||
var value_1 = false
|
||||
var value_2 = true
|
||||
|
||||
try {
|
||||
throw Exception()
|
||||
} catch (<!ELEMENT!>: Throwable) {
|
||||
value_1 = true
|
||||
}
|
||||
|
||||
try {
|
||||
throw Exception()
|
||||
} catch (@A <!ELEMENT!>: Throwable) {
|
||||
value_2 = false
|
||||
}
|
||||
|
||||
if (!value_1 || value_2) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
open class <!ELEMENT(1)!> {
|
||||
val x1 = true
|
||||
}
|
||||
|
||||
internal open class A: <!ELEMENT(1)!>() {
|
||||
val x2 = false
|
||||
}
|
||||
|
||||
annotation class <!ELEMENT(2)!>(val x2: Boolean)
|
||||
|
||||
@<!ELEMENT(2)!>(false) internal class B: @<!ELEMENT(2)!>(false) A() {}
|
||||
|
||||
@<!ELEMENT(2)!>(true) interface C
|
||||
|
||||
fun box(): String? {
|
||||
val o1 = <!ELEMENT(1)!>()
|
||||
val o2 = A()
|
||||
val o3 = B()
|
||||
|
||||
if (o1.x1 != true) return null
|
||||
if (o2.x1 != true || o2.x2 != false || o3.x2 != false || o3.x1 != true) return null
|
||||
|
||||
if (!checkAnnotation("B", "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkAnnotation("C", "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkSuperClass(B::class, "A")) return null
|
||||
if (!checkSuperTypeAnnotation(B::class, "A", "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkClassName(<!ELEMENT(2)!>::class, "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkClassName(<!ELEMENT(1)!>::class, "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>
|
||||
|
||||
open class A {
|
||||
companion object <!ELEMENT(2)!> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class B {
|
||||
companion object <!ELEMENT(3)!>: A() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
if (!checkCompanionObjectName(A::class, "org.jetbrains.<!ELEMENT_VALIDATION(1)!>.A.<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkCompanionObjectName(B::class, "org.jetbrains.<!ELEMENT_VALIDATION(1)!>.B.<!ELEMENT_VALIDATION(3)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
enum class A(val x: Boolean) {
|
||||
<!ELEMENT(1)!>(false),
|
||||
<!ELEMENT(2)!>(true);
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
if (A.<!ELEMENT(1)!>.x) return null
|
||||
if (!A.<!ELEMENT(2)!>.x) return null
|
||||
|
||||
if (A.<!ELEMENT(1)!>.name != "<!ELEMENT_VALIDATION(1)!>") return null
|
||||
if (A.<!ELEMENT(2)!>.name != "<!ELEMENT_VALIDATION(2)!>") return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
@file:[org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>() <!ELEMENT(3)!>]
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>
|
||||
|
||||
@Target(AnnotationTarget.FILE)
|
||||
annotation class <!ELEMENT(2)!>
|
||||
|
||||
@Target(AnnotationTarget.FILE)
|
||||
annotation class <!ELEMENT(3)!>
|
||||
|
||||
fun box(): String? {
|
||||
if (!checkFileAnnotations("org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!CLASS_OF_FILE!>", listOf("org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!ELEMENT_VALIDATION(2)!>", "<!ELEMENT_VALIDATION(3)!>"))) return null
|
||||
if (!checkPackageName("org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!CLASS_OF_FILE!>", "org.jetbrains.<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
if (!checkClassName(<!ELEMENT(2)!>::class, "org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
@file:<!ELEMENT(1)!>
|
||||
@file:<!ELEMENT(2)!>
|
||||
|
||||
@Target(AnnotationTarget.FILE)
|
||||
annotation class <!ELEMENT(1)!>
|
||||
|
||||
@Target(AnnotationTarget.FILE)
|
||||
annotation class <!ELEMENT(2)!>
|
||||
|
||||
fun box(): String? {
|
||||
if (!checkFileAnnotations("<!CLASS_OF_FILE!>", listOf("<!ELEMENT_VALIDATION(1)!>", "<!ELEMENT_VALIDATION(2)!>"))) return null
|
||||
if (!checkClassName(<!ELEMENT(1)!>::class, "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
if (!checkClassName(<!ELEMENT(2)!>::class, "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
fun <!ELEMENT(1)!>(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
fun Boolean.<!ELEMENT(2)!>() = true
|
||||
|
||||
fun <T> T.<!ELEMENT(4)!>() = listOf(0).<!ELEMENT(3)!>()
|
||||
|
||||
inline fun <reified T, K> K?.<!ELEMENT(3)!>(x1: T = 10 as T)
|
||||
where K : List<T>,
|
||||
K : Iterable<T>,
|
||||
T : Comparable<T>,
|
||||
T : Number = false
|
||||
|
||||
fun box(): String? {
|
||||
if (!<!ELEMENT(1)!>()) return null
|
||||
if (null.<!ELEMENT(3)!><Int, List<Int>>()) return null
|
||||
if (false.<!ELEMENT(4)!>()) return null
|
||||
if (!false.<!ELEMENT(2)!>()) return null
|
||||
if (Any().<!ELEMENT(4)!>()) return null
|
||||
|
||||
if (!checkFunctionName(::<!ELEMENT(1)!>, "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
if (!checkFunctionName(Boolean::<!ELEMENT(2)!>, "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkFunctionName(Boolean::<!ELEMENT(4)!>, "<!ELEMENT_VALIDATION(4)!>")) return null
|
||||
if (!checkFunctionName(List<Int>::<!ELEMENT(3)!>, "<!ELEMENT_VALIDATION(3)!>")) return null
|
||||
if (!checkFunctionName(Nothing?::<!ELEMENT(4)!>, "<!ELEMENT_VALIDATION(4)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
// FILE: 2_19_1.kt
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>
|
||||
|
||||
val x1 = false
|
||||
|
||||
// FILE: 2_19_2.kt
|
||||
|
||||
val <!ELEMENT(5)!> = false
|
||||
|
||||
// FILE: 2_19_3.kt
|
||||
|
||||
package <!ELEMENT(3)!>;
|
||||
|
||||
val x3 = true
|
||||
|
||||
// FILE: 2_19_4.kt
|
||||
|
||||
package <!ELEMENT(4)!>
|
||||
|
||||
val x4 = false
|
||||
|
||||
// FILE: 2_19_5.kt
|
||||
|
||||
package org.jetbrains.kotlin
|
||||
|
||||
val x5 = true
|
||||
|
||||
// FILE: 2_19_6.kt
|
||||
|
||||
val <!ELEMENT(6)!> = false
|
||||
|
||||
// FILE: 2_19_7.kt
|
||||
|
||||
package part_1
|
||||
|
||||
import org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>.*
|
||||
import <!ELEMENT(4)!>
|
||||
import <!ELEMENT(3)!>.*;
|
||||
import <!ELEMENT(4)!>.*import <!ELEMENT(3)!>
|
||||
|
||||
fun box(): String? {
|
||||
if (x1 || <!ELEMENT(5)!> || !x3 || x4 || <!ELEMENT(6)!>) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
infix fun Int.<!ELEMENT(1)!>(value: Int) = value > 100
|
||||
|
||||
infix fun Int.<!ELEMENT(2)!>(value: Int): Int {
|
||||
return value - 90
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
if (1 + 1 <!ELEMENT(1)!> -1001020) return null
|
||||
if (1 + 1 <!ELEMENT(2)!> 2004 <!ELEMENT(1)!> -0) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
@Target(AnnotationTarget.EXPRESSION)
|
||||
annotation class Foo
|
||||
|
||||
fun box(): String? {
|
||||
val lambda_1 = <!ELEMENT(1)!>@ {
|
||||
return@<!ELEMENT(1)!> false
|
||||
}
|
||||
val lambda_2 = @Foo <!ELEMENT(2)!>@ { Boolean
|
||||
return@<!ELEMENT(2)!> false
|
||||
}
|
||||
|
||||
val x1 = <!ELEMENT(1)!>@ true
|
||||
|
||||
var i = 0
|
||||
|
||||
<!ELEMENT(2)!>@ while (true) {
|
||||
i++
|
||||
if (i < 4) continue@<!ELEMENT(2)!>
|
||||
i++
|
||||
if (i > 15) break@<!ELEMENT(2)!>
|
||||
}
|
||||
|
||||
var j = 0
|
||||
|
||||
<!ELEMENT(1)!>@ for (k in 0..20) {
|
||||
j++
|
||||
if (k < 4) continue@<!ELEMENT(1)!>
|
||||
j++
|
||||
if (k > 15) break@<!ELEMENT(1)!>
|
||||
}
|
||||
|
||||
if (lambda_1()) return null
|
||||
if (lambda_2()) return null
|
||||
if (!x1) return null
|
||||
if (i != 17) return null
|
||||
if (j != 30) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
fun <!ELEMENT(3)!>() {
|
||||
val l = <!ELEMENT(2)!>@ {
|
||||
return@<!ELEMENT(2)!>
|
||||
}
|
||||
l()
|
||||
return@<!ELEMENT(1)!>
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
<!ELEMENT(3)!>()
|
||||
|
||||
var i = 0
|
||||
<!ELEMENT(2)!>@ while (i < 10) {
|
||||
i++
|
||||
if (i <= 7) {
|
||||
continue@<!ELEMENT(2)!>
|
||||
}
|
||||
if (i > 5) {
|
||||
break@<!ELEMENT(2)!>
|
||||
}
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
open class A {
|
||||
val x1 = true
|
||||
}
|
||||
|
||||
final object <!ELEMENT(2)!> {
|
||||
val x1 = false
|
||||
}
|
||||
|
||||
object <!ELEMENT(1)!> : A() {
|
||||
val x2 = false
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
if (<!ELEMENT(2)!>.x1) return null
|
||||
if (!<!ELEMENT(1)!>.x1 || <!ELEMENT(1)!>.x2) return null
|
||||
|
||||
if (!checkClassName(<!ELEMENT(2)!>::class, "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkClassName(<!ELEMENT(1)!>::class, "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>
|
||||
|
||||
fun box(): String? {
|
||||
if (!checkPackageName("org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!CLASS_OF_FILE!>", "org.jetbrains.<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
package <!ELEMENT(1)!>
|
||||
|
||||
fun box(): String? {
|
||||
if (!checkPackageName("<!ELEMENT_VALIDATION(1)!>.<!CLASS_OF_FILE!>", "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
fun f1(<!ELEMENT(1)!>: Boolean) = !!!<!ELEMENT(1)!>
|
||||
fun f2(<!ELEMENT(2)!>: Boolean, <!ELEMENT(3)!>: Boolean) = <!ELEMENT(2)!> && <!ELEMENT(3)!>
|
||||
fun f3(<!ELEMENT(4)!>: Boolean, <!ELEMENT(5)!>: Boolean = <!ELEMENT(4)!>) = <!ELEMENT(4)!> || !<!ELEMENT(5)!>
|
||||
|
||||
class A {
|
||||
var x1: Boolean = false
|
||||
set(<!ELEMENT(6)!>) {
|
||||
field = !<!ELEMENT(6)!>
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
val a = A()
|
||||
a.x1 = false
|
||||
|
||||
if (f1(true)) return null
|
||||
if (!f2(true, true)) return null
|
||||
if (f3(false, true)) return null
|
||||
if (!a.x1) return null
|
||||
|
||||
if (!checkParameter(::f1, "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
if (!checkParameters(::f2, listOf("<!ELEMENT_VALIDATION(2)!>", "<!ELEMENT_VALIDATION(3)!>"))) return null
|
||||
if (!checkParameters(::f3, listOf("<!ELEMENT_VALIDATION(4)!>", "<!ELEMENT_VALIDATION(5)!>"))) return null
|
||||
if (!checkSetterParameterName(A::x1, "<!ELEMENT_VALIDATION(6)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
class A {
|
||||
var x1: String = "100"
|
||||
set(<!ELEMENT(1)!>) {
|
||||
field = "$<!ELEMENT(1)!> 10"
|
||||
}
|
||||
}
|
||||
|
||||
object B {
|
||||
var x2: String = "101"
|
||||
set(<!ELEMENT(2)!>) = kotlin.Unit
|
||||
}
|
||||
|
||||
var x3: String = "102"
|
||||
set(<!ELEMENT(3)!>) {
|
||||
field = "${<!ELEMENT(3)!>} 11"
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
val a = A()
|
||||
a.x1 = "0"
|
||||
B.x2 = "1"
|
||||
x3 = "2"
|
||||
|
||||
if (a.x1 != "0 10") return null
|
||||
if (B.x2 != "101") return null
|
||||
if (x3 != "2 11") return null
|
||||
|
||||
if (!checkSetterParameterName(A::x1, "<!ELEMENT_VALIDATION(1)!>")) return null
|
||||
if (!checkSetterParameterName(B::x2, "<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkSetterParameterName(::x3, "<!ELEMENT_VALIDATION(3)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>
|
||||
|
||||
open class <!ELEMENT(2)!>
|
||||
open class <!ELEMENT(3)!><T>
|
||||
|
||||
typealias D<<!ELEMENT(6)!>> = <!ELEMENT(3)!><<!ELEMENT(6)!>>
|
||||
|
||||
inline fun <reified <!ELEMENT(4)!>, reified <!ELEMENT(5)!>> f1() =
|
||||
when (<!ELEMENT(2)!>()) {
|
||||
is <!ELEMENT(4)!> -> true
|
||||
is <!ELEMENT(5)!> -> false
|
||||
else -> false
|
||||
}
|
||||
|
||||
inline fun <reified T : D<<!ELEMENT(2)!>>> T.f2(value: T) = value is <!ELEMENT(2)!>
|
||||
|
||||
class A<K: List<out <!ELEMENT(3)!><out String>>> {
|
||||
val x = true
|
||||
}
|
||||
|
||||
class B<K, T: A<List<out <!ELEMENT(3)!><String>>>> {
|
||||
var x = false
|
||||
}
|
||||
|
||||
fun <T : org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>> T.f3() = false
|
||||
|
||||
fun f4(x1: List<out <!ELEMENT(3)!><String>>): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
fun f5(x1: List<List<List<<!ELEMENT(2)!>?>>>) = false
|
||||
|
||||
fun f6(x1: <!ELEMENT(2)!>) = false
|
||||
|
||||
fun f7(x1: <!ELEMENT(3)!><*>) = true
|
||||
|
||||
fun f8(x1: <!ELEMENT(3)!><out Any>) = false
|
||||
|
||||
fun f9(x1: <!ELEMENT(3)!><out List<<!ELEMENT(3)!><*>>>) = true
|
||||
|
||||
val x1: List<<!ELEMENT(2)!>?> = listOf(<!ELEMENT(2)!>(), null, <!ELEMENT(2)!>())
|
||||
|
||||
lateinit var x2: List<<!ELEMENT(3)!><out Number>?>
|
||||
|
||||
fun box(): String? {
|
||||
x2 = listOf(<!ELEMENT(3)!><Int>(), null, <!ELEMENT(3)!>())
|
||||
|
||||
if (!f1<<!ELEMENT(2)!>, <!ELEMENT(3)!><<!ELEMENT(2)!>>>()) return null
|
||||
if (<!ELEMENT(3)!><<!ELEMENT(2)!>>().f2(<!ELEMENT(3)!>())) return null
|
||||
if (!A<List<<!ELEMENT(3)!><String>>>().x) return null
|
||||
if (B<<!ELEMENT(2)!>, A<List<<!ELEMENT(3)!><String>>>>().x) return null
|
||||
if (<!ELEMENT(2)!>().f3()) return null
|
||||
if (!f4(listOf(<!ELEMENT(3)!>()))) return null
|
||||
if (f5(listOf(listOf(listOf(null, <!ELEMENT(2)!>(), null, <!ELEMENT(2)!>()))))) return null
|
||||
if (f6(<!ELEMENT(2)!>())) return null
|
||||
if (!f7(<!ELEMENT(3)!><Nothing>())) return null
|
||||
if (f8(<!ELEMENT(3)!><<!ELEMENT(2)!>>())) return null
|
||||
if (!f9(<!ELEMENT(3)!><List<<!ELEMENT(3)!><<!ELEMENT(2)!>>>>())) return null
|
||||
|
||||
if (x1.containsAll(listOf(<!ELEMENT(2)!>(), null, <!ELEMENT(2)!>()))) return null
|
||||
if (x2.containsAll(listOf(<!ELEMENT(3)!><Int>(), null, <!ELEMENT(3)!>()))) return null
|
||||
|
||||
if (!checkCallableTypeParametersWithUpperBounds(
|
||||
<!ELEMENT(3)!><<!ELEMENT(2)!>>::f2,
|
||||
listOf(
|
||||
Pair("T", listOf("org.jetbrains.<!ELEMENT(1)!>.D<org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>> /* = org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>> */"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
if (!checkClassTypeParametersWithUpperBounds(
|
||||
A::class,
|
||||
listOf(
|
||||
Pair("K", listOf("kotlin.collections.List<out org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><out kotlin.String>>"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
if (!checkClassTypeParametersWithUpperBounds(
|
||||
B::class,
|
||||
listOf(
|
||||
Pair("T", listOf("org.jetbrains.<!ELEMENT(1)!>.A<kotlin.collections.List<out org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><kotlin.String>>>"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
if (!checkCallableTypeParametersWithUpperBounds(
|
||||
<!ELEMENT(2)!>::f3,
|
||||
listOf(
|
||||
Pair("T", listOf("org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
if (!checkParameterType(::f4, "x1", "kotlin.collections.List<out org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><kotlin.String>>")) return null
|
||||
|
||||
if (!checkParameterType(::f5, "x1", "kotlin.collections.List<kotlin.collections.List<kotlin.collections.List<org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>?>>>")) return null
|
||||
|
||||
if (!checkPropertyType(::x1, "kotlin.collections.List<org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>?>")) return null
|
||||
|
||||
if (!checkPropertyType(::x2, "kotlin.collections.List<org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><out kotlin.Number>?>")) return null
|
||||
|
||||
if (!checkParameterType(::f6, "x1", "org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(2)!>")) return null
|
||||
|
||||
if (!checkParameterType(::f7, "x1", "org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><*>")) return null
|
||||
|
||||
if (!checkParameterType(::f8, "x1", "org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><out kotlin.Any>")) return null
|
||||
|
||||
if (!checkParameterType(::f9, "x1", "org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><out kotlin.collections.List<org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><*>>>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
fun box(): String? {
|
||||
val <!ELEMENT(1)!> = "0"
|
||||
val <!ELEMENT(2)!> = "1"
|
||||
|
||||
val x1 = "${<!ELEMENT(2)!>}"
|
||||
val x2 = "..." + "...$<!ELEMENT(1)!>..." + "..."
|
||||
var x3 = "$<!ELEMENT(2)!>${<!ELEMENT(1)!>}$<!ELEMENT(2)!>"
|
||||
|
||||
if (<!ELEMENT(2)!> != "1") return null
|
||||
if (<!ELEMENT(1)!> != "0") return null
|
||||
|
||||
if (x1 != "1") return null
|
||||
if (x2 != "......0......") return null
|
||||
if (x3 != "101") return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
typealias <!ELEMENT(1)!> = Boolean
|
||||
|
||||
internal typealias <!ELEMENT(2)!><<!ELEMENT(3)!>> = Map<<!ELEMENT(3)!>, List<<!ELEMENT(3)!>>?>
|
||||
|
||||
fun box(): String? {
|
||||
val x1: <!ELEMENT(2)!><Boolean> = mapOf(true to listOf(false, false), false to null)
|
||||
val x2: <!ELEMENT(1)!> = false
|
||||
|
||||
if (!x1[true]!!.containsAll(listOf(false, false)) || x1[false] != null) return null
|
||||
if (x2) return null
|
||||
|
||||
if (!checkClassName(<!ELEMENT(1)!>::class, "kotlin.Boolean")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
class A <<!ELEMENT(1)!>, <!ELEMENT(2)!>>
|
||||
where <!ELEMENT(1)!> : CharSequence,
|
||||
<!ELEMENT(2)!> : Comparable<<!ELEMENT(1)!>> {
|
||||
fun getValue() = false
|
||||
}
|
||||
|
||||
annotation class B <<!ELEMENT(3)!>>
|
||||
where <!ELEMENT(3)!> : CharSequence,
|
||||
@A<List<Nothing?>> <!ELEMENT(3)!> : Comparable<<!ELEMENT(3)!>> {
|
||||
|
||||
}
|
||||
|
||||
annotation class C <<!ELEMENT(4)!>, <!ELEMENT(5)!>> where @property:C <!ELEMENT(4)!> : CharSequence, <!ELEMENT(5)!> : Comparable<<!ELEMENT(5)!>> {
|
||||
|
||||
}
|
||||
|
||||
fun <<!ELEMENT(4)!>, <!ELEMENT(5)!>> d(): Boolean
|
||||
where <!ELEMENT(4)!> : Any,
|
||||
<!ELEMENT(4)!> : Iterable<*>,
|
||||
<!ELEMENT(4)!> : Collection<*>,
|
||||
<!ELEMENT(4)!> : MutableCollection<*>,
|
||||
<!ELEMENT(5)!> : Comparable<<!ELEMENT(4)!>> = true
|
||||
|
||||
fun box(): String? {
|
||||
if (!d<MutableSet<Any>, Comparable<MutableSet<Any>>>()) return null
|
||||
if (A<String, String>().getValue()) return null
|
||||
|
||||
if (!checkClassTypeParametersWithUpperBounds(
|
||||
A::class,
|
||||
listOf(
|
||||
Pair("<!ELEMENT_VALIDATION(1)!>", listOf("kotlin.CharSequence")),
|
||||
Pair("<!ELEMENT_VALIDATION(2)!>", listOf("kotlin.Comparable<<!ELEMENT(1)!>>"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
if (!checkClassTypeParametersWithUpperBounds(
|
||||
B::class,
|
||||
listOf(
|
||||
Pair("<!ELEMENT_VALIDATION(3)!>", listOf("kotlin.CharSequence", "kotlin.Comparable<<!ELEMENT(3)!>>"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
if (!checkClassTypeParametersWithUpperBounds(
|
||||
C::class,
|
||||
listOf(
|
||||
Pair("<!ELEMENT_VALIDATION(4)!>", listOf("kotlin.CharSequence")),
|
||||
Pair("<!ELEMENT_VALIDATION(5)!>", listOf("kotlin.Comparable<<!ELEMENT(5)!>>"))
|
||||
)
|
||||
)) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>
|
||||
|
||||
open class <!ELEMENT(2)!> {
|
||||
val x1 = false
|
||||
}
|
||||
open class <!ELEMENT(3)!><T> {
|
||||
val x1 = true
|
||||
}
|
||||
|
||||
typealias A<<!ELEMENT(4)!>> = <!ELEMENT(3)!><<!ELEMENT(4)!>>
|
||||
|
||||
class B<<!ELEMENT(5)!>, <!ELEMENT(6)!>> {
|
||||
val x1: <!ELEMENT(5)!> = <!ELEMENT(3)!><<!ELEMENT(6)!>>() as <!ELEMENT(5)!>
|
||||
val x2: A<<!ELEMENT(6)!>> = <!ELEMENT(3)!><<!ELEMENT(5)!>>() as A<<!ELEMENT(6)!>>
|
||||
val x3: <!ELEMENT(6)!> = <!ELEMENT(2)!>() as <!ELEMENT(6)!>
|
||||
}
|
||||
|
||||
fun <<!ELEMENT(7)!>: Number> f1(): Boolean {
|
||||
val x1: <!ELEMENT(7)!> = 10 as <!ELEMENT(7)!>
|
||||
return false
|
||||
}
|
||||
|
||||
inline fun <reified <!ELEMENT(8)!>, reified <!ELEMENT(9)!> : Any> <!ELEMENT(8)!>.f2() = true
|
||||
|
||||
val <<!ELEMENT(10)!>> <!ELEMENT(10)!>.x1: <!ELEMENT(3)!><Int>
|
||||
get() = <!ELEMENT(3)!><Int>()
|
||||
|
||||
fun box(): String? {
|
||||
val b = B<<!ELEMENT(3)!><<!ELEMENT(2)!>>, <!ELEMENT(2)!>>()
|
||||
|
||||
if (!null.x1.x1) return null
|
||||
if (!b.x1.x1 || !b.x2.x1 || b.x3.x1) return null
|
||||
if (f1<Byte>()) return null
|
||||
if (!0.f2<Int, <!ELEMENT(2)!>>()) return null
|
||||
if (!(-1).x1.x1) return null
|
||||
|
||||
if (!checkCallableTypeParameter(Any::x1, "<!ELEMENT_VALIDATION(10)!>")) return null
|
||||
if (!checkClassTypeParameters(B::class, listOf("<!ELEMENT_VALIDATION(2)!>", "<!ELEMENT_VALIDATION(5)!>"))) return null
|
||||
if (!checkTypeProperties(B::class, listOf(
|
||||
Pair("x1", "<!ELEMENT(5)!>"),
|
||||
Pair("x2", "org.jetbrains.<!ELEMENT(1)!>.A<<!ELEMENT(6)!>> /* = org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><<!ELEMENT(6)!>> */"),
|
||||
Pair("x3", "<!ELEMENT(6)!>")
|
||||
))) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
<!DIRECTIVES("HELPERS: REFLECT")!>
|
||||
|
||||
package org.jetbrains.<!ELEMENT(1)!>
|
||||
|
||||
annotation class <!ELEMENT(2)!>
|
||||
|
||||
annotation class <!ELEMENT(3)!> <T> (val a: String)
|
||||
|
||||
class A {
|
||||
@field:<!ELEMENT(2)!>
|
||||
val x1: Int = 0
|
||||
|
||||
@setparam:<!ELEMENT(2)!>
|
||||
var x2: Int = 1
|
||||
|
||||
val @receiver:org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><List<Int>>("false") String.x3: Int
|
||||
get() {
|
||||
return 2
|
||||
}
|
||||
|
||||
@org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><Int>("1")
|
||||
val x4: Int = 3
|
||||
|
||||
@<!ELEMENT(2)!>
|
||||
val x5: Int = 4
|
||||
|
||||
val x6: Int = "...".x3
|
||||
}
|
||||
|
||||
@<!ELEMENT(2)!> val x6 = 5
|
||||
|
||||
@org.jetbrains.<!ELEMENT(1)!>.<!ELEMENT(3)!><<!ELEMENT(2)!>>(".") fun f1() = false
|
||||
|
||||
fun box(): String? {
|
||||
val a = A()
|
||||
|
||||
if (a.x1 != 0 || a.x2 != 1 || a.x6 != 2 || a.x4 != 3 || a.x5 != 4 || x6 != 5) return null
|
||||
if (f1()) return null
|
||||
|
||||
if (!checkProperties(A::class, listOf("x1", "x2", "x3", "x4", "x5"))) return null
|
||||
if (!checkPropertiesWithAnnotation(
|
||||
A::class,
|
||||
listOf(
|
||||
Pair("x4", listOf("org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!ELEMENT_VALIDATION(3)!>")),
|
||||
Pair("x5", listOf("org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!ELEMENT_VALIDATION(2)!>"))
|
||||
)
|
||||
)) return null
|
||||
if (!checkPropertyAnnotation(::x6, "org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!ELEMENT_VALIDATION(2)!>")) return null
|
||||
if (!checkFunctionAnnotation(::f1, "org.jetbrains.<!ELEMENT_VALIDATION(1)!>.<!ELEMENT_VALIDATION(3)!>")) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
<!DIRECTIVES("WITH_RUNTIME")!>
|
||||
|
||||
fun f1(<!ELEMENT(1)!>: Boolean, <!ELEMENT(2)!>: Boolean) = <!ELEMENT(1)!> && !!!<!ELEMENT(2)!>
|
||||
|
||||
fun f2(<!ELEMENT(3)!>: Boolean): Boolean {
|
||||
return !<!ELEMENT(3)!>
|
||||
}
|
||||
|
||||
fun f3(vararg <!ELEMENT(4)!>: Boolean, <!ELEMENT(5)!>: Boolean) = <!ELEMENT(4)!>.any { it } && <!ELEMENT(5)!>
|
||||
|
||||
fun box(): String? {
|
||||
if (f1(<!ELEMENT(1)!> = false, <!ELEMENT(2)!> = true)) return null
|
||||
if (!f2(<!ELEMENT(3)!> = false && true || true && false)) return null
|
||||
if (!f3(<!ELEMENT(4)!> = *booleanArrayOf(true, false, false, true), <!ELEMENT(5)!> = true)) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
<!DIRECTIVES("WITH_RUNTIME")!>
|
||||
|
||||
val <!ELEMENT(1)!> = {`false`: Boolean -> !`false` }
|
||||
|
||||
fun f1(value: Pair<String, String>): Boolean {
|
||||
val (<!ELEMENT(2)!>, <!ELEMENT(3)!>) = value
|
||||
|
||||
if (<!ELEMENT(2)!> != "1") return false
|
||||
if (<!ELEMENT(3)!> != "2") return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
fun box(): String? {
|
||||
var i = 0
|
||||
for (<!ELEMENT(4)!>: Int in 0..10) {
|
||||
i++
|
||||
}
|
||||
|
||||
if (!<!ELEMENT(1)!>(false)) return null
|
||||
|
||||
val <!ELEMENT(5)!> = { <!ELEMENT(6)!>: Boolean, <!ELEMENT(7)!>: Int -> true }
|
||||
var <!ELEMENT(8)!>: Boolean
|
||||
|
||||
<!ELEMENT(8)!> = false
|
||||
|
||||
if (!f1(Pair("1", "2"))) return null
|
||||
if (i != 11) return null
|
||||
if (!<!ELEMENT(5)!>(false, 10)) return null
|
||||
if (<!ELEMENT(8)!>) return null
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user