[Spec tests] Add tests for intersection and OR

This commit is contained in:
anastasiia.spaseeva
2020-07-28 11:14:46 +03:00
parent 46774fb6d6
commit 0488dc985f
18 changed files with 962 additions and 13 deletions
@@ -15,9 +15,9 @@ import LibPackCase1.b.*
fun case1 (){
var b: B? = B()
<!DEBUG_INFO_CALL("fqName: LibPackCase1.b.plusAssign; typeCall: operator extension function")!>b += { C() }<!>
<!AMBIGUITY, DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!>b += { C() }<!>
<!DEBUG_INFO_CALL("fqName: LibPackCase1.a.plusAssign; typeCall: operator extension function")!>b += {1}<!>
<!AMBIGUITY, DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!>b += {1}<!>
}
class B {
@@ -10,9 +10,9 @@ import LibPackCase1.a.*
import LibPackCase1.b.*
fun case1 (){
var b: B? = null
<!DEBUG_INFO_CALL("fqName: LibPackCase1.b.plusAssign; typeCall: inline operator extension function")!>b += { C() }<!>
<!AMBIGUITY, DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!>b += { C() }<!>
<!DEBUG_INFO_CALL("fqName: LibPackCase1.a.plusAssign; typeCall: inline operator extension function")!>b += {1}<!>
<!AMBIGUITY, DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!>b += {1}<!>
}
class B {
@@ -15,9 +15,9 @@ import LibPackCase1.b.*
fun case1 (){
var b: B? = B()
b += { C() }
<!AMBIGUITY!>b += { C() }<!>
b += {1}
<!AMBIGUITY!>b += {1}<!>
}
class B {
@@ -15,9 +15,9 @@ import LibPackCase1.b.plusAssign
fun case1 (){
var b: B? = B()
b += { C() }
<!AMBIGUITY!>b += { C() }<!>
b += {1}
<!AMBIGUITY!>b += {1}<!>
}
class B {
@@ -15,8 +15,8 @@ import LibPackCase1.b.plusAssign
fun case1 (){
var b: B = B()
b +={ C() }
b +={ 1 }
<!AMBIGUITY!>b +={ C() }<!>
<!AMBIGUITY!>b +={ 1 }<!>
}
class B
@@ -48,8 +48,8 @@ import LibPackCase2.b.plusAssign
fun case2 (){
var b: B = B()
b +={ C() }
b +={ 1 }
<!AMBIGUITY!>b +={ C() }<!>
<!AMBIGUITY!>b +={ 1 }<!>
b.<!AMBIGUITY!>plusAssign<!>{ C() }
}
@@ -14,7 +14,7 @@ import LibPackCase1.a.plusAssign
fun case1 (){
var b: B = B()
<!INAPPLICABLE_CANDIDATE!>b +={ C() }<!>
b +={ C() }
b +={ 1 }
}
@@ -0,0 +1,19 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
interface A1
interface B1
fun case1(x: Any) {
fun A1.foo(): kotlin.Int = 1 //(1)
fun B1.foo(): kotlin.Int = 2 //(2)
fun Any.foo(): kotlin.String = "Any" //(3)
x.<!DEBUG_INFO_CALL("fqName: case1.foo; typeCall: extension function")!>foo()<!> // to (3)
x.foo()
if (x is B1 && x is A1) {
x.<!AMBIGUITY!>foo<!>()
}
}
@@ -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 (NEGATIVE)
*
* SPEC VERSION: 0.1-464
* MAIN LINK: overload-resolution, choosing-the-most-specific-candidate-from-the-overload-candidate-set, algorithm-of-msc-selection -> paragraph 9 -> sentence 2
* NUMBER: 3
* DESCRIPTION: receiver of intersection type ambuguity
*/
// TESTCASE NUMBER: 1
interface A1
interface B1
fun case1(x: Any) {
fun A1.foo(): kotlin.Int = 1 //(1)
fun B1.foo(): kotlin.Int = 2 //(2)
fun Any.foo(): kotlin.String = "Any" //(3)
x.<!DEBUG_INFO_CALL("fqName: case1.foo; typeCall: extension function")!>foo()<!> // to (3)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>x.foo()<!>
if (x is B1 && x is A1) {
x.<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>()
}
}
@@ -1008,6 +1008,14 @@
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-464",
"casesNumber": 1,
"description": "receiver of intersection type ambuguity",
"path": "compiler/tests-spec/testData/diagnostics/linked/overload-resolution/choosing-the-most-specific-candidate-from-the-overload-candidate-set/algorithm-of-msc-selection/p-9/neg/2.3.kt",
"unexpectedBehaviour": false,
"linkType": "main"
},
{
"specVersion": "0.1-448",
"casesNumber": 2,