diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/receivers/p-5/pos/3.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/receivers/p-5/pos/3.1.fir.kt new file mode 100644 index 00000000000..63ab3db7137 --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/receivers/p-5/pos/3.1.fir.kt @@ -0,0 +1,162 @@ +// !LANGUAGE: +NewInference +// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION +// SKIP_TXT + +/* + * KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE) + * + * SPEC VERSION: 0.1-278 + * PLACE: overload-resolution, receivers -> paragraph 5 -> sentence 3 + * RELEVANT PLACES: overload-resolution, receivers -> paragraph 5 -> sentence 1 + * overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 2 + * NUMBER: 1 + * DESCRIPTION: The phantom static implicit this receiver has higher priority than the current class companion object receiver + */ + +// FILE: TestCase.kt +// TESTCASE NUMBER: 1 +package testsCase1 + +open class A { + operator fun invoke() = print("invoke") +} + +enum class Super_2 { + V1, V2; + + companion object values : A() {} + + private fun case() { + values() + } + + enum class NestedWithCompanion { + V1; + + companion object values : A() {} + + private fun case() { + values() + } + } + + enum class Nested { + V1; + + private fun case() { + values() + } + } +} + +// FILE: TestCase.kt +// TESTCASE NUMBER: 2 +package testsCase2 + +open class A { + operator fun invoke(value: String) = print("invoke $value") +} + +enum class Super_2 { + V1, V2; + + companion object valueOf : A() {} + + private fun case() { + valueOf("") + } + + enum class NestedWithCompanion { + V1; + + companion object valueOf : A() {} + + private fun case() { + valueOf("") + } + } + + enum class Nested { + V1; + + private fun case() { + valueOf("") + } + } +} + + +// FILE: TestCase.kt +// TESTCASE NUMBER: 3 +package testsCase3 + +open class A { + operator fun invoke() = print("invoke") +} + +enum class Super_2 { + V1, V2; + + object values : A() {} + + private fun case() { + values() + } + + enum class NestedWithCompanion { + V1; + + object values : A() {} + + private fun case() { + values() + } + } + + enum class Nested { + V1; + + private fun case() { + values() + } + } +} + +// FILE: TestCase.kt +// TESTCASE NUMBER: 4 +package testsCase4 + +open class A { + operator fun invoke(value: String) = print("invoke $value") +} +open class B { + operator fun invoke(value: String) = print("invoke $value") +} + +enum class Super_2 { + V1, V2; + + object valueOf : A() {} + + private fun case() { + valueOf("") + } + + enum class NestedWithCompanion { + V1; + + object valueOf : B() {} + + private fun case() { + valueOf("") + } + } + + enum class Nested { + V1; + + private fun case() { + valueOf("") + } + } +} diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/receivers/p-5/pos/5.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/receivers/p-5/pos/5.1.fir.kt new file mode 100644 index 00000000000..f0b05bc3c2f --- /dev/null +++ b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/receivers/p-5/pos/5.1.fir.kt @@ -0,0 +1,200 @@ +// !LANGUAGE: +NewInference +// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION +// SKIP_TXT + +/* + * KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE) + * + * SPEC VERSION: 0.1-278 + * PLACE: overload-resolution, receivers -> paragraph 5 -> sentence 5 + * RELEVANT PLACES: overload-resolution, receivers -> paragraph 5 -> sentence 4 + * overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 2 + * NUMBER: 1 + * DESCRIPTION: Superclass companion object receivers are prioritized according to the inheritance order + */ + +// FILE: TestCase.kt +// TESTCASE NUMBER: 1 +package testsCase1 + +open class A { + operator fun invoke() = print("invoke") +} + +interface Super_0 { + companion object values : A() + + private fun case() { + values() + } +} + +open class Super_1 : Super_0 { + companion object values : A() {} + + private fun case() { + values() + } +} + +open class Super_2 : Super_1() { + + private fun case() { + values() + } + + class Nested : Super_1() { + companion object values : A() {} + + private fun case() { + values() + } + } + + inner class Inner : Super_1() { + private fun case() { + values() + } + } + +} + + +// FILE: TestCase.kt +// TESTCASE NUMBER: 2 +package testsCase2 + +open class A { + operator fun invoke(value: String) = print("invoke $value") +} + +interface Super_0 { + companion object valueOf : A() + + private fun case() { + valueOf("") + } +} + +open class Super_1 : Super_0 { + companion object valueOf : A() {} + + private fun case() { + valueOf("") + } +} + +open class Super_2 : Super_1() { + + private fun case() { + valueOf("") + } + + class Nested : Super_1() { + companion object valueOf : A() {} + + private fun case() { + valueOf("") + } + } + + inner class Inner : Super_1() { + private fun case() { + valueOf("") + } + } + +} + +// FILE: TestCase.kt +// TESTCASE NUMBER: 3 +package testsCase3 + +open class A { + operator fun invoke() = print("invoke") +} + +interface Super_0 { + object values : A() + + private fun case() { + values() + } +} + +open class Super_1 : Super_0 { + object values : A() {} + + private fun case() { + values() + } +} + +open class Super_2 : Super_1() { + + private fun case() { + values() + } + + class Nested : Super_1() { + object values : A() {} + + private fun case() { + values() + } + } + + inner class Inner : Super_1() { + private fun case() { + values() + } + } + +} + + +// FILE: TestCase.kt +// TESTCASE NUMBER: 4 +package testsCase4 + +open class A { + operator fun invoke(value: String) = print("invoke $value") +} + +interface Super_0 { + object valueOf : A() + + private fun case() { + valueOf("") + } +} + +open class Super_1 : Super_0 { + object valueOf : A() {} + + private fun case() { + valueOf("") + } +} + +open class Super_2 : Super_1() { + + private fun case() { + valueOf("") + } + + class Nested : Super_1() { + object valueOf : A() {} + + private fun case() { + valueOf("") + } + } + + inner class Inner : Super_1() { + private fun case() { + valueOf("") + } + } + +}