[Spec tests] Add tests for intersection and OR
This commit is contained in:
+2
-2
@@ -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 {
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+4
-4
@@ -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() }
|
||||
}
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ import LibPackCase1.a.plusAssign
|
||||
|
||||
fun case1 (){
|
||||
var b: B = B()
|
||||
<!INAPPLICABLE_CANDIDATE!>b +={ C() }<!>
|
||||
b +={ C() }
|
||||
b +={ 1 }
|
||||
}
|
||||
|
||||
|
||||
+19
@@ -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<!>()
|
||||
}
|
||||
}
|
||||
+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 (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<!>()
|
||||
}
|
||||
}
|
||||
|
||||
+8
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user