diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.1.fir.kt new file mode 100644 index 00000000000..a7279a1bb28 --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.1.fir.kt @@ -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 diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.2.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.2.fir.kt new file mode 100644 index 00000000000..acd3ec43365 --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.2.fir.kt @@ -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) { + 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 +} diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.3.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.3.fir.kt new file mode 100644 index 00000000000..7d1a3f695b5 --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-6/neg/2.3.fir.kt @@ -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 case_1(x: T = null) { + println(x) +} + +// TESTCASE NUMBER: 2 +fun case_2(x: T = null) { + println(x) +} + +// TESTCASE NUMBER: 3 +fun case_3() { + class Case4 (x: T = null) +} + +// TESTCASE NUMBER: 4 +fun case_4() { + class Case4(x: T = null) +} + +// TESTCASE NUMBER: 5 +fun case_5(x: T) where T: Number?, K: Number { + if (x == null) { + class Case5 constructor(y: K = x) + } +} diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-8/pos/1.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-8/pos/1.1.fir.kt new file mode 100644 index 00000000000..eabdd76c4bb --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-8/pos/1.1.fir.kt @@ -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(10) +} + +// TESTCASE NUMBER: 2 +fun case_2(x: String) { + checkSubtype(x) +} + +// TESTCASE NUMBER: 3 +class Case3(val x: String, val y: Any? = checkSubtype(x)) + +// TESTCASE NUMBER: 4 +class Case4(val x: String, val y: Any? = checkSubtype(throw Exception())) + +// TESTCASE NUMBER: 5 +fun case_5() { + checkSubtype(return) +} + +// TESTCASE NUMBER: 6 +fun case_6() { + while (true) { + checkSubtype(break) + } +} + +// TESTCASE NUMBER: 7 +fun case_7(x: Boolean) { + while (x) { + checkSubtype(continue) + } +} + +// TESTCASE NUMBER: 8 +fun case_8(x: Boolean) { + checkSubtype({}()) +} + +// TESTCASE NUMBER: 9 +fun case_9(x: Boolean) { + checkSubtype(kotlin.Unit) +} + +// TESTCASE NUMBER: 10 +fun case_10(x: Boolean) { + checkSubtype({while (true) {}}()) +} + +// TESTCASE NUMBER: 11 +fun case_11(x: T) { + checkSubtype(x) +} + +// TESTCASE NUMBER: 12 +class Case12 { + inline fun case_12(x: T) { + checkSubtype(x) + } +} + +// TESTCASE NUMBER: 13 +class Case13 { + inline fun case_12(x: T) { + x!! + checkSubtype(x) + } +} diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-8/pos/2.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-8/pos/2.1.fir.kt new file mode 100644 index 00000000000..ce185564a5f --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/introduction-1/p-8/pos/2.1.fir.kt @@ -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(return) +} + +// TESTCASE NUMBER: 2 +fun case_2(x: Nothing) { + checkSubtype(x) +} + +// TESTCASE NUMBER: 3 +class Case3(val x: Any? = checkSubtype(throw Exception())) + +// TESTCASE NUMBER: 4 +class Case4(val x: Nothing, val y: Any? = checkSubtype(x)) + +// TESTCASE NUMBER: 5 +fun case_5() { + checkSubtype(null!!) +} + +// TESTCASE NUMBER: 6 +fun case_6() { + while (true) { + checkSubtype>(break) + } +} + +// TESTCASE NUMBER: 7 +fun case_7(x: Boolean) { + while (x) { + checkSubtype(continue) + } +} + +// TESTCASE NUMBER: 8 +class Case8 { + inline fun case_12(x: L) { + x!! + checkSubtype(x) + } +} + +// TESTCASE NUMBER: 9 +inline fun case_9(x: L) = x!! as Int + +// TESTCASE NUMBER: 10 +fun case_10(x: Nothing) = x as Iterable + +// 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 case_14() { + while (true) { + break as Map + } +} + +// TESTCASE NUMBER: 15 +inline fun case_15() { + while (true) { + continue as T + } +} diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/type-kinds/built-in-types/kotlin.any/p-1/pos/1.2.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/type-kinds/built-in-types/kotlin.any/p-1/pos/1.2.fir.kt new file mode 100644 index 00000000000..32d69e115af --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/type-kinds/built-in-types/kotlin.any/p-1/pos/1.2.fir.kt @@ -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("") + val x: Any = "" + funWithAnyArg("") + checkSubtype(""" + ……… + """) + val y: Any = """0""" + funWithAnyArg(""" + ===== + """.trimIndent()) +} + +// TESTCASE NUMBER: 2 +fun case_2() { + checkSubtype(0) + fun z(): Any = 0 + funWithAnyArg(0) +} + +// TESTCASE NUMBER: 3 +fun case_3() { + checkSubtype(-0f) + fun z(): Any = -.10000e1 + funWithAnyArg(10.1) +} + +// TESTCASE NUMBER: 4 +fun case_4() { + checkSubtype(throw Exception()) + var z1: Any = return@case_4 + while (true) { + funWithAnyArg(break) + } + checkSubtype(null!!) + fun z2(): Any = null!! + funWithAnyArg(null!!) +} + +// TESTCASE NUMBER: 5 +fun case_5() { + checkSubtype('1') + var z: Any = 'a' + funWithAnyArg('…') +} + +// TESTCASE NUMBER: 6 +fun case_6() { + checkSubtype({}) + val z: Any = { x: Any -> println(x) } + funWithAnyArg {} +} + +// TESTCASE NUMBER: 7 +fun case_7() { + checkSubtype(object {}) + val z: Any = { x: Any -> object { val y = x } }(10) + funWithAnyArg(object : Comparable { + override fun compareTo(other: Any) = TODO() + }) +} + +// TESTCASE NUMBER: 8 +fun case_8() { + checkSubtype(object {}::class) + val z: Any = {}::class + funWithAnyArg(0E0::class) +} + +// TESTCASE NUMBER: 9 +fun case_9() { + checkSubtype(object {}::class) + val z: Any = {}::class + funWithAnyArg(0E0::class) +} + +// TESTCASE NUMBER: 10 +fun case_10() { + checkSubtype(0 + 0.0) + val z: Any = if (true) "" else '"' + label@ { + funWithAnyArg(return@label) + } +} + +// TESTCASE NUMBER: 11 +fun case_11() { + checkSubtype(Any()) + val z: Any = if (true) Any() else Any() + funWithAnyArg(Any()) +} diff --git a/compiler/tests-spec/testData/diagnostics/linked/type-system/type-kinds/built-in-types/kotlin.nothing/p-1/neg/2.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/type-system/type-kinds/built-in-types/kotlin.nothing/p-1/neg/2.1.fir.kt new file mode 100644 index 00000000000..d616953c7f1 --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/type-system/type-kinds/built-in-types/kotlin.nothing/p-1/neg/2.1.fir.kt @@ -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(Nothing()) +} + + +// TESTCASE NUMBER: 2 +class Case2 { + var data: String? = null +} + +fun case2(c: Case2) { + val testValue = c.data ?: throw IllegalArgumentException("data required") + testValue checkType { check() } +}