FIR: Adjust testData for spec tests: type-system

This commit is contained in:
Denis Zharkov
2020-04-16 12:24:57 +03:00
parent 2f0f552880
commit 7c8e2724e1
7 changed files with 519 additions and 0 deletions
@@ -0,0 +1,69 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER
// !LANGUAGE: +NewInference
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* PLACE: type-system, introduction-1 -> paragraph 6 -> sentence 2
* NUMBER: 1
* DESCRIPTION: The use of Boolean literals as the identifier (with backtick) in the class.
*/
// TESTCASE NUMBER: 1
fun case_1() {
val x: Int = null
}
// TESTCASE NUMBER: 2
fun case_2() {
val x: Any = null
}
// TESTCASE NUMBER: 3
fun case_3() {
val x: Nothing = null
}
// TESTCASE NUMBER: 4
fun case_4() {
var x: Int = null
}
// TESTCASE NUMBER: 5
fun case_5() {
var x: Any = null
}
// TESTCASE NUMBER: 6
fun case_6() {
var x: Nothing = null
}
// TESTCASE NUMBER: 7
fun case_7() {
val x: Int
x = null
}
// TESTCASE NUMBER: 8
fun case_8() {
var x: Int = 10
x = null
}
// TESTCASE NUMBER: 9
fun case_9() {
val x = null
val y: Int = x
}
// TESTCASE NUMBER: 10
fun case_10(x: Int?) {
var y = 10
y = x
}
// TESTCASE NUMBER: 11
fun case_11(x: Int?, y: Int = x) = null
@@ -0,0 +1,101 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE
// !LANGUAGE: +NewInference
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* PLACE: type-system, introduction-1 -> paragraph 6 -> sentence 2
* NUMBER: 2
* DESCRIPTION: The use of Boolean literals as the identifier (with backtick) in the class.
*/
// TESTCASE NUMBER: 1
fun case_1(x: Int = null) {
println(x)
}
// TESTCASE NUMBER: 2
fun case_2(x: Any = null) {
println(x)
}
// TESTCASE NUMBER: 3
fun case_3(x: Nothing = null) {
<!AMBIGUITY!>println<!>(x)
}
// TESTCASE NUMBER: 4
class Case4(x: Int = null)
// TESTCASE NUMBER: 5
class Case5 constructor(x: Any = null)
// TESTCASE NUMBER: 6
class Case6 {
fun foo(x: Nothing = null) {}
}
// TESTCASE NUMBER: 7
class Case7 {
val x: Int get() = null
}
// TESTCASE NUMBER: 8
class Case8 {
var x: Any = 0
get() = 0
set(value) {
field = null
}
}
// TESTCASE NUMBER: 9
fun case_9(): Any = null
// TESTCASE NUMBER: 10
fun case_10(x: Int, y: Boolean): Any = if (y) x else null
// TESTCASE NUMBER: 11
fun case_11(x: Int, y: Boolean): Any = if (y) x else null
// TESTCASE NUMBER: 12
class Case12 {
val x: Any
var y: Any
var z: Any
init {
x = null
y = null
z = 10
z = null
}
}
// TESTCASE NUMBER: 13
open class Case13_1 {
open val x: Int = 10
}
class Case13: Case13_1() {
override val x = null
}
// TESTCASE NUMBER: 14
abstract class Case14_1 {
abstract val x: Int
}
class Case14: Case14_1() {
override val x = null
}
// TESTCASE NUMBER: 15
interface Case15_1 {
fun foo(): Int = 10
}
class Case15(): Case15_1 {
override fun foo() = null
}
@@ -0,0 +1,39 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE
// !LANGUAGE: +NewInference
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* PLACE: type-system, introduction-1 -> paragraph 6 -> sentence 2
* NUMBER: 3
* DESCRIPTION: The use of Boolean literals as the identifier (with backtick) in the class.
*/
// TESTCASE NUMBER: 1
fun <T: Any> case_1(x: T = null) {
println(x)
}
// TESTCASE NUMBER: 2
fun <T: K, K: Number> case_2(x: T = null) {
println(x)
}
// TESTCASE NUMBER: 3
fun <K: Number> case_3() {
class Case4<T: K> (x: T = null)
}
// TESTCASE NUMBER: 4
fun <T> case_4() {
class Case4(x: T = null)
}
// TESTCASE NUMBER: 5
fun <T, K> case_5(x: T) where T: Number?, K: Number {
if (x == null) {
class Case5 constructor(y: K = x)
}
}
@@ -0,0 +1,84 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER
// !LANGUAGE: +NewInference
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-296
* PLACE: type-system, introduction-1 -> paragraph 8 -> sentence 1
* RELEVANT PLACES: type-system, type-kinds, built-in-types, kotlin.any -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: The use of Boolean literals as the identifier (with backtick) in the class.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
fun case_1() {
checkSubtype<Any?>(10)
}
// TESTCASE NUMBER: 2
fun case_2(x: String) {
checkSubtype<Any?>(x)
}
// TESTCASE NUMBER: 3
class Case3(val x: String, val y: Any? = checkSubtype<Any?>(x))
// TESTCASE NUMBER: 4
class Case4(val x: String, val y: Any? = checkSubtype<Any?>(throw Exception()))
// TESTCASE NUMBER: 5
fun case_5() {
checkSubtype<Any?>(return)
}
// TESTCASE NUMBER: 6
fun case_6() {
while (true) {
checkSubtype<Any?>(break)
}
}
// TESTCASE NUMBER: 7
fun case_7(x: Boolean) {
while (x) {
checkSubtype<Any?>(continue)
}
}
// TESTCASE NUMBER: 8
fun case_8(x: Boolean) {
checkSubtype<Any?>({}())
}
// TESTCASE NUMBER: 9
fun case_9(x: Boolean) {
checkSubtype<Any?>(kotlin.Unit)
}
// TESTCASE NUMBER: 10
fun case_10(x: Boolean) {
checkSubtype<Any?>({while (true) {}}())
}
// TESTCASE NUMBER: 11
fun <T> case_11(x: T) {
checkSubtype<Any?>(x)
}
// TESTCASE NUMBER: 12
class Case12<K> {
inline fun <reified T: K> case_12(x: T) {
checkSubtype<Any?>(x)
}
}
// TESTCASE NUMBER: 13
class Case13<K> {
inline fun <reified T: K> case_12(x: T) {
x!!
checkSubtype<Any?>(x)
}
}
@@ -0,0 +1,87 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNREACHABLE_CODE
// !LANGUAGE: +NewInference
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* PLACE: type-system, introduction-1 -> paragraph 8 -> sentence 2
* NUMBER: 1
* DESCRIPTION: The use of Boolean literals as the identifier (with backtick) in the class.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
fun case_1() {
checkSubtype<Any?>(return)
}
// TESTCASE NUMBER: 2
fun case_2(x: Nothing) {
checkSubtype<Nothing>(x)
}
// TESTCASE NUMBER: 3
class Case3(val x: Any? = checkSubtype<Nothing?>(throw Exception()))
// TESTCASE NUMBER: 4
class Case4(val x: Nothing, val y: Any? = checkSubtype<Int>(x))
// TESTCASE NUMBER: 5
fun case_5() {
checkSubtype<Unit>(null!!)
}
// TESTCASE NUMBER: 6
fun <T> case_6() {
while (true) {
checkSubtype<Comparable<T>>(break)
}
}
// TESTCASE NUMBER: 7
fun <T> case_7(x: Boolean) {
while (x) {
checkSubtype<T>(continue)
}
}
// TESTCASE NUMBER: 8
class Case8<K> {
inline fun <reified T: K, L: Nothing?> case_12(x: L) {
x!!
checkSubtype<K>(x)
}
}
// TESTCASE NUMBER: 9
inline fun <reified L: Nothing?> case_9(x: L) = x!! as Int
// TESTCASE NUMBER: 10
fun <K> case_10(x: Nothing) = x as Iterable<K>
// TESTCASE NUMBER: 11
fun case_11() {
return as Nothing?
}
// TESTCASE NUMBER: 12
fun case_12() = (throw Exception()) as String
// TESTCASE NUMBER: 13
fun case_13() = null as Float?
// TESTCASE NUMBER: 14
inline fun <reified T, K> case_14() {
while (true) {
break as Map<T, K>
}
}
// TESTCASE NUMBER: 15
inline fun <reified T> case_15() {
while (true) {
continue as T
}
}
@@ -0,0 +1,107 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER
// !LANGUAGE: +NewInference
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-296
* PLACE: type-system, type-kinds, built-in-types, kotlin.any -> paragraph 1 -> sentence 1
* RELEVANT PLACES: type-system, introduction-1 -> paragraph 7 -> sentence 1
* NUMBER: 2
* DESCRIPTION: The use of Boolean literals as the identifier (with backtick) in the class.
* HELPERS: checkType, functions
*/
// TESTCASE NUMBER: 1
fun case_1() {
checkSubtype<Any>("")
val x: Any = ""
funWithAnyArg("")
checkSubtype<Any>("""
………
""")
val y: Any = """0"""
funWithAnyArg("""
=====
""".trimIndent())
}
// TESTCASE NUMBER: 2
fun case_2() {
checkSubtype<Any>(0)
fun z(): Any = 0
funWithAnyArg(0)
}
// TESTCASE NUMBER: 3
fun case_3() {
checkSubtype<Any>(-0f)
fun z(): Any = -.10000e1
funWithAnyArg(10.1)
}
// TESTCASE NUMBER: 4
fun case_4() {
checkSubtype<Any>(throw Exception())
var z1: Any = return@case_4
while (true) {
funWithAnyArg(break)
}
checkSubtype<Any>(null!!)
fun z2(): Any = null!!
funWithAnyArg(null!!)
}
// TESTCASE NUMBER: 5
fun case_5() {
checkSubtype<Any>('1')
var z: Any = 'a'
funWithAnyArg('…')
}
// TESTCASE NUMBER: 6
fun case_6() {
checkSubtype<Any>({})
val z: Any = { x: Any -> println(x) }
funWithAnyArg {}
}
// TESTCASE NUMBER: 7
fun case_7() {
checkSubtype<Any>(object {})
val z: Any = { x: Any -> object { val y = x } }(10)
funWithAnyArg(object : Comparable<Any> {
override fun compareTo(other: Any) = TODO()
})
}
// TESTCASE NUMBER: 8
fun case_8() {
checkSubtype<Any>(object {}::class)
val z: Any = {}::class
funWithAnyArg(0E0::class)
}
// TESTCASE NUMBER: 9
fun case_9() {
checkSubtype<Any>(object {}::class)
val z: Any = {}::class
funWithAnyArg(0E0::class)
}
// TESTCASE NUMBER: 10
fun case_10() {
checkSubtype<Any>(0 + 0.0)
val z: Any = if (true) "" else '"'
label@ {
funWithAnyArg(return@label)
}
}
// TESTCASE NUMBER: 11
fun case_11() {
checkSubtype<Any>(Any())
val z: Any = if (true) Any() else Any()
funWithAnyArg(Any())
}
@@ -0,0 +1,32 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -UNREACHABLE_CODE
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: type-system, type-kinds, built-in-types, kotlin.nothing -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: Check of Nothing type
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class Case1(val nothing: Nothing)
fun case1() {
val res = Case1(<!INAPPLICABLE_CANDIDATE!>Nothing<!>())
}
// TESTCASE NUMBER: 2
class Case2 {
var data: String? = null
}
fun case2(c: Case2) {
val testValue = c.data ?: throw IllegalArgumentException("data required")
testValue checkType { <!INAPPLICABLE_CANDIDATE!>check<!><Nothing>() }
}