[Spec tests] Add tests for resolving callable references and some co-tests

This commit is contained in:
anastasiia.spaseeva
2020-07-28 11:13:52 +03:00
parent cfbfec77a5
commit 3f862830f2
52 changed files with 5119 additions and 10 deletions
@@ -0,0 +1,27 @@
// !LANGUAGE: +NewInference
// !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-39220
*/
package testPackCase1
import kotlin.reflect.KFunction2
interface Foo {
fun resolve(var1: Int): String
fun resolve(var1: String): String
}
fun <T> bar(f: KFunction2<T, String, String>) {}
fun <T : Foo> main() {
bar<T>(Foo::resolve) // OK in OI, Ambiguity in NI
bar<Foo>(Foo::resolve) // OK
bar(Foo::resolve) // OK
}
@@ -0,0 +1,38 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-413
* MAIN LINK: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 1
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 2
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 3
* NUMBER: 1
* DESCRIPTION: SAM-type against similar functional type
*/
// FILE: TestCase1.kt
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-39220
*/
package testPackCase1
import kotlin.reflect.KFunction2
interface Foo {
fun resolve(var1: Int): String
fun resolve(var1: String): String
}
fun <T> bar(f: KFunction2<T, String, String>) {}
fun <T : Foo> main() {
bar<T>(<!TYPE_MISMATCH, TYPE_MISMATCH!>Foo::<!CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY!>resolve<!><!>) // OK in OI, Ambiguity in NI
bar<Foo>(Foo::resolve) // OK
bar(Foo::resolve) // OK
}
@@ -0,0 +1,61 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1() {
companion object {
operator fun invoke(x: CharSequence, x1: Int =1): Unit = TODO() // (3)
operator fun invoke(x: String): String = TODO() // (4)
}
fun case() {
<!INAPPLICABLE_CANDIDATE!>Companion<!>(<!UNRESOLVED_REFERENCE!>::x<!>)
}
val x = ""
fun x() :CharSequence = ""
}
// TESTCASE NUMBER: 2
class Case2() {
companion object {
operator fun invoke(x: A, x1: Int =1): Unit = TODO() // (3)
operator fun invoke(x: B): String = TODO() // (4)
}
fun case() {
<!INAPPLICABLE_CANDIDATE!>Companion<!>(<!UNRESOLVED_REFERENCE!>::x<!>)
}
val x = C()
fun x() = B()
interface A
class B : A
class C : A
}
// TESTCASE NUMBER: 3
interface I {
companion object {
operator fun invoke(x1: ()->CharSequence, x2: Any = ""): Unit = print(1) // (1)
operator fun invoke(y1: ()->CharSequence, y2: String = ""): String { print(2); invoke(x1 = y1, x2 = y2) ;return "" } // (2)
}
}
class Case3() : I {
companion object {
operator fun invoke(x1: ()->CharSequence, x2: Any = ""): Unit = print(3) // (3)
operator fun invoke(y1: ()->CharSequence, y2: String = ""): Any { print(4); return "" } // (4)
}
val x = ""
fun x() = "" as CharSequence
fun case() {
I.<!AMBIGUITY!>invoke<!>(<!UNRESOLVED_REFERENCE!>::x<!>)
<!UNRESOLVED_REFERENCE!>I<!>(<!UNRESOLVED_REFERENCE!>::x<!>)
<!AMBIGUITY!>Case3<!>(<!UNRESOLVED_REFERENCE!>::x<!>)
}
}
@@ -0,0 +1,76 @@
// !LANGUAGE: +NewInference
// !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-413
* MAIN LINK: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 2
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 5 -> sentence 1
* SECONDARY 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 4
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 7 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 8 -> sentence 1
* NUMBER: 1
* DESCRIPTION: a callable reference is itself an argument to an overloaded function call
*/
// TESTCASE NUMBER: 1
class Case1() {
companion object {
operator fun invoke(x: CharSequence, x1: Int =1): Unit = TODO() // (3)
operator fun invoke(x: String): String = TODO() // (4)
}
fun case() {
Companion(::<!CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY!>x<!>)
}
val x = ""
fun x() :CharSequence = ""
}
// TESTCASE NUMBER: 2
class Case2() {
companion object {
operator fun invoke(x: A, x1: Int =1): Unit = TODO() // (3)
operator fun invoke(x: B): String = TODO() // (4)
}
fun case() {
Companion(::<!CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY!>x<!>)
}
val x = C()
fun x() = B()
interface A
class B : A
class C : A
}
// TESTCASE NUMBER: 3
interface I {
companion object {
operator fun invoke(x1: ()->CharSequence, x2: Any = ""): Unit = print(1) // (1)
operator fun invoke(y1: ()->CharSequence, y2: String = ""): String { print(2); invoke(x1 = y1, x2 = y2) ;return "" } // (2)
}
}
class Case3() : I {
companion object {
operator fun invoke(x1: ()->CharSequence, x2: Any = ""): Unit = print(3) // (3)
operator fun invoke(y1: ()->CharSequence, y2: String = ""): Any { print(4); return "" } // (4)
}
val x = ""
fun x() = "" as CharSequence
fun case() {
I.<!OVERLOAD_RESOLUTION_AMBIGUITY!>invoke<!>(::<!DEBUG_INFO_MISSING_UNRESOLVED!>x<!>)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>I<!>(::<!DEBUG_INFO_MISSING_UNRESOLVED!>x<!>)
<!OVERLOAD_RESOLUTION_AMBIGUITY!>Case3<!>(::<!DEBUG_INFO_MISSING_UNRESOLVED!>x<!>)
}
}
@@ -0,0 +1,111 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1() {
fun foo(x: () -> CharSequence): Unit = TODO() // (3)
fun foo(x: () -> String, z: String = ""): String = TODO() // (4)
fun boo() = ""
fun case() {
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::boo)
}
}
// TESTCASE NUMBER: 2
class Case2() {
fun foo(y: ()->Any?, x: ()->Any?): Unit = TODO() // (1.1)
fun foo(vararg x: ()->Int): String = TODO() // (1.2)
fun boo() = 1
fun case() {
<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::boo, ::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo, ::boo)<!>
<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo({1}, {1})<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({1}, {1})<!>
}
}
// TESTCASE NUMBER: 3
class Case3() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = ""
val boo = 1
fun case() {
<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::boo)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::boo<!>)
<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo({ "" })<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({ "" })<!>
}
}
// TESTCASE NUMBER: 4
class Case4() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = 1
val boo = ""
fun case() {
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::boo)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::boo<!>)
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: function")!>foo({ "" })<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({ "" })<!>
}
}
// TESTCASE NUMBER: 5
class Case5() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = "" as CharSequence
val boo = ""
fun case() {
<!DEBUG_INFO_CALL("fqName: Case5.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::boo)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::boo<!>)
<!DEBUG_INFO_CALL("fqName: Case5.foo; typeCall: function")!>foo({ "" })<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({ "" })<!>
}
}
// TESTCASE NUMBER: 6
class Case6() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = ""
val boo = "" as CharSequence
fun case() {
<!DEBUG_INFO_CALL("fqName: Case6.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::boo)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::boo<!>)
}
}
@@ -0,0 +1,126 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-413
* MAIN LINK: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 2
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 3
* SECONDARY 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 4
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 7 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 8 -> sentence 1
* NUMBER: 1
* DESCRIPTION: a callable reference is itself an argument to an overloaded function call
*/
// TESTCASE NUMBER: 1
class Case1() {
fun foo(x: () -> CharSequence): Unit = TODO() // (3)
fun foo(x: () -> String, z: String = ""): String = TODO() // (4)
fun boo() = ""
fun case() {
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::<!DEBUG_INFO_CALL("fqName: Case1.boo; typeCall: function")!>boo<!>)
}
}
// TESTCASE NUMBER: 2
class Case2() {
fun foo(y: ()->Any?, x: ()->Any?): Unit = TODO() // (1.1)
fun foo(vararg x: ()->Int): String = TODO() // (1.2)
fun boo() = 1
fun case() {
<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::boo, ::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo, ::boo)<!>
<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo({1}, {1})<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({1}, {1})<!>
}
}
// TESTCASE NUMBER: 3
class Case3() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = ""
val boo = 1
fun case() {
<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::<!DEBUG_INFO_CALL("fqName: Case3.boo; typeCall: function")!>boo<!>)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::boo<!>)
<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo({ "" })<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({ "" })<!>
}
}
// TESTCASE NUMBER: 4
class Case4() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = 1
val boo = ""
fun case() {
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::<!DEBUG_INFO_CALL("fqName: Case4.boo; typeCall: variable")!>boo<!>)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::boo<!>)
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: function")!>foo({ "" })<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({ "" })<!>
}
}
// TESTCASE NUMBER: 5
class Case5() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = "" as CharSequence
val boo = ""
fun case() {
<!DEBUG_INFO_CALL("fqName: Case5.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::<!DEBUG_INFO_CALL("fqName: Case5.boo; typeCall: variable")!>boo<!>)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::boo<!>)
<!DEBUG_INFO_CALL("fqName: Case5.foo; typeCall: function")!>foo({ "" })<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo({ "" })<!>
}
}
// TESTCASE NUMBER: 6
class Case6() {
fun foo(x: ()->CharSequence, x1: String = ""): Unit = TODO() // (3)
fun foo(x: ()->String, z: Any = ""): String = TODO() // (4)
fun boo() = ""
val boo = "" as CharSequence
fun case() {
<!DEBUG_INFO_CALL("fqName: Case6.foo; typeCall: function")!>foo(::boo)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::boo)<!>
foo(::<!DEBUG_INFO_CALL("fqName: Case6.boo; typeCall: function")!>boo<!>)
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::boo<!>)
}
}
@@ -0,0 +1,34 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1 {
fun boo(y: () -> Int, x: () -> Number): Unit = TODO()
fun boo(vararg x: () -> Int): String = TODO()
val x = 1.0
fun x() = 1
fun case() {
this.boo(::x, ::x)
this.<!DEBUG_INFO_CALL("fqName: Case1.boo; typeCall: function")!>boo(::x, ::x)<!>
this.boo(::x, ::x)
}
}
// TESTCASE NUMBER: 2
class Case2 {
fun boo(y: () -> Int, x: () -> Number): Unit = TODO()
fun boo(vararg x: () -> Int): String = TODO()
val x = 1
fun x() = 1.0
fun case() {
this.boo(::x, ::x)
this.<!DEBUG_INFO_CALL("fqName: Case2.boo; typeCall: function")!>boo(::x, ::x)<!>
this.boo(::x, ::x)
}
}
@@ -0,0 +1,48 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-413
* MAIN LINK: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 2
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 3
* SECONDARY 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 4
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 7 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 8 -> sentence 1
* NUMBER: 2
* DESCRIPTION: a callable reference is itself an argument to an overloaded function call
*/
// TESTCASE NUMBER: 1
class Case1 {
fun boo(y: () -> Int, x: () -> Number): Unit = TODO()
fun boo(vararg x: () -> Int): String = TODO()
val x = 1.0
fun x() = 1
fun case() {
this.boo(::<!DEBUG_INFO_CALL("fqName: Case1.x; typeCall: function")!>x<!>, ::x)
this.<!DEBUG_INFO_CALL("fqName: Case1.boo; typeCall: function")!>boo(::x, ::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.boo(::x, ::x)<!>
}
}
// TESTCASE NUMBER: 2
class Case2 {
fun boo(y: () -> Int, x: () -> Number): Unit = TODO()
fun boo(vararg x: () -> Int): String = TODO()
val x = 1
fun x() = 1.0
fun case() {
this.boo(::<!DEBUG_INFO_CALL("fqName: Case2.x; typeCall: variable")!>x<!>, ::x)
this.<!DEBUG_INFO_CALL("fqName: Case2.boo; typeCall: function")!>boo(::x, ::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.boo(::x, ::x)<!>
}
}
@@ -0,0 +1,116 @@
// !LANGUAGE: +NewInference
// !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): String = TODO() // (1.1)
fun foo(x: () -> Any): Unit = TODO() // (1.2)
fun case1() {
foo(::x)
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::x)<!>
}
}
val x = 1
fun x() = 1.0
fun case1(case: Case1) {
case.foo(::x)
case.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::x)<!>
case.foo(::x)
}
// TESTCASE NUMBER: 2
class Case2() {
fun foo(vararg x: ()->Short): String = TODO() // (1.1)
fun foo(vararg x: ()->Byte): Unit = TODO() // (1.2)
val x : Short = 1
fun x() = 1
val y = 1
fun y(): Short = 1
fun case2(case: Case2) {
case.foo(::x, ::x)
case.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::x, ::x)<!>
case.foo(::x, ::x)
this.foo(::x, ::x)
this.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::x, ::x)<!>
this.foo(::x, ::x)
//for y
case.foo(::y, ::y)
case.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::y, ::y)<!>
case.foo(::y, ::y)
this.foo(::x, ::y)
this.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::x, ::y)<!>
this.foo(::x, ::y)
}
}
// TESTCASE NUMBER: 3
class Case3() {
fun foo(vararg x: ()->Short): String = TODO() // (1.1)
fun foo(x: ()->Byte): Unit = TODO() // (1.2)
val x : Short = 1
fun x() = 1
val y = 1
fun y(): Short = 1
fun case3(case: Case3) {
case.foo(::x)
case.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::x)<!>
case.foo(::x)
this.foo(::x)
this.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::x)<!>
this.foo(::x)
//for y
case.foo(::y)
case.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::y)<!>
case.foo(::y)
this.foo(::x, ::y)
this.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::x, ::y)<!>
this.foo(::x, ::y)
}
}
// TESTCASE NUMBER: 4
class Case4() {
infix fun foo(x: ()->Int): String = TODO() // (1.1)
infix fun foo(x: ()->Any): Unit = TODO() // (1.2)
val x = 1
fun x() = 1.0
fun case() {
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>this foo ::x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this foo ::x<!>
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::x)<!>
this.<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>foo(::x)<!>
this.foo(::x)
}
}
fun case4(case: Case4) {
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>case foo ::x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case foo ::x<!>
case.<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>foo(::x)<!>
case.foo(::x)
}
@@ -0,0 +1,130 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-413
* MAIN LINK: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 2
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 3
* SECONDARY 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 4
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 7 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 8 -> sentence 1
* NUMBER: 3
* DESCRIPTION: a callable reference is itself an argument to an overloaded function call
*/
// TESTCASE NUMBER: 1
class Case1() {
fun foo(x: () -> Int): String = TODO() // (1.1)
fun foo(x: () -> Any): Unit = TODO() // (1.2)
fun case1() {
foo(::<!DEBUG_INFO_CALL("fqName: x; typeCall: variable")!>x<!>)
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::x)<!>
}
}
val x = 1
fun x() = 1.0
fun case1(case: Case1) {
case.foo(::x)
case.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case.foo(::x)<!>
}
// TESTCASE NUMBER: 2
class Case2() {
fun foo(vararg x: ()->Short): String = TODO() // (1.1)
fun foo(vararg x: ()->Byte): Unit = TODO() // (1.2)
val x : Short = 1
fun x() = 1
val y = 1
fun y(): Short = 1
fun case2(case: Case2) {
case.foo(::<!DEBUG_INFO_CALL("fqName: Case2.x; typeCall: variable")!>x<!>, ::x)
case.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::x, ::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case.foo(::x, ::x)<!>
this.foo(::<!DEBUG_INFO_CALL("fqName: Case2.x; typeCall: variable")!>x<!>, ::x)
this.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::x, ::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.foo(::x, ::x)<!>
//for y
case.foo(::<!DEBUG_INFO_CALL("fqName: Case2.y; typeCall: function")!>y<!>, ::y)
case.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::y, ::y)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case.foo(::y, ::y)<!>
this.foo(::<!DEBUG_INFO_CALL("fqName: Case2.x; typeCall: variable")!>x<!>, ::<!DEBUG_INFO_CALL("fqName: Case2.y; typeCall: function")!>y<!>)
this.<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::x, ::y)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.foo(::x, ::y)<!>
}
}
// TESTCASE NUMBER: 3
class Case3() {
fun foo(vararg x: ()->Short): String = TODO() // (1.1)
fun foo(x: ()->Byte): Unit = TODO() // (1.2)
val x : Short = 1
fun x() = 1
val y = 1
fun y(): Short = 1
fun case3(case: Case3) {
case.foo(::<!DEBUG_INFO_CALL("fqName: Case3.x; typeCall: variable")!>x<!>)
case.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case.foo(::x)<!>
this.foo(::<!DEBUG_INFO_CALL("fqName: Case3.x; typeCall: variable")!>x<!>)
this.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.foo(::x)<!>
//for y
case.foo(::<!DEBUG_INFO_CALL("fqName: Case3.y; typeCall: function")!>y<!>)
case.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::y)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case.foo(::y)<!>
this.foo(::<!DEBUG_INFO_CALL("fqName: Case3.x; typeCall: variable")!>x<!>, ::<!DEBUG_INFO_CALL("fqName: Case3.y; typeCall: function")!>y<!>)
this.<!DEBUG_INFO_CALL("fqName: Case3.foo; typeCall: function")!>foo(::x, ::y)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.foo(::x, ::y)<!>
}
}
// TESTCASE NUMBER: 4
class Case4() {
infix fun foo(x: ()->Int): String = TODO() // (1.1)
infix fun foo(x: ()->Any): Unit = TODO() // (1.2)
val x = 1
fun x() = 1.0
fun case() {
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>this foo ::x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this foo ::x<!>
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::x)<!>
this.<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>this.foo(::x)<!>
}
}
fun case4(case: Case4) {
<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>case foo ::x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case foo ::x<!>
case.<!DEBUG_INFO_CALL("fqName: Case4.foo; typeCall: infix function")!>foo(::x)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case.foo(::x)<!>
}
@@ -0,0 +1,102 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1() {
companion object {
operator fun invoke(x: CharSequence): Unit = TODO() // (3)
operator fun invoke(x: String): String = TODO() // (4)
}
fun case() {
foo(::invoke)
foo(::invoke)
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::invoke)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::invoke)<!>
}
fun foo(x: (CharSequence)->Any): String = TODO() // (1.1)
fun foo(x: (String)->Any): Unit = TODO() // (1.2)
}
// TESTCASE NUMBER: 2
class Case2() {
companion object {
operator fun invoke(y: Any?, x: Any?): Unit = TODO() // (1.1)
operator fun invoke(vararg x: Int): String = TODO() // (1.2)
}
fun case() {
<!INAPPLICABLE_CANDIDATE!>foo<!>(<!DEBUG_INFO_EXPRESSION_TYPE("Type is unknown"), UNRESOLVED_REFERENCE!>::invoke<!>, <!DEBUG_INFO_EXPRESSION_TYPE("Type is unknown"), UNRESOLVED_REFERENCE!>::invoke<!>)
<!INAPPLICABLE_CANDIDATE!>foo<!>(<!UNRESOLVED_REFERENCE!>::invoke<!>, <!UNRESOLVED_REFERENCE!>::invoke<!>)
<!DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!><!INAPPLICABLE_CANDIDATE!>foo<!>(<!UNRESOLVED_REFERENCE!>::invoke<!>, <!UNRESOLVED_REFERENCE!>::invoke<!>)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: Inapplicable(INAPPLICABLE): [/Case2.foo, /Case2.foo]")!><!INAPPLICABLE_CANDIDATE!>foo<!>(<!UNRESOLVED_REFERENCE!>::invoke<!>, <!UNRESOLVED_REFERENCE!>::invoke<!>)<!>
}
fun foo(vararg x: (Int)->Any): String = TODO() // (1.1)
fun foo(vararg x: (Any)->Any): Unit = TODO() // (1.2)
}
// TESTCASE NUMBER: 3
interface I {
companion object {
operator fun invoke(x1: ()->String, x2: Any = ""): Unit = print(1) // (1)
operator fun invoke(y1: ()->CharSequence, y2: String = ""): String { print(2) ;return "" } // (2)
}
}
class Case3() : I {
companion object {
operator fun invoke(x: ()->CharSequence): Unit = print(3) // (3)
operator fun invoke(x: ()->String, z: String = ""): Any { print(4); return "" } // (4)
}
val x = ""
fun x() = "" as CharSequence
val y : CharSequence= ""
fun y() = ""
fun case() {
I.invoke(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::x<!>)
I.invoke(::x)
I.invoke(::x)
I.invoke(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::y<!>)
I.invoke(::y)
I.invoke(::y)
<!UNRESOLVED_REFERENCE!>I<!>(<!DEBUG_INFO_EXPRESSION_TYPE("Type is unknown"), UNRESOLVED_REFERENCE!>::x<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: Unresolved name: I")!><!UNRESOLVED_REFERENCE!>I<!>(<!UNRESOLVED_REFERENCE!>::x<!>)<!>
<!DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!><!UNRESOLVED_REFERENCE!>I<!>(<!UNRESOLVED_REFERENCE!>::x<!>)<!>
<!UNRESOLVED_REFERENCE!>I<!>(<!DEBUG_INFO_EXPRESSION_TYPE("Type is unknown"), UNRESOLVED_REFERENCE!>::y<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: Unresolved name: I")!><!UNRESOLVED_REFERENCE!>I<!>(<!UNRESOLVED_REFERENCE!>::y<!>)<!>
<!DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!><!UNRESOLVED_REFERENCE!>I<!>(<!UNRESOLVED_REFERENCE!>::y<!>)<!>
Case3(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::x<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>Case3(::x)<!>
<!DEBUG_INFO_CALL("fqName: Case3.Companion.invoke; typeCall: variable&invoke")!>Case3(::x)<!>
Case3(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::y<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>Case3(::y)<!>
<!DEBUG_INFO_CALL("fqName: Case3.Companion.invoke; typeCall: variable&invoke")!>Case3(::y)<!>
}
}
// TESTCASE NUMBER: 4
class Case4() {
companion object {
operator fun invoke(x: CharSequence): Unit = TODO() // (3)
operator fun invoke(x: String): String = TODO() // (4)
}
fun case(case: Case4) {
case(::invoke)
case(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.CharSequence, kotlin.Unit>")!>::invoke<!>)
<!DEBUG_INFO_CALL("fqName: Case4.invoke; typeCall: variable&invoke")!>case(::invoke)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case(::invoke)<!>
}
operator fun invoke(x: (CharSequence)->Any): String = TODO() // (1.1)
operator fun invoke(x: (String)->Any): Unit = TODO() // (1.2)
}
@@ -0,0 +1,116 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-413
* MAIN LINK: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 2
* overload-resolution, resolving-callable-references, bidirectional-resolution-for-callable-calls -> paragraph 3 -> sentence 3
* SECONDARY 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 4
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 7 -> sentence 1
* overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 8 -> sentence 1
* NUMBER: 4
* DESCRIPTION: a callable reference is itself an argument to an overloaded function call
*/
// TESTCASE NUMBER: 1
class Case1() {
companion object {
operator fun invoke(x: CharSequence): Unit = TODO() // (3)
operator fun invoke(x: String): String = TODO() // (4)
}
fun case() {
foo(::<!DEBUG_INFO_CALL("fqName: Case1.Companion.invoke; typeCall: operator function")!>invoke<!>)
foo(::invoke)
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo(::invoke)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::invoke)<!>
}
fun foo(x: (CharSequence)->Any): String = TODO() // (1.1)
fun foo(x: (String)->Any): Unit = TODO() // (1.2)
}
// TESTCASE NUMBER: 2
class Case2() {
companion object {
operator fun invoke(y: Any?, x: Any?): Unit = TODO() // (1.1)
operator fun invoke(vararg x: Int): String = TODO() // (1.2)
}
fun case() {
foo(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.Int, kotlin.String>")!>::invoke<!>, <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.Int, kotlin.String>")!>::invoke<!>)
foo(::<!DEBUG_INFO_CALL("fqName: Case2.Companion.invoke; typeCall: operator function")!>invoke<!>, ::<!DEBUG_INFO_CALL("fqName: Case2.Companion.invoke; typeCall: operator function")!>invoke<!>)
<!DEBUG_INFO_CALL("fqName: Case2.foo; typeCall: function")!>foo(::invoke, ::invoke)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>foo(::invoke, ::invoke)<!>
}
fun foo(vararg x: (Int)->Any): String = TODO() // (1.1)
fun foo(vararg x: (Any)->Any): Unit = TODO() // (1.2)
}
// TESTCASE NUMBER: 3
interface I {
companion object {
operator fun invoke(x1: ()->String, x2: Any = ""): Unit = print(1) // (1)
operator fun invoke(y1: ()->CharSequence, y2: String = ""): String { print(2) ;return "" } // (2)
}
}
class Case3() : I {
companion object {
operator fun invoke(x: ()->CharSequence): Unit = print(3) // (3)
operator fun invoke(x: ()->String, z: String = ""): Any { print(4); return "" } // (4)
}
val x = ""
fun x() = "" as CharSequence
val y : CharSequence= ""
fun y() = ""
fun case() {
I.invoke(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::x<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>I.invoke(::x)<!>
I.invoke(::x)
I.invoke(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::y<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>I.invoke(::y)<!>
I.invoke(::y)
I(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::x<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>I(::x)<!>
<!DEBUG_INFO_CALL("fqName: I.Companion.invoke; typeCall: variable&invoke")!>I(::x)<!>
I(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::y<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>I(::y)<!>
<!DEBUG_INFO_CALL("fqName: I.Companion.invoke; typeCall: variable&invoke")!>I(::y)<!>
Case3(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.String>")!>::x<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>Case3(::x)<!>
<!DEBUG_INFO_CALL("fqName: Case3.Companion.invoke; typeCall: variable&invoke")!>Case3(::x)<!>
Case3(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction0<kotlin.String>")!>::y<!>)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>Case3(::y)<!>
<!DEBUG_INFO_CALL("fqName: Case3.Companion.invoke; typeCall: variable&invoke")!>Case3(::y)<!>
}
}
// TESTCASE NUMBER: 4
class Case4() {
companion object {
operator fun invoke(x: CharSequence): Unit = TODO() // (3)
operator fun invoke(x: String): String = TODO() // (4)
}
fun case(case: Case4) {
case(::<!DEBUG_INFO_CALL("fqName: Case4.Companion.invoke; typeCall: operator function")!>invoke<!>)
case(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.CharSequence, kotlin.Unit>")!>::invoke<!>)
<!DEBUG_INFO_CALL("fqName: Case4.invoke; typeCall: variable&invoke")!>case(::invoke)<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>case(::invoke)<!>
}
operator fun invoke(x: (CharSequence)->Any): String = TODO() // (1.1)
operator fun invoke(x: (String)->Any): Unit = TODO() // (1.2)
}
@@ -0,0 +1,178 @@
{
"1": {
"pos": {
"1": [
{
"specVersion": "0.1-413",
"casesNumber": 1,
"description": "SAM-type against similar functional type",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-1/pos/1.1.kt",
"unexpectedBehaviour": true,
"linkType": "main"
}
]
}
},
"3": {
"pos": {
"1": [
{
"specVersion": "0.1-413",
"casesNumber": 1,
"description": "SAM-type against similar functional type",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-1/pos/1.1.kt",
"unexpectedBehaviour": true,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 2,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-413",
"casesNumber": 4,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-413",
"casesNumber": 4,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-413",
"casesNumber": 6,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "main"
}
],
"2": [
{
"specVersion": "0.1-413",
"casesNumber": 1,
"description": "SAM-type against similar functional type",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-1/pos/1.1.kt",
"unexpectedBehaviour": true,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 2,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 4,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 4,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 6,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"3": [
{
"specVersion": "0.1-413",
"casesNumber": 1,
"description": "SAM-type against similar functional type",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-1/pos/1.1.kt",
"unexpectedBehaviour": true,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 2,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 4,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 4,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-413",
"casesNumber": 6,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/pos/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
]
},
"neg": {
"1": [
{
"specVersion": "0.1-413",
"casesNumber": 3,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/neg/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "main"
}
],
"2": [
{
"specVersion": "0.1-413",
"casesNumber": 3,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/neg/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"3": [
{
"specVersion": "0.1-413",
"casesNumber": 3,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/neg/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
]
}
}
}
@@ -0,0 +1,33 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
class Case1() {
fun foo(x: A): A = x//(1)
}
fun Case1.foo(i: B): B = i //(2)
class A : C
class B : C
interface C
fun <T : C> process(call: (T) -> T, x: T): T = call.invoke(x)
fun case1() {
val case = Case1()
<!DEBUG_INFO_EXPRESSION_TYPE("testsCase1.A")!>process(case::foo, A())<!>
process(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<testsCase1.A, testsCase1.A>")!>case::foo<!>, A())
process(case:: foo, A())
<!DEBUG_INFO_EXPRESSION_TYPE("testsCase1.B")!>process(case::foo, B())<!>
process(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<testsCase1.B, testsCase1.B>")!>case::foo<!>, B())
process(case:: foo, B())
}
@@ -0,0 +1,42 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-401
* MAIN LINK: overload-resolution, resolving-callable-references -> paragraph 2 -> sentence 2
* NUMBER: 1
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
class Case1() {
fun foo(x: A): A = x//(1)
}
fun Case1.foo(i: B): B = i //(2)
class A : C
class B : C
interface C
fun <T : C> process(call: (T) -> T, x: T): T = call.invoke(x)
fun case1() {
val case = Case1()
<!DEBUG_INFO_EXPRESSION_TYPE("testsCase1.A")!>process(case::foo, A())<!>
process(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<testsCase1.A, testsCase1.A>")!>case::foo<!>, A())
process(case:: <!DEBUG_INFO_CALL("fqName: testsCase1.Case1.foo; typeCall: function")!>foo<!>, A())
<!DEBUG_INFO_EXPRESSION_TYPE("testsCase1.B")!>process(case::foo, B())<!>
process(<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<testsCase1.B, testsCase1.B>")!>case::foo<!>, B())
process(case:: <!DEBUG_INFO_CALL("fqName: testsCase1.foo; typeCall: extension function")!>foo<!>, B())
}
@@ -0,0 +1,27 @@
// !LANGUAGE: +NewInference
// !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 testsCase1.Case1.Companion.foo
class Case1() {
companion object {
fun foo() : Case1 = TODO()
fun foo(y: String, x: Any = "") : Case1 = TODO()
fun foo( x: String, y: String) : Case1 = TODO()
}
}
fun case1() {
val y0: (String)-> Case1 = ::foo
val y1: (String)-> Case1 = Case1.Companion::foo
val y2: (String)-> Case1 = (Case1)::foo
}
fun case1_0() : (String)-> Case1 = ::foo
fun case1_1() : (String)-> Case1 = (Case1)::foo
fun case1_2(): (String)-> Case1 = Case1.Companion::foo
@@ -0,0 +1,36 @@
// !LANGUAGE: +NewInference
// !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-413
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import testsCase1.Case1.Companion.foo
class Case1() {
companion object {
fun foo() : Case1 = TODO()
fun foo(y: String, x: Any = "") : Case1 = TODO()
fun foo( x: String, y: String) : Case1 = TODO()
}
}
fun case1() {
val y0: (String)-> Case1 = ::<!NONE_APPLICABLE!>foo<!>
val y1: (String)-> Case1 = Case1.Companion::<!NONE_APPLICABLE!>foo<!>
val y2: (String)-> Case1 = (Case1)::<!NONE_APPLICABLE!>foo<!>
}
fun case1_0() : (String)-> Case1 = ::<!NONE_APPLICABLE!>foo<!>
fun case1_1() : (String)-> Case1 = (Case1)::<!NONE_APPLICABLE!>foo<!>
fun case1_2(): (String)-> Case1 = Case1.Companion::<!NONE_APPLICABLE!>foo<!>
@@ -0,0 +1,38 @@
// !LANGUAGE: +NewInference
// !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 libCase1.*
import kotlin.text.format
fun case1() {
val y1 =<!UNRESOLVED_REFERENCE!>(String)::format<!>
}
// FILE: LibCase1.kt
package libCase1
val String.Companion.format: String
get() = "1"
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
import kotlin.text.*
fun case2() {
val y1 =<!UNRESOLVED_REFERENCE!>(String)::format<!>
}
// FILE: LibCase2.kt
package libCase2
val String.Companion.format: String
get() = "1"
@@ -0,0 +1,51 @@
// !LANGUAGE: +NewInference
// !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-409
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 2
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 4
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 5
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 5 -> sentence 1
* NUMBER: 2
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libCase1.*
import kotlin.text.format
fun case1() {
val y1 =(String)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>format<!>
}
// FILE: LibCase1.kt
package libCase1
val String.Companion.format: String
get() = "1"
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
import kotlin.text.*
fun case2() {
val y1 =(String)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>format<!>
}
// FILE: LibCase2.kt
package libCase2
val String.Companion.format: String
get() = "1"
@@ -0,0 +1,45 @@
// !LANGUAGE: +NewInference
// !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 libCase1.*
fun case1() {
val y1 =<!UNRESOLVED_REFERENCE!>(A)::boo<!>
}
// FILE: LibCase1.kt
package libCase1
class A{
companion object{}
}
val A.Companion.boo: String
get() = "1"
fun A.Companion.boo(): String =""
// FILE: TestCase2.kt
// TESTCASE NUMBER: 1
package testsCase2
import libCase2.A
import libCase2.boo
fun case2() {
val y1 =<!UNRESOLVED_REFERENCE!>(A)::boo<!>
}
// FILE: LibCase2.kt
package libCase2
class A{
companion object{}
}
val A.Companion.boo: String
get() = "1"
fun A.Companion.boo(): String =""
@@ -0,0 +1,59 @@
// !LANGUAGE: +NewInference
// !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-409
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 2
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 4
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 5
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 5 -> sentence 1
* NUMBER: 3
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libCase1.*
fun case1() {
val y1 =(A)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase1.kt
package libCase1
class A{
companion object{}
}
val A.Companion.boo: String
get() = "1"
fun A.Companion.boo(): String =""
// FILE: TestCase2.kt
// TESTCASE NUMBER: 1
package testsCase2
import libCase2.A
import libCase2.boo
fun case2() {
val y1 =(A)::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase2.kt
package libCase2
class A{
companion object{}
}
val A.Companion.boo: String
get() = "1"
fun A.Companion.boo(): String =""
@@ -0,0 +1,38 @@
// !LANGUAGE: +NewInference
// !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 libCase1.boo
fun case1() {
val y1 =<!UNRESOLVED_REFERENCE!>1::boo<!>
}
// FILE: LibCase1.kt
package libCase1
val Int.boo: String
get() = "1"
fun Int.boo(): String =""
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
fun case2() {
val y1 =<!UNRESOLVED_REFERENCE!>1::boo<!>
}
// FILE: LibCase2.kt
package libCase2
val Int.boo: String
get() = "1"
fun Int.boo(): String =""
@@ -0,0 +1,51 @@
// !LANGUAGE: +NewInference
// !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-409
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 2
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 4
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 5
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 5 -> sentence 1
* NUMBER: 4
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libCase1.boo
fun case1() {
val y1 =1::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase1.kt
package libCase1
val Int.boo: String
get() = "1"
fun Int.boo(): String =""
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
fun case2() {
val y1 =1::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase2.kt
package libCase2
val Int.boo: String
get() = "1"
fun Int.boo(): String =""
@@ -0,0 +1,60 @@
// !LANGUAGE: +NewInference
// !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 libCase1.boo
fun case1() {
val y1 =<!UNRESOLVED_REFERENCE!>::boo<!>
}
// FILE: LibCase1.kt
package libCase1
val boo: String
get() = "1"
fun boo(): String =""
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
fun case2() {
val y1 =<!UNRESOLVED_REFERENCE!>::boo<!>
}
val boo: String
get() = "1"
fun boo(): String =""
// FILE: LibCase2.kt
package libCase2
fun boo(): String =""
// FILE: TestCase3.kt
// TESTCASE NUMBER: 2
package testsCase3
import libCase3.*
fun case3() {
val y1 =<!UNRESOLVED_REFERENCE!>::boo<!>
}
val boo: String
get() = "1"
fun boo(): String =""
// FILE: LibCase3.kt
package libCase3
val boo: String
get() = "1"
@@ -0,0 +1,73 @@
// !LANGUAGE: +NewInference
// !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-409
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 2
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 4
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 5
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 5 -> sentence 1
* NUMBER: 5
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libCase1.boo
fun case1() {
val y1 =::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
// FILE: LibCase1.kt
package libCase1
val boo: String
get() = "1"
fun boo(): String =""
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
fun case2() {
val y1 =::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
val boo: String
get() = "1"
fun boo(): String =""
// FILE: LibCase2.kt
package libCase2
fun boo(): String =""
// FILE: TestCase3.kt
// TESTCASE NUMBER: 2
package testsCase3
import libCase3.*
fun case3() {
val y1 =::<!OVERLOAD_RESOLUTION_AMBIGUITY!>boo<!>
}
val boo: String
get() = "1"
fun boo(): String =""
// FILE: LibCase3.kt
package libCase3
val boo: String
get() = "1"
@@ -0,0 +1,35 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
fun foo(i: Int): Int = 2 // (1)
fun foo(d: Double): Double = 2.0 // (2)
fun case1() {
val x1: (Int) -> Int = ::foo
val x2: (Int) -> Int = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.Int, kotlin.Int>")!>::foo<!>
val y1: (Double) -> Double = ::foo
val y2: (Double) -> Double = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.Double, kotlin.Double>")!>::foo<!>
}
// FILE: TestCase2.kt
/*
* TESTCASE NUMBER: 2
*/
package testPackCase2
val foo = 4
val boo = 4.0
fun case2() {
val y2 : () ->Int =::foo
val y1 : () ->Int =<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Int>")!>::foo<!>
val x1 : () ->Any =::boo
val x2 : () ->Any =<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Double>")!>::boo<!>
}
@@ -0,0 +1,45 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-413
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 5 -> sentence 1
* SECONDARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 6 -> sentence 1
* NUMBER: 1
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
fun foo(i: Int): Int = 2 // (1)
fun foo(d: Double): Double = 2.0 // (2)
fun case1() {
val x1: (Int) -> Int = ::<!DEBUG_INFO_CALL("fqName: testsCase1.foo; typeCall: function")!>foo<!>
val x2: (Int) -> Int = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.Int, kotlin.Int>")!>::foo<!>
val y1: (Double) -> Double = ::<!DEBUG_INFO_CALL("fqName: testsCase1.foo; typeCall: function")!>foo<!>
val y2: (Double) -> Double = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KFunction1<kotlin.Double, kotlin.Double>")!>::foo<!>
}
// FILE: TestCase2.kt
/*
* TESTCASE NUMBER: 2
*/
package testPackCase2
val foo = 4
val boo = 4.0
fun case2() {
val y2 : () ->Int =::<!DEBUG_INFO_CALL("fqName: testPackCase2.foo; typeCall: variable")!>foo<!>
val y1 : () ->Int =<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Int>")!>::foo<!>
val x1 : () ->Any =::<!DEBUG_INFO_CALL("fqName: testPackCase2.boo; typeCall: variable")!>boo<!>
val x2 : () ->Any =<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Double>")!>::boo<!>
}
@@ -0,0 +1,83 @@
// !LANGUAGE: +NewInference
// !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 libCase1.*
import kotlin.text.format
fun case1() {
val y2 : () ->String =(String)::format
}
// FILE: LibCase1.kt
package libCase1
val String.Companion.format: String
get() = "1"
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
import kotlin.text.format
fun case2() {
//
val x = "".format::invoke
//
val y = String.format::invoke
}
fun String.invoke(format: String, vararg args: Any?): String = "" //(2)
val String.format: String
get() = "1"
val String.Companion.format: String
get() = "1"
// FILE: LibCase2.kt
package libCase2
val String.Companion.format: String
get() = "1"
fun String.invoke(format: String, vararg args: Any?): String = ""
val String.format: String
get() = "1"
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libCase3.format
import kotlin.text.*
fun case3() {
val y1 =(String)::format
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty1<kotlin.String, kotlin.Int>")!>y1<!>
val y2 =""::format
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Int>")!>y2<!>
}
// FILE: LibCase3.kt
package libCase3
val String.Companion.format: Unit
get() = TODO()
val String.format: Int
get() = TODO()
@@ -0,0 +1,96 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-409
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 2
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 4
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 6
* NUMBER: 2
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
import libCase1.*
import kotlin.text.format
fun case1() {
val y2 : () ->String =(String)::<!DEBUG_INFO_CALL("fqName: libCase1.format; typeCall: variable")!>format<!>
}
// FILE: LibCase1.kt
package libCase1
val String.Companion.format: String
get() = "1"
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testsCase2
import libCase2.*
import kotlin.text.format
fun case2() {
//
val x = "".format::<!DEBUG_INFO_CALL("fqName: testsCase2.invoke; typeCall: extension function")!>invoke<!>
//
val y = String.format::<!DEBUG_INFO_CALL("fqName: testsCase2.invoke; typeCall: extension function")!>invoke<!>
}
fun String.invoke(format: String, vararg args: Any?): String = "" //(2)
val String.format: String
get() = "1"
val String.Companion.format: String
get() = "1"
// FILE: LibCase2.kt
package libCase2
val String.Companion.format: String
get() = "1"
fun String.invoke(format: String, vararg args: Any?): String = ""
val String.format: String
get() = "1"
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testsCase3
import libCase3.format
import kotlin.text.*
fun case3() {
val y1 =(String)::<!DEBUG_INFO_CALL("fqName: libCase3.format; typeCall: variable")!>format<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Unit>")!>y1<!>
val y2 =""::<!DEBUG_INFO_CALL("fqName: libCase3.format; typeCall: variable")!>format<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.reflect.KProperty0<kotlin.Int>")!>y2<!>
}
// FILE: LibCase3.kt
package libCase3
val String.Companion.format: Unit
get() = TODO()
val String.format: Int
get() = TODO()
@@ -0,0 +1,38 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
class Case() {
fun case(v: V) {
val va: () -> String = (V)::a
val vb: () -> String = (V)::b
val va1: () -> String = v::a
val vb1: () -> String = (V)::b
}
val V.Companion.b: String // (3)
get() = "1"
}
val V.a: String
get() = "1"
val V.Companion.a: String
get() = "1"
class V {
companion object {
const val b: String = "1"
}
}
@@ -0,0 +1,50 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-409
* MAIN LINK: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 1 -> sentence 1
* PRIMARY LINKS: overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 2
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 3
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 4
* overload-resolution, resolving-callable-references, resolving-callable-references-not-used-as-arguments-to-a-call -> paragraph 2 -> sentence 6
* NUMBER: 3
* DESCRIPTION: the case of a call with a callable reference as a not parameter
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testsCase1
class Case() {
fun case(v: V) {
val va: () -> String = (V)::<!DEBUG_INFO_CALL("fqName: testsCase1.a; typeCall: variable")!>a<!>
val vb: () -> String = (V)::<!DEBUG_INFO_CALL("fqName: testsCase1.V.Companion.b; typeCall: variable")!>b<!>
val va1: () -> String = v::<!DEBUG_INFO_CALL("fqName: testsCase1.a; typeCall: variable")!>a<!>
val vb1: () -> String = (V)::<!DEBUG_INFO_CALL("fqName: testsCase1.V.Companion.b; typeCall: variable")!>b<!>
}
val V.Companion.<!EXTENSION_SHADOWED_BY_MEMBER!>b<!>: String // (3)
get() = "1"
}
val V.a: String
get() = "1"
val V.Companion.a: String
get() = "1"
class V {
companion object {
const val b: String = "1"
}
}
@@ -0,0 +1,362 @@
{
"5": {
"neg": {
"1": [
{
"specVersion": "0.1-413",
"casesNumber": 3,
"description": "a callable reference is itself an argument to an overloaded function call",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/bidirectional-resolution-for-callable-calls/p-3/neg/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.5.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
]
},
"pos": {
"1": [
{
"specVersion": "0.1-413",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
]
}
},
"1": {
"neg": {
"1": [
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.5.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-413",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "main"
}
]
},
"pos": {
"1": [
{
"specVersion": "0.1-409",
"casesNumber": 3,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-413",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "main"
}
]
}
},
"2": {
"neg": {
"2": [
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.5.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"3": [
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.5.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"4": [
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.5.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"5": [
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.4.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/neg/1.5.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
]
},
"pos": {
"2": [
{
"specVersion": "0.1-409",
"casesNumber": 3,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"3": [
{
"specVersion": "0.1-409",
"casesNumber": 3,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"4": [
{
"specVersion": "0.1-409",
"casesNumber": 3,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
],
"6": [
{
"specVersion": "0.1-409",
"casesNumber": 3,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.2.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
},
{
"specVersion": "0.1-409",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.3.kt",
"unexpectedBehaviour": false,
"linkType": "primary"
}
]
}
},
"6": {
"pos": {
"1": [
{
"specVersion": "0.1-413",
"casesNumber": 2,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/resolving-callable-references-not-used-as-arguments-to-a-call/p-1/pos/1.1.kt",
"unexpectedBehaviour": false,
"linkType": "secondary"
}
]
}
}
}
@@ -0,0 +1,16 @@
{
"2": {
"pos": {
"2": [
{
"specVersion": "0.1-401",
"casesNumber": 1,
"description": "the case of a call with a callable reference as a not parameter",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/resolving-callable-references/p-2/pos/2.1.kt",
"unexpectedBehaviour": false,
"linkType": "main"
}
]
}
}
}