[Spec tests] Add diagnostics tests for building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver
This commit is contained in:
committed by
Victor Petukhov
parent
81b6e5a373
commit
3b35374186
+91
@@ -0,0 +1,91 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
|
||||
* RELEVANT PLACES: 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
|
||||
open class Case1() {
|
||||
companion object foo {
|
||||
operator fun invoke() {}
|
||||
}
|
||||
|
||||
val propVal: Int = 1
|
||||
val propVar: Int = 1
|
||||
fun function() {}
|
||||
val markerObj = object : Marker {}
|
||||
|
||||
fun innerFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVal()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVal()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVar()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVar()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.function; typeCall: function")!>function()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.function; typeCall: function")!>function()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Marker.invoke; typeCall: variable&invoke")!>markerObj()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.Marker.invoke; typeCall: variable&invoke")!>markerObj()<!>
|
||||
}
|
||||
|
||||
operator fun Int.invoke() {}
|
||||
|
||||
inner class InnerClass {
|
||||
|
||||
fun innerClassFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVal()<!>
|
||||
this@Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVal()<!>
|
||||
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVar()<!>
|
||||
this@Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.invoke; typeCall: variable&invoke")!>propVar()<!>
|
||||
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.function; typeCall: function")!>function()<!>
|
||||
this@Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.function; typeCall: function")!>function()<!>
|
||||
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Marker.invoke; typeCall: variable&invoke")!>markerObj()<!>
|
||||
this@Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Marker.invoke; typeCall: variable&invoke")!>markerObj()<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface Marker {
|
||||
operator fun invoke() {}
|
||||
}
|
||||
|
||||
class ExtendCase1() : Case1() {
|
||||
|
||||
fun extFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.ExtendCase1.invoke; typeCall: variable&invoke")!>propVal()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.ExtendCase1.invoke; typeCall: variable&invoke")!>propVal()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.ExtendCase1.invoke; typeCall: variable&invoke")!>propVar()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.ExtendCase1.invoke; typeCall: variable&invoke")!>propVar()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.ExtendCase1.function; typeCall: function")!>function()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.ExtendCase1.function; typeCall: function")!>function()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: tests.test2.Marker.invoke; typeCall: variable&invoke")!>markerObj()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.test2.Marker.invoke; typeCall: variable&invoke")!>markerObj()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun case6() {
|
||||
Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: operator function")!>invoke()<!>
|
||||
Case1.<!DEBUG_INFO_CALL("fqName: tests.test2.Case1.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
|
||||
* RELEVANT PLACES: 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: 2
|
||||
* DESCRIPTION: set of non-extension member callables only
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
interface Marker {
|
||||
operator fun invoke() {}
|
||||
}
|
||||
|
||||
class Case1() {
|
||||
fun foo() : Int =1
|
||||
|
||||
val foo = object : Marker {}
|
||||
|
||||
fun innerFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
inner class InnerClass0 {
|
||||
val foo = object : Marker {}
|
||||
|
||||
fun innerClassFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: Marker.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: Marker.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
this@Case1.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
inner class InnerClass1 {
|
||||
fun foo() : Int =1
|
||||
|
||||
fun innerClassFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.InnerClass1.foo; typeCall: function")!>foo()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.InnerClass1.foo; typeCall: function")!>foo()<!>
|
||||
this@Case1.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
|
||||
* RELEVANT PLACES: 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, call-with-an-explicit-receiver -> paragraph 11 -> sentence 1
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: The sets of non-extension member callables named f of type T;
|
||||
*/
|
||||
|
||||
class Marker {
|
||||
fun foo() = println("non-extension member toplevel Marker.foo()")
|
||||
val foo: String = "non-extension member toplevel Marker.foo"
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
class Case1() {
|
||||
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
|
||||
fun test() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun case1() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
class Case2() {
|
||||
fun test() {
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("top level extension marker.foo")
|
||||
|
||||
fun case2() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case3() {
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
|
||||
* RELEVANT PLACES: 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, 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, c-level-partition -> paragraph 1 -> sentence 1
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1, 2, 3
|
||||
|
||||
// FILE: Marker.kt
|
||||
package libPackage
|
||||
|
||||
class Marker {
|
||||
fun foo() = println("non-extension member Marker.foo()")
|
||||
val foo: String = "non-extension member Marker.foo"
|
||||
}
|
||||
|
||||
// FILE: Tests.kt
|
||||
package tests
|
||||
import libPackage.Marker
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
class Case1() {
|
||||
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
|
||||
fun test() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun case1() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
class Case2() {
|
||||
fun test() {
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("top level extension marker.foo")
|
||||
|
||||
fun case2() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case3() {
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 1
|
||||
* RELEVANT PLACES: 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, 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, callables-and-invoke-convention -> paragraph 6 -> sentence 1
|
||||
* NUMBER: 5
|
||||
* DESCRIPTION: 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
|
||||
package libPackage
|
||||
|
||||
class Marker {
|
||||
fun foo() = println("non-extension member Marker.foo()")
|
||||
val foo: Marker = <!DEBUG_INFO_LEAKING_THIS!>this<!>
|
||||
operator fun invoke() = println("non-extension member Marker.invoke()")
|
||||
}
|
||||
|
||||
// FILE: Tests.kt
|
||||
package tests
|
||||
import libPackage.Marker
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
|
||||
class Case1() {
|
||||
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
|
||||
fun test() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun case1() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
class Case2() {
|
||||
fun test() {
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("top level extension marker.foo")
|
||||
|
||||
fun case2() {
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case3() {
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
Marker().<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case4(marker : Marker?) {
|
||||
marker?.<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case5(marker : Marker?) {
|
||||
fun bar(){
|
||||
fun Marker.<!EXTENSION_SHADOWED_BY_MEMBER!>foo<!>() = println("local extension marker.foo")
|
||||
marker?.<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
marker?.<!DEBUG_INFO_CALL("fqName: libPackage.Marker.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
|
||||
* RELEVANT PLACES: 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
|
||||
* overload-resolution, callables-and-invoke-convention -> paragraph 7 -> sentence 1
|
||||
* overload-resolution, callables-and-invoke-convention -> paragraph 7 -> sentence 2
|
||||
* overload-resolution, receivers -> paragraph 7 -> sentence 2
|
||||
* overload-resolution, receivers -> paragraph 7 -> sentence 3
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: The sets of local extension callables
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
class Case1() {
|
||||
fun foo() : Int =1
|
||||
|
||||
val foo = object : MarkerCase1 {}
|
||||
|
||||
fun innerFun() {
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
|
||||
inner class InnerClass0 {
|
||||
val foo = object : MarkerCase1 {}
|
||||
operator fun MarkerCase1.invoke() {}
|
||||
|
||||
fun innerClassFun() {
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.InnerClass0.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
operator fun MarkerCase1.invoke() {}
|
||||
|
||||
inner class InnerClass1(){
|
||||
val foo = object : MarkerCase1 {}
|
||||
|
||||
fun nestedClassFun(){
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface MarkerCase1 {}
|
||||
|
||||
fun case1(){
|
||||
operator fun MarkerCase1.invoke() {}
|
||||
Case1().InnerClass0().<!DEBUG_INFO_CALL("fqName: case1.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
Case1().InnerClass1().<!DEBUG_INFO_CALL("fqName: case1.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
open class Case2() {
|
||||
open fun fooCase2(): MarkerCase2 = object : MarkerCase2 {}
|
||||
|
||||
open val fooCase2 = object : MarkerCase2 {}
|
||||
|
||||
interface MarkerCase2 {}
|
||||
open operator fun MarkerCase2.invoke() {}
|
||||
|
||||
fun innerFun() {
|
||||
<!DEBUG_INFO_CALL("fqName: Case2.fooCase2; typeCall: function")!>fooCase2()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case2.fooCase2; typeCall: function")!>fooCase2()<!>
|
||||
}
|
||||
|
||||
inner class InnerClass0 : Case2() {
|
||||
override fun fooCase2(): MarkerCase2 {
|
||||
return object : MarkerCase2 {}
|
||||
}
|
||||
|
||||
override operator fun MarkerCase2.invoke() {}
|
||||
|
||||
fun innerClassFun() {
|
||||
this@Case2.<!DEBUG_INFO_CALL("fqName: Case2.fooCase2; typeCall: function")!>fooCase2()<!>
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case2.InnerClass0.fooCase2; typeCall: function")!>fooCase2()<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inner class InnerClass1() {
|
||||
val fooCase2 = object : MarkerCase2 {}
|
||||
|
||||
fun nestedClassFun() {
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case2.invoke; typeCall: variable&invoke")!>fooCase2()<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun case2() {
|
||||
operator fun Case2.MarkerCase2.invoke() {}
|
||||
Case2().InnerClass0().<!DEBUG_INFO_CALL("fqName: Case2.InnerClass0.fooCase2; typeCall: function")!>fooCase2()<!>
|
||||
Case2().InnerClass1().<!DEBUG_INFO_CALL("fqName: case2.invoke; typeCall: variable&invoke")!>fooCase2()<!>
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SPEC VERSION: 0.1-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
|
||||
* RELEVANT PLACES: 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() {
|
||||
val foo: String.() -> Unit = {} // (1)
|
||||
fun String.foo(): Unit {} // (2)
|
||||
"1".<!DEBUG_INFO_CALL("fqName: Case1.bar.foo; typeCall: extension function")!>foo()<!> // resolves to (2)
|
||||
with("2") {
|
||||
foo() //resolves to (1) !!!
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.bar.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".run {
|
||||
<!DEBUG_INFO_CALL("fqName: kotlin.Function1.invoke; typeCall: variable&invoke")!>foo()<!> //resolves to (1) !!!
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.bar.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".apply {
|
||||
<!DEBUG_INFO_CALL("fqName: kotlin.Function1.invoke; typeCall: variable&invoke")!>foo()<!> //resolves to (1) !!!
|
||||
this.<!DEBUG_INFO_CALL("fqName: Case1.bar.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".also {
|
||||
it.<!DEBUG_INFO_CALL("fqName: Case1.bar.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".let {
|
||||
it.<!DEBUG_INFO_CALL("fqName: Case1.bar.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class B {
|
||||
val foo: String.() -> Unit = {} // (1)
|
||||
fun String.foo(): Unit {} // (2)
|
||||
fun bar() {
|
||||
"1".<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> // resolves to (2)
|
||||
val <!UNUSED_VARIABLE!>str<!> = "1"
|
||||
with("2") {
|
||||
<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
this.<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".run {
|
||||
<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
this.<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".apply {
|
||||
<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
this.<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".also {
|
||||
it.<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
"".let {
|
||||
it.<!DEBUG_INFO_CALL("fqName: B.foo; typeCall: extension function")!>foo()<!> //resolves to (2)
|
||||
}
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
|
||||
* RELEVANT PLACES: 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
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: set of non-extension member callables only
|
||||
*/
|
||||
// TESTCASE NUMBER: 1
|
||||
class Case1 {
|
||||
operator fun String.invoke() :String{ return this} //fqName: Case1.invoke; typeCall: function
|
||||
fun String.foo() : String = this //fqName: Case1.foo; typeCall: function;
|
||||
fun bar() {
|
||||
"".<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: extension function")!>foo()<!>
|
||||
"".<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>invoke()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>""()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>""()()()() ()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>""().invoke()()()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>""().foo()().invoke()()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>"1".foo()()<!>
|
||||
<!DEBUG_INFO_CALL("fqName: Case1.invoke; typeCall: operator extension function")!>"1"()().invoke()()<!>.<!DEBUG_INFO_CALL("fqName: Case1.foo; typeCall: extension function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 2
|
||||
* RELEVANT PLACES: 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
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: sets of local, explicitly imported, declared in the package scope and star-imported extension callables
|
||||
*/
|
||||
|
||||
// FILE: Extensions.kt
|
||||
package libPackage
|
||||
|
||||
public fun String?.orEmpty(): String = "my Extension for $this"
|
||||
|
||||
// FILE: TestCase1.kt
|
||||
|
||||
package sentence3
|
||||
|
||||
import libPackage.*
|
||||
import libPackage.orEmpty
|
||||
|
||||
private fun String?.orEmpty(): String = "my top-level (pack scope) Extension for $this"
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
class Case1() {
|
||||
fun String?.orEmpty(): String = "my local extension for $this"
|
||||
fun case1(s: String?) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: sentence3.Case1.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: TestCase2.kt
|
||||
package sentence3
|
||||
import libPackage.*
|
||||
//import libPackage.orEmpty
|
||||
|
||||
private fun String?.orEmpty(): String = "my top-level (pack scope) Extension for $this"
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
class Case2() {
|
||||
fun String?.orEmpty(): String = "my local extension for $this"
|
||||
fun case2(s: String?) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: sentence3.Case2.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
class Case3() {
|
||||
fun String?.orEmpty(): String = "my local extension for $this"
|
||||
fun case3(s: String?) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: sentence3.Case3.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
fun innerFirst(s: String?){
|
||||
fun String?.orEmpty(): String = "my local inner extension for $this"
|
||||
<!DEBUG_INFO_CALL("fqName: sentence3.Case3.case3.innerFirst.s; typeCall: typeCall is unknown")!>s<!>?.<!DEBUG_INFO_CALL("fqName: sentence3.Case3.case3.innerFirst.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
fun innerSecond(){
|
||||
fun String?.orEmpty(): String = "my local inner extension for $this"
|
||||
s.<!DEBUG_INFO_CALL("fqName: sentence3.Case3.case3.innerSecond.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
s.<!DEBUG_INFO_CALL("fqName: sentence3.Case3.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// !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-268
|
||||
* PLACE:overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 3
|
||||
* RELEVANT PLACES: 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
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: sets of explicitly imported, declared in the package scope and star-imported extension callables
|
||||
*/
|
||||
|
||||
// FILE: Extensions.kt
|
||||
package libPackage
|
||||
|
||||
public fun String?.orEmpty(): String = "my Extension for $this"
|
||||
|
||||
// FILE: TestCase1.kt
|
||||
package sentence3
|
||||
|
||||
import libPackage.*
|
||||
import libPackage.orEmpty
|
||||
|
||||
|
||||
private fun String?.orEmpty(): String = "my top level extension for $this"
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case1(s: String?) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: libPackage.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 4
|
||||
* RELEVANT PLACES: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: sets of extension callables declared in the package scope
|
||||
*/
|
||||
|
||||
package tests.diag
|
||||
|
||||
// TESTCASE NUMBER: 1, 2
|
||||
operator fun Int.invoke() {}
|
||||
|
||||
// TESTCASE NUMBER: 3, 4
|
||||
interface Marker {
|
||||
operator fun invoke() {}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
class Case1 {
|
||||
val foo: Int = 1
|
||||
}
|
||||
|
||||
fun case1() {
|
||||
Case1().<!DEBUG_INFO_CALL("fqName: tests.diag.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
val a = Case1()
|
||||
a.<!DEBUG_INFO_CALL("fqName: tests.diag.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
var b = Case1()
|
||||
b.<!DEBUG_INFO_CALL("fqName: tests.diag.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
class Case2 {
|
||||
val foo: Int = 1
|
||||
fun foo(): Int = 1
|
||||
}
|
||||
|
||||
fun case2() {
|
||||
Case2().<!DEBUG_INFO_CALL("fqName: tests.diag.Case2.foo; typeCall: function")!>foo()<!>
|
||||
val a = Case2()
|
||||
a.<!DEBUG_INFO_CALL("fqName: tests.diag.Case2.foo; typeCall: function")!>foo()<!>
|
||||
var b = Case2()
|
||||
b.<!DEBUG_INFO_CALL("fqName: tests.diag.Case2.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
class Case3() {
|
||||
val foo = object : Marker {}
|
||||
fun foo(): Int = 1
|
||||
|
||||
fun f() {
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.diag.Case3.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun case3() {
|
||||
Case3().<!DEBUG_INFO_CALL("fqName: tests.diag.Case3.foo; typeCall: function")!>foo()<!>
|
||||
val a = Case3()
|
||||
a.<!DEBUG_INFO_CALL("fqName: tests.diag.Case3.foo; typeCall: function")!>foo()<!>
|
||||
var b = Case3()
|
||||
b.<!DEBUG_INFO_CALL("fqName: tests.diag.Case3.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
class Case4() {
|
||||
val foo = object : Marker {}
|
||||
|
||||
fun f() {
|
||||
this.<!DEBUG_INFO_CALL("fqName: tests.diag.Marker.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun case4() {
|
||||
Case4().<!DEBUG_INFO_CALL("fqName: tests.diag.Marker.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
val a = Case4()
|
||||
a.<!DEBUG_INFO_CALL("fqName: tests.diag.Marker.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
var b = Case4()
|
||||
b.<!DEBUG_INFO_CALL("fqName: tests.diag.Marker.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
class Case5() {
|
||||
companion object foo {
|
||||
operator fun invoke() {}
|
||||
}
|
||||
|
||||
fun innerFun() = this.<!DEBUG_INFO_CALL("fqName: tests.diag.Case5.foo; typeCall: function")!>foo()<!>
|
||||
|
||||
fun foo(): Int = 1
|
||||
|
||||
}
|
||||
|
||||
fun case5() {
|
||||
Case5().<!DEBUG_INFO_CALL("fqName: tests.diag.Case5.foo; typeCall: function")!>foo()<!>
|
||||
val a = Case5()
|
||||
a.<!DEBUG_INFO_CALL("fqName: tests.diag.Case5.foo; typeCall: function")!>foo()<!>
|
||||
|
||||
var b = Case5()
|
||||
b.<!DEBUG_INFO_CALL("fqName: tests.diag.Case5.foo; typeCall: function")!>foo()<!>
|
||||
}
|
||||
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
class Case6() {
|
||||
companion object foo {
|
||||
operator fun invoke() {}
|
||||
}
|
||||
|
||||
fun innerFun() = <!DEBUG_INFO_CALL("fqName: tests.diag.Case6.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
|
||||
fun case6() {
|
||||
Case6.<!DEBUG_INFO_CALL("fqName: tests.diag.Case6.foo.invoke; typeCall: variable&invoke")!>foo()<!>
|
||||
}
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 4
|
||||
* RELEVANT PLACES: 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
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: sets of declared in the package scope and star-imported extension callables
|
||||
*/
|
||||
|
||||
// FILE: Extensions.kt
|
||||
package libPackage
|
||||
|
||||
public fun String?.orEmpty(): String = "my Extension for $this"
|
||||
|
||||
// FILE: TestCase2.kt
|
||||
package sentence3
|
||||
|
||||
import libPackage.*
|
||||
//import libPackage.orEmpty
|
||||
|
||||
private fun String?.orEmpty(): String = "my top level extension for $this"
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case2(s: String?) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: sentence3.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 5
|
||||
* RELEVANT PLACES: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 11 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: set of star-imported extension callables
|
||||
*/
|
||||
|
||||
// FILE: Extensions.kt
|
||||
package libPackage
|
||||
|
||||
public fun String?.orEmpty(): String = "my Extension for $this"
|
||||
|
||||
// FILE: TestCase2.kt
|
||||
package sentence3
|
||||
|
||||
import libPackage.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case2(s: String?) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: libPackage.orEmpty; typeCall: extension function")!>orEmpty()<!>
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// !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-268
|
||||
* PLACE: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 6
|
||||
* RELEVANT PLACES: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 11 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: set of implicitly-imported extension callables
|
||||
*/
|
||||
|
||||
// FILE: Extensions.kt
|
||||
package libPackage
|
||||
|
||||
private fun String?.orEmpty(): String = "my private Extension for $this"
|
||||
|
||||
// FILE: TestCase2.kt
|
||||
package sentence3
|
||||
import libPackage.* //nothing to import, extension is private
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case2(s: String) {
|
||||
s.<!DEBUG_INFO_CALL("fqName: kotlin.text.orEmpty; typeCall: inline extension function")!>orEmpty()<!>
|
||||
}
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
{
|
||||
"6": {
|
||||
"pos": {
|
||||
"2": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 2,
|
||||
"description": "The sets of local extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 3,
|
||||
"description": "sets of local, explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 3,
|
||||
"description": "The sets of non-extension member callables named f of type T;",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/1.3.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 3,
|
||||
"description": "sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/1.4.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of non-extension member callables only",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 5,
|
||||
"description": "sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/1.5.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "extension calls with explicit and implicit receiver",
|
||||
"unexpectedBehaviour": true
|
||||
}
|
||||
],
|
||||
"1": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of non-extension member callables only",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 3,
|
||||
"description": "The sets of non-extension member callables named f of type T;",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 3,
|
||||
"description": "sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 5,
|
||||
"description": "sets of non-extension member callables, local, explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "sets of non-extension member callables only",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
],
|
||||
"3": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 3,
|
||||
"description": "sets of local, explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/2.4.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "sets of explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
],
|
||||
"4": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "sets of explicitly imported, declared in the package scope and star-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/3.1.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 6,
|
||||
"description": "sets of extension callables declared in the package scope",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "sets of declared in the package scope and star-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
],
|
||||
"5": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of star-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "sets of declared in the package scope and star-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/4.2.kt",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
],
|
||||
"6": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of implicitly-imported extension callables",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"9": {
|
||||
"pos": {
|
||||
"1": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 6,
|
||||
"description": "sets of extension callables declared in the package scope",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/4.1.kt",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"11": {
|
||||
"pos": {
|
||||
"1": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of star-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/5.1.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of implicitly-imported extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/6.1.kt",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"1": {
|
||||
"pos": {
|
||||
"1": [
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 2,
|
||||
"description": "The sets of local extension callables",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/2.1.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of non-extension member callables only",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/1.2.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "set of non-extension member callables only",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/2.3.kt",
|
||||
"unexpectedBehaviour": false
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "extension calls with explicit and implicit receiver",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/2.2.kt",
|
||||
"unexpectedBehaviour": true
|
||||
},
|
||||
{
|
||||
"specVersion": "0.1-268",
|
||||
"casesNumber": 1,
|
||||
"description": "sets of non-extension member callables only",
|
||||
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/call-with-an-explicit-receiver/p-6/pos/1.1.kt",
|
||||
"unexpectedBehaviour": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user