[FIR] Fix TEST SPEC tests

Ensure the test data contents for both the frontends
are identical. This is needed for proper analysis of
K2-differences.
This commit is contained in:
Nikolay Lunyak
2023-06-12 15:20:46 +03:00
committed by Space Team
parent e6633d3d92
commit 7541732752
583 changed files with 4053 additions and 5418 deletions
@@ -1,6 +1,14 @@
// !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-401
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver, call-with-an-explicit-type-receiver -> paragraph 3 -> sentence 2
* NUMBER: 1
* DESCRIPTION:
*/
/*
* TESTCASE NUMBER: 1
@@ -1,6 +1,20 @@
// !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-268
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
* PRIMARY LINKS: overload-resolution, c-level-partition -> paragraph 1 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 3 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 2 -> sentence 1
* overload-resolution, receivers -> paragraph 7 -> sentence 2
* overload-resolution, receivers -> paragraph 7 -> sentence 3
* NUMBER: 1
* DESCRIPTION: sets of non-extension member callables only
*/
package tests.test2
// TESTCASE NUMBER: 1
@@ -1,5 +1,20 @@
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-268
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
* PRIMARY LINKS: overload-resolution, c-level-partition -> paragraph 1 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 3 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 3 -> sentence 2
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 2 -> sentence 1
* NUMBER: 2
* DESCRIPTION: extension calls with explicit and implicit receiver
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-36475
*/
// TESTCASE NUMBER: 1
class Case1 {
fun bar() {
@@ -1,6 +1,21 @@
// !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-268
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 3
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 4
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 5
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 11 -> sentence 1
* overload-resolution, receivers -> paragraph 5 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-trailing-lambda-expressions -> paragraph 1 -> sentence 2
* NUMBER: 4
* DESCRIPTION: sets of local, explicitly imported, declared in the package scope and star-imported extension callables
*/
// FILE: Extensions.kt
package libPackage
@@ -1,6 +1,18 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNREACHABLE_CODE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -IMPLICIT_NOTHING_RETURN_TYPE -DEBUG_INFO_LEAKING_THIS -EXTENSION_SHADOWED_BY_MEMBER
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-280
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 3 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 2 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: Implicit receiver: sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables
*/
// TESTCASE NUMBER: 1, 2, 3, 4, 5
// FILE: Marker.kt
@@ -1,6 +1,18 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNREACHABLE_CODE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -IMPLICIT_NOTHING_RETURN_TYPE -DEBUG_INFO_LEAKING_THIS -EXTENSION_SHADOWED_BY_MEMBER
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-300
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-with-trailing-lambda-expressions -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 3 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 2 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-named-parameters -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: call-with-trailing-lambda-expressions,Implicit receiver: sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables
*/
// TESTCASE NUMBER: 1, 2, 3, 4, 5
// FILE: Marker.kt
@@ -1,62 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
fun case1() {
<!DEBUG_INFO_CALL("fqName: libPackageCase1.listOf; typeCall: function")!>listOf(elements = arrayOf(1), body = { "" })<!>
}
// FILE: Lib1.kt
package libPackageCase1
fun <T> listOf(vararg elements: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
fun case2() {
<!DEBUG_INFO_CALL("fqName: libPackageCase2.listOf; typeCall: function")!>listOf(elements = arrayOf(1), body = { "" })<!>
}
class A {
operator fun <T> invoke(): T = TODO()
}
// FILE: Lib2.kt
package libPackageCase2
import testsCase2.*
fun <T> listOf(vararg elements: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
val listOf: A
get() = A()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
fun case3() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements = arrayOf(1), body = { "" })<!>
}
class A {
operator fun <T> invoke(vararg elements: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
package libPackageCase3
import testsCase3.*
private fun <T> listOf(vararg elements: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
val listOf: A
get() = A()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,153 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE -EXTENSION_SHADOWED_BY_MEMBER -EXTENSION_FUNCTION_SHADOWED_BY_MEMBER_PROPERTY_WITH_INVOKE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.listOf
class Case1() {
fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun case1() {
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase1.Case1.listOf; typeCall: function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
import testsCase1.*
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
import libPackageCase2Explicit.listOf
class Case2() {
fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
val listOf: A
get() = A()
fun case1() {
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase2.Case2.listOf; typeCall: function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
package libPackageCase2
import testsCase2.*
val Case2.listOf: A
get() = A()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib4.kt
package libPackageCase2Explicit
import testsCase2.*
val Case2.listOf: A
get() = A()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
package testsCase2
val Case2.listOf: A
get() = A()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
import libPackageCase3Explicit.listOf
class Case3() {
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T =
{ TODO() }): List<T> = TODO()
val listOf: A
get() = A()
fun case1() {
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib5.kt
// TESTCASE NUMBER: 3
package libPackageCase3
import testsCase3.*
val Case3.listOf: A
get() = A()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib6.kt
// TESTCASE NUMBER: 3
package libPackageCase3Explicit
import testsCase3.*
val Case3.listOf: A
get() = A()
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
// TESTCASE NUMBER: 3
package testsCase3
val Case3.listOf: A
get() = A()
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE -EXTENSION_SHADOWED_BY_MEMBER -EXTENSION_FUNCTION_SHADOWED_BY_MEMBER_PROPERTY_WITH_INVOKE
// SKIP_TXT
@@ -1,182 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE -EXTENSION_FUNCTION_SHADOWED_BY_MEMBER_PROPERTY_WITH_INVOKE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.listOf
class Case1() {
fun case1_0() {
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase1.Case1.case1_0.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
fun case1_1() {
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase1.Case1.case1_0.case1_1.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
}
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
import testsCase1.*
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
/*
* TESTCASE NUMBER: 2
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-37179
*/
package testsCase2
import libPackageCase2.*
import libPackageCase2Explicit.listOf
class Case2() {
fun case1_0() {
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase2.Case2.case1_0.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
fun case1_1() {
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase2.Case2.case1_0.case1_1.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
val Case2.listOf: A
get() = A()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T =
{ TODO() }): List<T> = TODO()
fun case2_0() {
<!DEBUG_INFO_CALL("fqName: testsCase2.Case2.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
// TESTCASE NUMBER: 2
package libPackageCase2
import testsCase2.*
val Case2.listOf: A
get() = A()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib4.kt
// TESTCASE NUMBER: 2
package libPackageCase2Explicit
import testsCase2.*
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
// TESTCASE NUMBER: 2
package testsCase2
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase3.kt
/*
* TESTCASE NUMBER: 3
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-37179
*/
package testsCase3
import libPackageCase3.*
import libPackageCase3Explicit.listOf
class Case3() {
fun case1_0() {
//fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
fun case1_1() {
// fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
val Case3.listOf: A
get() = A()
//fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun case2_0() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib5.kt
// TESTCASE NUMBER: 3
package libPackageCase3
import testsCase3.*
val Case3.listOf: A
get() = A()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib6.kt
// TESTCASE NUMBER: 3
package libPackageCase3Explicit
import testsCase3.*
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
// TESTCASE NUMBER: 3
package testsCase3
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE -EXTENSION_FUNCTION_SHADOWED_BY_MEMBER_PROPERTY_WITH_INVOKE
// SKIP_TXT
@@ -1,125 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.listOf
class Case1() {
fun case1() {
<!DEBUG_INFO_CALL("fqName: libPackageCase1Explicit.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
import testsCase1.*
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
import libPackageCase2Explicit.listOf
class Case2() {
fun case1() {
<!DEBUG_INFO_CALL("fqName: libPackageCase2Explicit.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
package libPackageCase2
import testsCase2.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib4.kt
package libPackageCase2Explicit
import testsCase2.*
val Case2.listOf: A
get() = A()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
package testsCase2
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
import libPackageCase3Explicit.listOf
class Case3() {
fun case1() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib5.kt
package libPackageCase3
import testsCase3.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib6.kt
package libPackageCase3Explicit
import testsCase3.*
val Case3.listOf: A
get() = A()
private fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
package testsCase3
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,115 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.listOf
class Case1() {
fun case1() {
<!DEBUG_INFO_CALL("fqName: testsCase1.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
import libPackageCase2Explicit.listOf
class Case2() {
fun case1() {
<!DEBUG_INFO_CALL("fqName: testsCase2.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
package libPackageCase2
import testsCase2.*
val Case2.listOf: A
get() = A()
fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib4.kt
package libPackageCase2Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
package testsCase2
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
val Case2.listOf: A
get() = A()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
import libPackageCase3Explicit.listOf
class Case3() {
fun case1() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib5.kt
package libPackageCase3
import testsCase3.*
fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib6.kt
package libPackageCase3Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
package testsCase3
val Case3.listOf: A
get() = A()
private fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,112 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.listOf
class Case1() {
fun case() {
<!DEBUG_INFO_CALL("fqName: libPackageCase1.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case1.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
import libPackageCase2Explicit.listOf
class Case2() {
fun case() {
<!DEBUG_INFO_CALL("fqName: libPackageCase2.listOf; typeCall: extension function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
package libPackageCase2
import testsCase2.*
val Case2.listOf: A
get() = A()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
fun <T> Case2.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib4.kt
package libPackageCase2Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
package testsCase2
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
import libPackageCase3Explicit.listOf
class Case3() {
fun case() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib5.kt
package libPackageCase3
import testsCase3.*
val Case3.listOf: A
get() = A()
fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
private fun <T> Case3.listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib6.kt
package libPackageCase3Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
package testsCase3
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,110 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 0, 1, 2, 3, 4
// FILE: Extensions1.kt
package libPackage
class A() {
infix fun foo(x: ()->Int) = "member fun foo"
}
// FILE: Extensions2.kt
// TESTCASE NUMBER: 0
package sentence3
import libPackage.A
infix fun A.foo(x: ()->Int) = "pack scope extension fun foo"
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.A
class Case1() {
infix fun A.foo(x: ()->Int) = "local extension fun foo"
fun case1() {
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo {1}<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo {1}<!>
}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package sentence3
import libPackage.A
interface Case2 {
infix fun A.foo(x: ()->Int) = "local extension fun foo"
fun case2() {
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo {1}<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo {1}<!>
}
}
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPack
import libPackage.A
infix fun A.foo(x: ()->Int) = "my package scope top level trim"
fun case3() {
infix fun A.foo(x: ()->Int) = "my local scope trim"
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo {1}<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo {1}<!>
}
// FILE: TestCase4.kt
// TESTCASE NUMBER: 4
package testPackNew
import libPackage.A
infix fun A.foo(x: ()->Int) = "my package scope top level trim"
fun case4() {
infix fun A.foo(x: ()->Int) = "my local trim"
fun subfun() {
infix fun A.foo(x: ()->Int) = "my local trim"
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo {1}<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo {1}<!>
}
}
// FILE: TestCase5.kt
// TESTCASE NUMBER: 5
package testPackNew
class A() {
fun foo(i: ()->Int) {}
infix fun A.foo(i: ()->Int) {}
fun bar(a: A) {
//todo: add info if function is infix one
<!DEBUG_INFO_CALL("fqName: testPackNew.A.foo; typeCall: infix extension function")!>a foo {1}<!>
}
fun buz(a: A) {
fun foo(i: ()->Int) {}
//todo: add info if function is infix one
<!DEBUG_INFO_CALL("fqName: testPackNew.A.foo; typeCall: infix extension function")!>a foo {1}<!>
}
fun boo(a: A) {
infix fun A.foo(i: ()->Int) {}
<!DEBUG_INFO_CALL("fqName: testPackNew.A.boo.foo; typeCall: infix extension function")!>a foo {1}<!>
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER
// SKIP_TXT
@@ -1,95 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.listOf
fun case1() {
<!DEBUG_INFO_CALL("fqName: libPackageCase1Explicit.listOf; typeCall: function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
// FILE: Lib1.kt
package libPackageCase1
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
import libPackageCase2Explicit.listOf
fun case2() {
<!DEBUG_INFO_CALL("fqName: libPackageCase2Explicit.listOf; typeCall: function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib3.kt
package libPackageCase2
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib4.kt
package libPackageCase2Explicit
import testsCase2.*
val listOf: A
get() = A()
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
package testsCase2
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
import libPackageCase3Explicit.listOf
fun case3() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
// FILE: Lib5.kt
package libPackageCase3
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: Lib6.kt
package libPackageCase3Explicit
import testsCase3.*
val listOf: A
get() = A()
private fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
package testsCase3
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,78 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libPackageCase1.*
fun case1() {
<!DEBUG_INFO_CALL("fqName: testsCase1.listOf; typeCall: function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
// FILE: Lib1.kt
package libPackageCase1
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack1.kt
package testsCase1
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libPackageCase2.*
fun case2() {
<!DEBUG_INFO_CALL("fqName: testsCase2.listOf; typeCall: function")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
// FILE: Lib2.kt
package libPackageCase2
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack2.kt
package testsCase2
import testsCase2.*
public val listOf: A
get() = A()
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libPackageCase3.*
fun case3() {
<!DEBUG_INFO_CALL("fqName: testsCase3.A.invoke; typeCall: variable&invoke")!>listOf(elements1 = arrayOf(1), body = { "" })<!>
}
// FILE: Lib3.kt
package libPackageCase3
public fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
// FILE: LibtestsPack3.kt
package testsCase3
import testsCase3.*
public val listOf: A
get() = A()
class A {
operator fun <T> invoke(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
}
private fun <T> listOf(vararg elements1: T = TODO(), body: () -> T = { TODO() }): List<T> = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,44 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> emptyArray(): Array<T> = TODO()
fun <T> Case1.emptyArray(): Array<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Explicit
import testsCase1.*
fun <T> Case1.emptyArray(): Array<T> = TODO()
public fun <T> emptyArray(): Array<T> = TODO()
// FILE: Lib3.kt
package libPackageCase1ExplicitDuplicate
import testsCase1.*
fun <T> Case1.emptyArray(): Array<T> = TODO()
public fun <T> emptyArray(): Array<T> = TODO()
// FILE: LibtestsPack.kt
package testsCase1
fun <T> Case1.emptyArray(): Array<T> = TODO()
public fun <T> emptyArray(): Array<T> = TODO()
// FILE: TestCase.kt
package testsCase1
import libPackageCase1.*
import libPackageCase1Explicit.emptyArray
import libPackageCase1ExplicitDuplicate.emptyArray
// TESTCASE NUMBER: 1
class Case1(){
fun case1() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>emptyArray<!><Int>()
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,6 +1,22 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-278
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 2
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 4 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 4
* overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 8 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 6 -> sentence 1
* overload-resolution, building-the-overload-candidate-set-ocs, call-with-specified-type-parameters -> paragraph 1 -> sentence 2
* NUMBER: 4
* DESCRIPTION: The overload candidate sets for each pair of implicit receivers: declared in the package scope extension callables
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
@@ -1,39 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
// FILE: Lib1.kt
package libPackageCase1
import testsCase1.*
public fun <T> emptyArray(): Array<T> = TODO()
fun <T> Case1.emptyArray(): Array<T> = TODO()
// FILE: Lib2.kt
package libPackageCase1Duplicate
import testsCase1.*
public fun <T> emptyArray(): Array<T> = TODO()
fun <T> Case1.emptyArray(): Array<T> = TODO()
// FILE: Lib3.kt
package libPackageCase1Explicit
public fun <T> emptyArray(): Array<T> = TODO()
// FILE: LibtestsPack.kt
package testsCase1
public fun <T> emptyArray(): Array<T> = TODO()
// FILE: TestCase.kt
package testsCase1
import libPackageCase1.*
import libPackageCase1Duplicate.*
import libPackageCase1Explicit.emptyArray
// TESTCASE NUMBER: 1
class Case1(){
fun case1() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>emptyArray<!><Int>()
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -NOTHING_TO_INLINE
// SKIP_TXT
@@ -1,28 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package tests.case1
import lib.case1.*
interface I
class A : I
class B : I
fun case1(){
A.<!UNRESOLVED_REFERENCE!>invoke<!>()
}
// FILE: Lib.kt
package lib.case1
//fun A() : String = ""
object A {
/*operator*/ fun invoke() : Int = 1
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-464
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 4
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 6
* NUMBER: 2
* DESCRIPTION: Top-level non-extension functions named f: callables implicitly imported into the current file;
*/
// FILE: TestCase1.kt
@@ -1,112 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
*/
package testPackCase1
import libCase1.*
import kotlin.text.*
fun case1() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>Regex<!>("")
}
// FILE: Lib1.kt
package libCase1
fun Regex(pattern: String) {}
// FILE: TestCase2.kt
/*
* TESTCASE NUMBER: 2
* ISSUES: KT-39073
*/
package testPackCase2
import libCase2.a.*
import libCase2.b.*
import kotlin.text.*
fun case2() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>Regex<!>("")
}
// FILE: Lib2.kt
package libCase2.a
fun Regex(pattern: String) {}
// FILE: Lib3.kt
package libCase2.b
fun Regex(pattern: String) {}
// FILE: TestCase4.kt
/*
* TESTCASE NUMBER: 4
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-39157
*/
package testPackCase4
import libCase4.a.*
import libCase4.b.*
import kotlin.text.*
fun case4() {
<!DEBUG_INFO_CALL("fqName: libCase4.a.Regex; typeCall: function")!>Regex("")<!>
}
// FILE: Lib4.kt
package libCase4.a
fun Regex(pattern: String) {}
// FILE: Lib5.kt
package libCase4.b
class Regex(pattern: String) {}
// FILE: TestCase5.kt
/*
* TESTCASE NUMBER: 5
* UNEXPECTED BEHAVIOUR
*/
package testPackCase5
import libCase5.a.*
import libCase5.b.*
fun case5() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>Regex<!>("")
}
// FILE: Lib6.kt
package libCase5.a
fun Regex(pattern: String) {}
// FILE: Lib7.kt
package libCase5.b
class Regex(pattern: String) {}
// FILE: TestCase6.kt
/*
* TESTCASE NUMBER: 6
* UNEXPECTED BEHAVIOUR
*/
package testPackCase6
import libCase6.a.*
import libCase6.b.*
fun case6() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>MyRegex<!>("")
}
// FILE: Lib8.kt
package libCase6.a
fun MyRegex(pattern: String) {}
// FILE: Lib9.kt
package libCase6.b
class MyRegex(pattern: String) {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,15 @@
// !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-464
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 4
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 5
* NUMBER: 2
* DESCRIPTION: Top-level non-extension functions named f: callables explicitly imported into the current file;
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,15 @@
// !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-464
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 4
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 6
* NUMBER: 3
* DESCRIPTION: Top-level non-extension functions named f: callables implicitly imported into the current file;
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,15 @@
// !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-464
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 4
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 6
* NUMBER: 4
* DESCRIPTION: Top-level non-extension functions named f: callables implicitly imported into the current file;
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,16 @@
// !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-464
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 4
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 5
* declarations, type-alias -> paragraph 1 -> sentence 1
* NUMBER: 5
* DESCRIPTION: Top-level non-extension functions named f: callables explicitly imported into the current file;
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,16 @@
// !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-464
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 4
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 5
* declarations, type-alias -> paragraph 1 -> sentence 1
* NUMBER: 6
* DESCRIPTION: Top-level non-extension functions named f: callables explicitly imported into the current file;
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,14 @@
// !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-401
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 6
* NUMBER: 2
* DESCRIPTION:
*/
// FILE: TestCase11.kt
/*
@@ -1,6 +1,14 @@
// !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-401
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, call-without-an-explicit-receiver -> paragraph 5 -> sentence 6
* NUMBER: 3
* DESCRIPTION:
*/
// FILE: TestCase1.kt
/*
@@ -1,84 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER
// SKIP_TXT
// FILE: Extensions1.kt
package libPackage
class A() {
fun foo(x: Int) = "member fun foo"
}
// FILE: Extensions2.kt
// TESTCASE NUMBER: 1, 2, 3, 4
package sentence3
import libPackage.A
fun A.foo(x: Int) = "pack scope extension fun foo"
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.A
class Case1() {
fun A.foo(x: Int) = "local extension fun foo"
fun case1() {
val a = A()
a <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
A() <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package sentence3
import libPackage.A
interface Case2 {
fun A.foo(x: Int) = "local extension fun foo"
fun case2() {
val a = A()
a <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
A() <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
}
}
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPack
import libPackage.A
fun A.foo(x: Int) = "my package scope top level contains"
fun case3() {
fun A.foo(x: Int) ="my local scope contains"
val a = A()
a <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
A() <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
}
// FILE: TestCase4.kt
// TESTCASE NUMBER: 4
package testPackNew
import libPackage.A
fun A.foo(x: Int) = "my package scope top level contains"
fun case4() {
fun A.foo(x: Int) = "my local contains"
fun subfun() {
fun A.foo(x: Int) = "my local contains"
val a = A()
a <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
A() <!INFIX_MODIFIER_REQUIRED!>foo<!> 1
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER
// SKIP_TXT
@@ -1,103 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: Extensions1.kt
package libPackage
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my contains")
return true
}
// FILE: Extensions2.kt
package sentence3
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope contains")
return true
}
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.contains
class Case1() {
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my local class scope contains")
return true
}
fun case1() {
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package sentence3
import libPackage.contains
interface Case2 {
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my local interface scope contains")
return true
}
fun case2() {
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
}
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPack
import libPackage.contains
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope top level contains")
return true
}
fun case3() {
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope top level contains")
return true
}
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
// FILE: TestCase4.kt
// TESTCASE NUMBER: 4
package testPackNew
import libPackage.contains
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope top level contains")
return true
}
fun case4() {
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my local contains")
return true
}
fun subfun() {
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my local contains")
return true
}
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,48 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: Extensions1.kt
package libPackage
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my contains")
return true
}
// FILE: Extensions2.kt
package sentence3
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope contains")
return true
}
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.contains
fun case1() {
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package sentence3
import libPackage.contains
fun case2() {
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my local contains")
return true
}
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,45 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: Extensions1.kt
package libPackage
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my contains")
return true
}
// FILE: Extensions2.kt
package sentence3
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope contains")
return true
}
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.*
fun case1() {
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testPack
import libPackage.*
operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope top level contains")
return true
}
fun case2() {
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,20 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: Extensions.kt
package libPackage
private infix operator fun CharSequence.contains(regex: Regex): Boolean {
println("my contains")
return true
}
// FILE: TestCase2.kt
package sentence3
import libPackage.* //nothing to import, extension is private
// TESTCASE NUMBER: 1
fun case1() {
val regex = Regex("")
"" <!INFIX_MODIFIER_REQUIRED!>contains<!> regex
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,109 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 0, 1, 2, 3, 4
// FILE: Extensions1.kt
package libPackage
class A() {
infix fun foo(x: Int) = "member fun foo"
}
// FILE: Extensions2.kt
// TESTCASE NUMBER: 0
package sentence3
import libPackage.A
infix fun A.foo(x: Int) = "pack scope extension fun foo"
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.A
class Case1() {
infix fun A.foo(x: Int) = "local extension fun foo"
fun case1() {
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo 1<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo 1<!>
}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package sentence3
import libPackage.A
interface Case2 {
infix fun A.foo(x: Int) = "local extension fun foo"
fun case2() {
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo 1<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo 1<!>
}
}
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPack
import libPackage.A
infix fun A.foo(x: Int) = "my package scope top level contains"
fun case3() {
infix fun A.foo(x: Int) = "my local scope contains"
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo 1<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo 1<!>
}
// FILE: TestCase4.kt
// TESTCASE NUMBER: 4
package testPackNew
import libPackage.A
infix fun A.foo(x: Int) = "my package scope top level contains"
fun case4() {
infix fun A.foo(x: Int) = "my local contains"
fun subfun() {
infix fun A.foo(x: Int) = "my local contains"
val a = A()
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>a foo 1<!>
<!DEBUG_INFO_CALL("fqName: libPackage.A.foo; typeCall: infix function")!>A() foo 1<!>
}
}
// FILE: TestCase5.kt
// TESTCASE NUMBER: 5
package testPackNew
class A() {
fun foo(i: Int) {}
infix fun A.foo(i: Int) {}
fun bar(a: A) {
//todo: add info if function is infix one
<!DEBUG_INFO_CALL("fqName: testPackNew.A.foo; typeCall: infix extension function")!>a foo 1<!>
}
fun buz(a: A){
fun foo(i: Int) {}
//todo: add info if function is infix one
<!DEBUG_INFO_CALL("fqName: testPackNew.A.foo; typeCall: infix extension function")!>a foo 1<!>
}
fun boo(a: A){
infix fun A.foo(i: Int) {}
<!DEBUG_INFO_CALL("fqName: testPackNew.A.boo.foo; typeCall: infix extension function")!>a foo 1<!>
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER
// SKIP_TXT
@@ -1,46 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: Extensions1.kt
package libPackage
infix operator fun CharSequence.contains(regex: Regex): Boolean {
println("my contains")
return true
}
// FILE: Extensions2.kt
package sentence3
infix operator fun CharSequence.contains(regex: Regex): Boolean {
println("my package scope contains")
return true
}
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package sentence3
import libPackage.contains
fun case1() {
val regex = Regex("")
<!DEBUG_INFO_CALL("fqName: libPackage.contains; typeCall: infix operator extension function")!>"" contains regex<!>
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package sentence3
import libPackage.contains
fun case2() {
infix operator fun CharSequence.contains(regex: Regex): Boolean {
println("my local contains")
return true
}
val regex = Regex("")
<!DEBUG_INFO_CALL("fqName: sentence3.case2.contains; typeCall: infix operator extension function")!>"" contains regex<!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* NUMBER: 1
* DESCRIPTION: call with lambda as argument
*/
// FILE: TestCase1.kt
/*
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* NUMBER: 2
* DESCRIPTION: plusAssign as inline function
*/
// FILE: TestCase1.kt
/*
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* NUMBER: 5
* DESCRIPTION: inline plusAssign functions
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-39819
*/
// TESTCASE NUMBER: 1
// FILE: TestCase1.kt
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* NUMBER: 6
* DESCRIPTION: without inline plusAssign functions
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-39820
*/
// FILE: TestCase1.kt
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* NUMBER: 7
* DESCRIPTION: without inline plusAssign functions
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-39820
*/
// FILE: TestCase1.kt
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* NUMBER: 8
* DESCRIPTION: without inline plusAssign functions
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-39820
*/
// FILE: TestCase1.kt
@@ -1,6 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-448
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 1 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, determining-function-applicability-for-a-specific-call, description -> paragraph 2 -> sentence 2
* NUMBER: 9
* DESCRIPTION: without inline plusAssign functions
*/
// FILE: TestCase1.kt
@@ -1,35 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: LibCase1b.kt
// TESTCASE NUMBER: 1
package LibPackCase1.b
import testPackCase1.B
import LibPackCase1.a.*
inline operator fun B?.plusAssign( c: ()->C) { //(2)
val x = {1}
<!DEBUG_INFO_CALL("fqName: LibPackCase1.a.plusAssign; typeCall: inline operator extension function")!>this += x<!> //to (1)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>this += x<!>
}
class C
// FILE: TestCase1.kt
package testPackCase1
import LibPackCase1.a.*
import LibPackCase1.b.*
class B {
private inline operator fun plusAssign(crossinline c: ()->C) {}
private inline operator fun plus(crossinline c: ()->C): C =C()
}
// FILE: LibCase1a.kt
package LibPackCase1.a
import testPackCase1.B
inline operator fun B?.plusAssign( c: ()->Int) { } //(1)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,114 +0,0 @@
// !DIAGNOSTICS: -UNNECESSARY_SAFE_CALL -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
fun case1(a: A, c: C) {
a?.b <!UNSAFE_CALL!>.<!><!DEBUG_INFO_CALL("fqName: testPackCase1.B.plusAssign; typeCall: operator function")!>plusAssign(c)<!>
val x = {
a?.b<!UNSAFE_CALL!>.<!><!DEBUG_INFO_CALL("fqName: testPackCase1.B.plusAssign; typeCall: operator function")!>plusAssign(c)<!>
}()
a?.b<!UNSAFE_CALL!>.<!><!DEBUG_INFO_CALL("fqName: testPackCase1.B.plusAssign; typeCall: operator function")!>plusAssign({ c }())<!>
}
class A(val b: B)
class B {
operator fun plusAssign(c: C) {
print("1")
}
operator fun plus(c: C): C {
print("2")
return c
}
}
class C
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testPackCase2
fun case2(a: A?, c: C) {
<!DEBUG_INFO_CALL("fqName: testPackCase2.B.plusAssign; typeCall: operator function")!>a?.b += c<!>
a?.b.<!DEBUG_INFO_CALL("fqName: testPackCase2.plusAssign; typeCall: operator extension function")!>plusAssign(c)<!>
val x = {
<!DEBUG_INFO_CALL("fqName: testPackCase2.B.plusAssign; typeCall: operator function")!>a?.b += c<!>
a?.b.<!DEBUG_INFO_CALL("fqName: testPackCase2.plusAssign; typeCall: operator extension function")!>plusAssign(c)<!>
}()
<!DEBUG_INFO_CALL("fqName: testPackCase2.B.plusAssign; typeCall: operator function")!>a?.b += { c }()<!>
a?.b.<!DEBUG_INFO_CALL("fqName: testPackCase2.plusAssign; typeCall: operator extension function")!>plusAssign({ c }())<!>
}
class A(val b: B)
class B {
operator fun plusAssign(c: C) {
print("1")
}
operator fun plus(c: C): C {
print("2")
return c
}
}
operator fun B?.plusAssign(c: C) {
print("3")
}
class C
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPackCase3
fun case3(a: A?, c: C) {
<!DEBUG_INFO_CALL("fqName: testPackCase3.B.plusAssign; typeCall: operator function")!>a?.b += c<!>
a?.b.<!DEBUG_INFO_CALL("fqName: testPackCase3.plusAssign; typeCall: operator extension function")!>plusAssign(c)<!>
val x = {
<!DEBUG_INFO_CALL("fqName: testPackCase3.B.plusAssign; typeCall: operator function")!>a?.b += c<!>
a?.b.<!DEBUG_INFO_CALL("fqName: testPackCase3.plusAssign; typeCall: operator extension function")!>plusAssign(c)<!>
}()
<!DEBUG_INFO_CALL("fqName: testPackCase3.B.plusAssign; typeCall: operator function")!>a?.b += { c }()<!>
a?.b.<!DEBUG_INFO_CALL("fqName: testPackCase3.plusAssign; typeCall: operator extension function")!>plusAssign({ c }())<!>
}
class A(val b: B)
class B {
operator fun plusAssign(c: C) {
print("1")
}
operator fun plus(c: C): C {
print("2")
return c
}
}
operator fun B?.plusAssign(c: C) {
print("3")
}
operator fun B?.plusAssign(c: Any) {
print("4")
}
class C
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNNECESSARY_SAFE_CALL -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,5 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
@@ -7,18 +6,16 @@
*
* SPEC VERSION: 0.1-268
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 2 -> sentence 3
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
* PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
* overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 4 -> sentence 1
* NUMBER: 1
* NUMBER: 2
* DESCRIPTION: Non-extension member callables
*/
// FILE: LibCase1.kt
// TESTCASE NUMBER: 1, 2
// TESTCASE NUMBER: 1, 2
// FILE: LibCase11.kt
// TESTCASE NUMBER: 1
package libPackage
import testPackCase1.Case
import testPackCase1.Case.Inv
import testPackCase1.Case.E
@@ -28,61 +25,61 @@ operator fun Case.E.plus(value: Int) = Inv()
operator fun Case.Inv.invoke(i: Int) = 1
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1, 2
// FILE: TestCase11.kt
// TESTCASE NUMBER: 1
package testPackCase1
import libPackage.plus
import libPackage.*
import libPackage.invoke
class Case() {
class E(val plus: Inv? = null) {
operator fun plus(value: Int) = Case()
/*operator*/ fun plus(value: Int) = Case()
}
class Inv() {
operator fun invoke(value: Int) = Case()
/*operator*/ fun invoke(value: Int) = Case()
}
fun foo(e: E) {
operator fun E.plus(value: Int) = Case()
run {
<!DEBUG_INFO_CALL("fqName: testPackCase1.Case.E.plus; typeCall: operator function")!>e+1<!>
<!DEBUG_INFO_CALL("fqName: testPackCase1.Case.foo.plus; typeCall: operator extension function")!>e + 1<!>
}
<!DEBUG_INFO_CALL("fqName: testPackCase1.Case.E.plus; typeCall: operator function")!>e+1<!>
e.<!DEBUG_INFO_CALL("fqName: testPackCase1.Case.E.plus; typeCall: operator function")!>plus(1)<!>
e.plus?.<!DEBUG_INFO_CALL("fqName: testPackCase1.Case.Inv.invoke; typeCall: operator function")!>invoke(1)<!> //ok
<!DEBUG_INFO_CALL("fqName: testPackCase1.Case.foo.plus; typeCall: operator extension function")!>e + 1<!>
}
}
// FILE: LibCase3.kt
// TESTCASE NUMBER: 3, 4
// FILE: LibCase12.kt
// TESTCASE NUMBER: 2
package libPackage
import testPackCase3.Case
import testPackCase3.Case.Inv
import testPackCase3.Case.E
import testPackCase2.Case
import testPackCase2.Case.Inv
import testPackCase2.Case.E
operator fun Case.E.plus(value: Int) = Inv()
operator fun Case.E.plus(value: Int) = Inv()
operator fun Case.Inv.invoke(i: Int) = 1
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3, 4
package testPackCase3
// FILE: TestCase12.kt
// TESTCASE NUMBER: 2
package testPackCase2
import libPackage.plus
import libPackage.*
import libPackage.invoke
operator fun Case.E.plus(value: Int) = Case()
class Case() {
class E(val plus: Inv? = null) {
operator fun plus(value: Int) = Case()
/*operator*/ fun plus(value: Int) = Case()
}
class Inv() {
operator fun invoke(value: Int) = Case()
/*operator*/ fun invoke(value: Int) = Case()
}
fun foo(e: E) {
@@ -91,89 +88,79 @@ class Case() {
run {
operator fun E.plus(value: Int) = Case()
<!DEBUG_INFO_CALL("fqName: testPackCase3.Case.E.plus; typeCall: operator function")!>e+1<!>
<!DEBUG_INFO_CALL("fqName: testPackCase2.Case.foo.plus; typeCall: operator extension function")!>e + 1<!>
}
<!DEBUG_INFO_CALL("fqName: testPackCase3.Case.E.plus; typeCall: operator function")!>e+1<!>
}
fun boo(e: E) {
/*operator*/ fun E.plus(value: Int) = Case()
run {
/*operator*/ fun E.plus(value: Int) = Case()
<!DEBUG_INFO_CALL("fqName: testPackCase3.Case.E.plus; typeCall: operator function")!>e+1<!>
}
<!DEBUG_INFO_CALL("fqName: testPackCase3.Case.E.plus; typeCall: operator function")!>e+1<!>
<!DEBUG_INFO_CALL("fqName: testPackCase2.Case.foo.plus; typeCall: operator extension function")!>e + 1<!>
}
}
// FILE: LibCase5.kt
// TESTCASE NUMBER: 5, 6
// FILE: LibCase3.kt
// TESTCASE NUMBER: 3
package libPackage
import testPackCase5.Case
import testPackCase5.Case.Inv
import testPackCase5.Case.E
import testPackCase3.Case
import testPackCase3.Case.Inv
import testPackCase3.Case.E
operator fun Case.E.plusAssign(value: Int) {}
operator fun Case.Inv.invoke(i: Int) {}
// FILE: TestCase6.kt
// TESTCASE NUMBER: 5, 6
package testPackCase5
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPackCase3
import libPackage.plusAssign
import libPackage.*
import libPackage.invoke
import libPackage.*
class Case() {
class E(val plusAssign: Inv? = null) {
operator fun plusAssign(value: Int) {}
/*operator*/ fun plusAssign(value: Int) {}
}
class Inv() {
operator fun invoke(value: Int) {}
/*operator*/ fun invoke(value: Int) {}
}
fun foo(e: E) {
operator fun Case.E.plusAssign(value: Int) {}
operator fun E.plusAssign(value: Int) {}
run {
<!DEBUG_INFO_CALL("fqName: testPackCase5.Case.E.plusAssign; typeCall: operator function")!>e+=1<!>
<!DEBUG_INFO_CALL("fqName: testPackCase3.Case.foo.plusAssign; typeCall: operator extension function")!>e += 1<!>
}
<!DEBUG_INFO_CALL("fqName: testPackCase5.Case.E.plusAssign; typeCall: operator function")!>e+=1<!>
e.<!DEBUG_INFO_CALL("fqName: testPackCase5.Case.E.plusAssign; typeCall: operator function")!>plusAssign(1)<!>
e.plusAssign?.<!DEBUG_INFO_CALL("fqName: testPackCase5.Case.Inv.invoke; typeCall: operator function")!>invoke(1)<!> //ok
<!DEBUG_INFO_CALL("fqName: testPackCase3.Case.foo.plusAssign; typeCall: operator extension function")!>e += 1<!>
}
}
// FILE: LibCase7.kt
// TESTCASE NUMBER: 7, 8
// FILE: LibCase4.kt
// TESTCASE NUMBER: 4
package libPackage
import testPackCase8.Case
import testPackCase8.Case.Inv
import testPackCase8.Case.E
import testPackCase4.Case
import testPackCase4.Case.Inv
import testPackCase4.Case.E
operator fun Case.E.plusAssign(value: Int) {}
operator fun Case.Inv.invoke(i: Int) {}
// FILE: TestCase8.kt
// TESTCASE NUMBER: 7, 8
package testPackCase8
// FILE: TestCase4.kt
// TESTCASE NUMBER: 4
package testPackCase4
import libPackage.plusAssign
import libPackage.*
import libPackage.invoke
operator fun Case.E.plusAssign(value: Int) {}
class Case() {
class E(val plusAssign: Inv? = null) {
operator fun plusAssign(value: Int) {}
/*operator*/ fun plusAssign(value: Int) {}
}
class Inv() {
operator fun invoke(value: Int) {}
/*operator*/ fun invoke(value: Int) {}
}
fun foo(e: E) {
@@ -182,60 +169,48 @@ class Case() {
run {
operator fun E.plusAssign(value: Int) {}
<!DEBUG_INFO_CALL("fqName: testPackCase8.Case.E.plusAssign; typeCall: operator function")!>e+=1<!>
<!DEBUG_INFO_CALL("fqName: testPackCase4.Case.foo.plusAssign; typeCall: operator extension function")!>e += 1<!>
}
<!DEBUG_INFO_CALL("fqName: testPackCase8.Case.E.plusAssign; typeCall: operator function")!>e+=1<!>
}
fun boo(e: E) {
/*operator*/ fun E.plusAssign(value: Int) {}
run {
/*operator*/ fun E.plusAssign(value: Int) {}
<!DEBUG_INFO_CALL("fqName: testPackCase8.Case.E.plusAssign; typeCall: operator function")!>e+=1<!>
}
<!DEBUG_INFO_CALL("fqName: testPackCase8.Case.E.plusAssign; typeCall: operator function")!>e+=1<!>
<!DEBUG_INFO_CALL("fqName: testPackCase4.Case.foo.plusAssign; typeCall: operator extension function")!>e += 1<!>
}
}
// FILE: LibCase9.kt
// TESTCASE NUMBER: 9, 10
package libPackage
import testPackCase10.Iterable
import testPackCase10.Inv
// FILE: TestCase5.kt
/*
* TESTCASE NUMBER: 5
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-36996
*/
package testPackCase5
import kotlin.reflect.KProperty
operator fun Iterable.iterator() : CharIterator = TODO()
operator fun Inv.invoke() {}
class Delegate {
/*operator*/ fun getValue(thisRef: Any?, property: KProperty<*>): String {
return ""
}
// FILE: TestCase10.kt
// TESTCASE NUMBER: 9, 10
package testPackCase10
import libPackage.iterator
import libPackage.invoke
class Iterable(iterator: Inv) {
operator fun iterator() : CharIterator = TODO()
/*operator*/ fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
}
}
class Inv(val c: Char) {
operator fun invoke(): CharIterator = TODO()
operator fun Delegate.getValue(thisRef: Any?, property: KProperty<*>): String {
return ""
}
operator fun Delegate.setValue(thisRef: Any?, property: KProperty<*>, value: String) {}
operator fun Iterable.iterator() : CharIterator = TODO()
fun case() {
class Test {
var p: String by Delegate()
fun case(){
operator fun Iterable.iterator() : CharIterator = TODO()
val iterable: Iterable = Iterable(Inv('c'))
fun foo(){
iterable.<!DEBUG_INFO_CALL("fqName: testPackCase10.Iterable.iterator; typeCall: operator function")!>iterator()<!>
for (i in iterable) {
println(i)
operator fun Delegate.getValue(thisRef: Any?, property: KProperty<*>): String {
return ""
}
operator fun Delegate.setValue(thisRef: Any?, property: KProperty<*>, value: String) {
}
}
iterable.<!DEBUG_INFO_CALL("fqName: testPackCase10.Iterable.iterator; typeCall: operator function")!>iterator()<!>
for (i in iterable) {
println(i)
}
val test = Test()
test.p = "NEW"
val x = test.p
}
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-268
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: properties available through the invoke convention are non-eligible for operator calls
*/
// FILE: TestCase1.kt
/*
* TESTCASE NUMBER: 1
@@ -1,6 +1,15 @@
// !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-268
* MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: properties available through the invoke convention are non-eligible for operator calls
*/
// FILE: TestCase1.kt
/*
* TESTCASE NUMBER: 1
@@ -1,30 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
import testPackCase1.I2.Companion.foo
import testPackCase1.I1.Companion.foo
class Case2() : I2, I1{
fun test(){
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(1)<!>
<!DEBUG_INFO_CALL("fqName: testPackCase1.I1.Companion.foo; typeCall: function")!>foo(1)<!>
}
}
interface I2{
companion object {
fun <T>foo(x: Int): Unit = print(1) // (1)
}
}
interface I1{
companion object {
fun foo(x: Int): String = "print(2)" // (2)
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,42 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
import testPackCase1.I2.Companion.foo
import testPackCase1.I1.Companion.foo
class Case2() : I2, I1, I3 {
fun test() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(1)<!> // resolved to (2)
<!DEBUG_INFO_CALL("fqName: testPackCase1.I1.Companion.foo; typeCall: function")!>foo(1)<!>
}
}
interface I2 {
companion object {
fun <T> foo(x: Int): Unit = print(1) // (1)
}
}
interface I1 {
companion object {
fun foo(x: Int): String = "print(2)" // (2)
}
}
interface I3 {
companion object {
fun foo(x: Short): Unit = print(3) // (3)
}
}
interface I4 {
companion object {
fun foo(x: Any): Unit = print(4) // (4)
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,18 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 1
* DESCRIPTION: call with explicit receiver: different built-in integer types and one of them is kotlin.Int
*/
// TESTCASE NUMBER: 1
class Case1
@@ -1,6 +1,18 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 2
* DESCRIPTION: call with explicit receiver (built-in integer types extesnsion): different built-in integer types and one of them is kotlin.Int
*/
// FILE: TestCase11.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,18 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 3
* DESCRIPTION: call with implicit receiver: different built-in integer types and one of them is kotlin.Int
*/
// TESTCASE NUMBER: 1
class Case1
@@ -1,6 +1,18 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 4
* DESCRIPTION: call with implicit receiver (built-in integer types extesnsion): different built-in integer types and one of them is kotlin.Int
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
@@ -1,6 +1,19 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 11 -> sentence 4
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 7 -> sentence 3
* NUMBER: 5
* DESCRIPTION: call with explicit receiver
*/
// TESTCASE NUMBER: 5
class Case5 {
@@ -1,24 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1() {
fun foo(y: Int, x: Int): String = TODO() // (1.1)
fun foo(vararg x: Int): Unit = TODO() // (1.2)
fun case(){
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(1, 1)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(1, 1)<!>
}
}
// TESTCASE NUMBER: 2
class Case2() {
fun foo(y: Any?, x: Any?): String = TODO() // (1.1)
fun foo(vararg x: Any?): Unit = TODO() // (1.2)
fun case(){
<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(1, 1)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(1, 1)<!>
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,17 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 12 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 1
* DESCRIPTION: call with explicit receiver: different built-in integer types and one of them is kotlin.Int
*/
// TESTCASE NUMBER: 1
class Case1
@@ -1,6 +1,17 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 12 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 2
* DESCRIPTION: call with explicit receiver (built-in integer types extesnsion): different built-in integer types and one of them is kotlin.Int
*/
// FILE: TestCase11.kt
// TESTCASE NUMBER: 1
@@ -1,86 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1
fun case1(case: Case1) {
case.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: boo; typeCall: extension function")!>boo(1)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(1)<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: boo; typeCall: extension function")!>boo(x = 1)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(x = 1)<!>
}
}
fun Case1.boo(x: Int): String = TODO() //(1.1)
fun Case1.boo(x: Long): Unit = TODO() //(1.2)
fun Case1.boo(x: Short): Unit = TODO() //(1.3)
fun Case1.boo(x: Byte): Unit = TODO() //(1.4)
// TESTCASE NUMBER: 2
class Case2 {
fun boo(x: Int, y: Int): String = TODO() //(1.1)
fun boo(x: Long, y: Int): Unit = TODO() //(1.2)
fun boo(x: Short, y: Int): Unit = TODO() //(1.3)
fun boo(x: Byte, y: Int): Unit = TODO() //(1.4)
}
fun case2(case: Case2) {
case.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: Case2.boo; typeCall: function")!>boo(1, 2)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(1, 2)<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: Case2.boo; typeCall: function")!>boo(x = 1, y = 2)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(x = 1, y = 2)<!>
}
}
// TESTCASE NUMBER: 3
class Case3 {
fun boo(x: Int, y: Int): String = TODO() //(1.1)
fun boo(x: Int, y: Short): Unit = TODO() //(1.2)
}
fun case3(case: Case3) {
case.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: Case3.boo; typeCall: function")!>boo(1, 2)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(1, 2)<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: Case3.boo; typeCall: function")!>boo(x = 1, y = 2)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(x = 1, y = 2)<!>
}
}
// TESTCASE NUMBER: 4
class Case4 {
operator fun minus(x: Int): String = TODO() //(1.1)
operator fun minus(x: Long): Unit = TODO() //(1.2)
operator fun minus(x: Short): Unit = TODO() //(1.3)
operator fun minus(x: Byte): Unit = TODO() //(1.4)
}
fun case4(case: Case4) {
case.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: Case4.minus; typeCall: operator function")!>minus(1)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>minus(1)<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: Case4.minus; typeCall: operator function")!>this - 1<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this - 1<!>
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,74 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
private fun Int.boo(x: Int): String = TODO() //(1.1)
private fun Int.boo(x: Long): Unit = TODO() //(1.2)
private fun Int.boo(x: Short): Unit = TODO() //(1.3)
private fun Int.boo(x: Byte): Unit = TODO() //(1.4)
fun case1() {
1.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: testPackCase1.boo; typeCall: extension function")!>boo(1)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(1)<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: testPackCase1.boo; typeCall: extension function")!>boo(x = 1)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(x = 1)<!>
}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testPackCase2
class Case2 {
private fun Int.boo(x: Int, y: Int): String = TODO() //(1.1)
private fun Short.boo(x: Int, y: Int): Unit = TODO() //(1.2)
private fun Long.boo(x: Int, y: Int): Unit = TODO() //(1.3)
private fun Byte.boo(x: Int, y: Int): Unit = TODO() //(1.4)
fun case2() {
1.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: testPackCase2.Case2.boo; typeCall: extension function")!>boo(1, 2)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(1, 2)<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: testPackCase2.Case2.boo; typeCall: extension function")!>boo(x = 1, y = 2)<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>boo(x = 1, y = 2)<!>
}
}
}
// FILE: TestCase4.kt
// TESTCASE NUMBER: 4
package testPackCase4
private operator fun Int.minus(x: String): String = TODO() //(1.1)
private operator fun Short.minus(x: String): Unit = TODO() //(1.2)
private operator fun Byte.minus(x: String): Unit = TODO() //(1.3)
private operator fun Long.minus(x: String): Unit = TODO() //(1.4)
fun case4() {
1.apply {
//to (1.1)
<!DEBUG_INFO_CALL("fqName: testPackCase4.minus; typeCall: operator extension function")!>minus("1")<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>minus("1")<!>
//to (1.1)
<!DEBUG_INFO_CALL("fqName: testPackCase4.minus; typeCall: operator extension function")!>this-"1"<!>
//(1.1) return type is String
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this-"1"<!>
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,17 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 12 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 5
* DESCRIPTION: infix call: different built-in integer types and one of them is kotlin.Int
*/
// TESTCASE NUMBER: 1
class Case1{
@@ -1,6 +1,17 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 12 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* NUMBER: 6
* DESCRIPTION: infix call (built-in integer types extesnsion): different built-in integer types and one of them is kotlin.Int
*/
// TESTCASE NUMBER: 1
class Case1{
@@ -1,6 +1,19 @@
// !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-387
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 12 -> sentence 2
* PRIMARY LINKS: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 3 -> sentence 3
* built-in-types-and-their-semantics, built-in-integer-types-1, integer-type-widening -> paragraph 3 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 17 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 17 -> sentence 3
* NUMBER: 7
* DESCRIPTION: different built-in integer types and one of them is kotlin.Int
*/
// FILE: TestCase1.kt
@@ -1,64 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1() {
fun foo(x: Int, y: Number?): Unit = TODO() // (1)
fun foo(vararg x: Short): Unit = TODO()//(2)
fun testcase() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
}
}
// TESTCASE NUMBER: 2
class Case2() {
fun foo(y: Any, x: Any): Unit = TODO() // (1.1)
fun foo(vararg x: Int?): Unit = TODO() // (1.2)
fun case(){
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
}
}
// TESTCASE NUMBER: 3
class Case3() {
fun foo(y: Any, x: Any): Unit = TODO() // (1.1)
fun foo(vararg x: Int?): Unit = TODO() // (1.2)
fun case(){
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
}
}
// TESTCASE NUMBER: 4
class Case4() {
fun foo(y: Int, x: Short): Unit = TODO() // (1.1)
fun foo(y: Int, x: Long): Unit = TODO() // (1.2)
fun case(){
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
}
}
// TESTCASE NUMBER: 5
class Case5() {
fun foo(y: Int, x: Short): Unit = TODO() // (1.1)
fun foo(y: Int, x: Long, a : Any =""): Unit = TODO() // (1.2)
fun case(){
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
}
}
// TESTCASE NUMBER: 6
class A : B, C
interface B
interface C
fun foo(x: B) {} //(1)
fun foo(y: C, z: String = "foo") {} //2
fun bar() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(A()) //OVERLOAD_RESOLUTION_AMBIGUITY
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,14 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 6
// NOTE: todo link new sentences
class A : B, C
interface B
interface C
fun foo(x: B) {} //(1)
fun foo(y: C, z: String = "foo") {} //2
fun bar() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(A()) //OVERLOAD_RESOLUTION_AMBIGUITY
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,55 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
import testPackCase1.I2.Companion.foo
import testPackCase1.I1.Companion.foo
class Case2() : I2, I1{
fun test(){
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1)
}
}
interface I2{
companion object {
fun foo(x: Int): Unit = print(1) // (1)
}
}
interface I1{
companion object {
fun foo(x: Int): String = "print(2)" // (2)
}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testPackCase2
import testPackCase2.I2.Companion.foo
import testPackCase2.I1.Companion.foo
class Case2() : I2, I1{
fun test(){
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1)
}
}
interface I2{
companion object {
fun <T>foo(x: Int): Unit = print(1) // (1)
}
}
interface I1{
companion object {
fun <R>foo(x: Int): String = "print(2)" // (2)
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,43 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
import testPackCase1.I2.Companion.foo
import testPackCase1.I1.Companion.foo
import testPackCase1.I3.Companion.foo
import testPackCase1.I4.Companion.foo
class Case1() : I2, I1, I3, I4 {
fun test() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1)
}
}
interface I2 {
companion object {
fun <T> foo(x: Int): Unit = print(1) // (1)
}
}
interface I1 {
companion object {
fun foo(x: Int): String = "print(2)" // (2)
}
}
interface I3 {
companion object {
fun foo(x: Short): Unit = print(3) // (3)
}
}
interface I4 {
companion object {
fun foo(x: Int): Unit = print(4) // (4)
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,47 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-38912
*/
package testPackCase1
import testPackCase1.I2.Companion.foo
import testPackCase1.I1.Companion.foo
import testPackCase1.I3.Companion.foo
import testPackCase1.I4.Companion.foo
class Case1() : I2, I1, I3, I4 {
fun test() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>(1)
}
}
interface I2 {
companion object {
fun <T> foo(x: Int): Unit = print(1) // (1)
}
}
interface I1 {
companion object {
fun foo(x: Int, y: Any = ""): String = "print(2)" // (2)
}
}
interface I3 {
companion object {
fun foo(x: Short): Unit = print(3) // (3)
}
}
interface I4 {
companion object {
fun foo(x: Int, y: Any = ""): Unit = print(4) // (4)
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,43 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
import testPackCase1.I2.Companion.foo
import testPackCase1.I1.Companion.foo
import testPackCase1.I3.Companion.foo
import testPackCase1.I4.Companion.foo
class Case1() : I2, I1, I3, I4 {
fun test() {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1)
}
}
interface I2 {
companion object {
fun <T> foo(x: Int, y: Any): Unit = print(1) // (1)
}
}
interface I1 {
companion object {
fun foo(x: Int, z: Any = "", vararg y: Any): String = "print(2)" // (2)
}
}
interface I3 {
companion object {
fun foo(x: Short, z: Any = "", vararg y: Any): Unit = print(3) // (3)
}
}
interface I4 {
companion object {
fun foo(x: Int, z: Any = "", vararg y: Any): Unit = print(4) // (4)
}
}

Some files were not shown because too many files have changed in this diff Show More