[Spec tests] Fix test cases structure

This commit is contained in:
anastasiia.spaseeva
2020-07-28 11:14:38 +03:00
parent 4ad3847224
commit bef59055cd
17 changed files with 342 additions and 93 deletions
@@ -11,9 +11,10 @@
* DESCRIPTION: Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class * DESCRIPTION: Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class
*/ */
// TESTCASE NUMBER: 1 // FILE: TestCase1.kt
// TESTCASE NUMBER:1
<!REDUNDANT_MODIFIER!>open<!> abstract class Base { package testPackCase1
<!REDUNDANT_MODIFIER!>open<!> abstract class Base {
abstract val a: Any abstract val a: Any
abstract var b: Any abstract var b: Any
@@ -24,22 +25,34 @@
abstract fun foo() abstract fun foo()
internal abstract fun boo(): Any internal abstract fun boo(): Any
} }
fun case1() { fun case1() {
val impl = BaseImplCase2(1, "1", 1.0) val impl = BaseImplCase1(1, "1", 1.0)
} }
class BaseImplCase2( class BaseImplCase1(
override var a: Any, override override var a: Any, override
<!VAR_OVERRIDDEN_BY_VAL!>val<!> b: Any, override var c: Any, override <!VAR_OVERRIDDEN_BY_VAL!>val<!> b: Any, override var c: Any, override
<!VAR_OVERRIDDEN_BY_VAL!>val<!> d: Any = "5") : Base() <!VAR_OVERRIDDEN_BY_VAL!>val<!> d: Any = "5") : Base()
{ {
override fun foo() {} override fun foo() {}
override internal fun boo() {} override internal fun boo() {}
} }
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
package testPackCase2
<!REDUNDANT_MODIFIER!>open<!> abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case2() { fun case2() {
val impl = ImplBaseCase2() val impl = ImplBaseCase2()
@@ -68,10 +81,22 @@ class ImplBaseCase2() : Base() {
} }
} }
/* // FILE: TestCase.kt
* TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
* NOTE: property is not implemented
*/ package testPackCase3
<!REDUNDANT_MODIFIER!>open<!> abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case3() { fun case3() {
ImplBaseCase3() ImplBaseCase3()
} }
@@ -95,10 +120,21 @@ fun case3() {
} }
} }
/* // FILE: TestCase.kt
* TESTCASE NUMBER: 4 // TESTCASE NUMBER: 4
* NOTE: function is not implemented package testPackCase4
*/ <!REDUNDANT_MODIFIER!>open<!> abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case4() { fun case4() {
ImplBaseCase4() ImplBaseCase4()
@@ -125,4 +161,4 @@ fun case4() {
* TESTCASE NUMBER: 5 * TESTCASE NUMBER: 5
* NOTE: incompatible modifiers final and abstract * NOTE: incompatible modifiers final and abstract
*/ */
<!INCOMPATIBLE_MODIFIERS!>final<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> class Case5() {} <!INCOMPATIBLE_MODIFIERS!>final<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> class Case5() {}
@@ -11,7 +11,9 @@
* DESCRIPTION: Abstract classes may contain abstract members, which should be implemented in an anonymous class that inherits from that abstract type * DESCRIPTION: Abstract classes may contain abstract members, which should be implemented in an anonymous class that inherits from that abstract type
*/ */
// FILE: TestCase.kt
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
package testPackCase1
private abstract class Base { private abstract class Base {
abstract val a: Any abstract val a: Any
@@ -24,7 +26,6 @@ private abstract class Base {
internal abstract fun boo(): Any internal abstract fun boo(): Any
} }
fun case1() { fun case1() {
val impl = object : Base() { val impl = object : Base() {
override var a: Any override var a: Any
@@ -47,11 +48,26 @@ fun case1() {
} }
// FILE: TestCase.kt
/* /*
* TESTCASE NUMBER: 2 * TESTCASE NUMBER: 2
* NOTE: property is not implemented * NOTE: property is not implemented
*/ */
package testPackCase2
private abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case2() { fun case2() {
val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() { val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() {
override var b: Any override var b: Any
@@ -74,10 +90,20 @@ fun case2() {
} }
/* // FILE: TestCase.kt
* TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
* NOTE: function is not implemented package testPackCase3
*/ private abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case3() { fun case3() {
val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() { val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() {
@@ -11,7 +11,9 @@
* DESCRIPTION: attempt to implement abstract members with invalid types * DESCRIPTION: attempt to implement abstract members with invalid types
*/ */
// FILE: TestCase.kt
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
package testPackCase1
abstract class Base { abstract class Base {
abstract val a: CharSequence abstract val a: CharSequence
abstract var b: CharSequence abstract var b: CharSequence
@@ -34,9 +36,16 @@ class Case1 : Base() {
} }
/*
* TESTCASE NUMBER: 2 // FILE: TestCase.kt
*/ // TESTCASE NUMBER: 2
package testPackCase2
abstract class Base {
abstract val a: CharSequence
abstract var b: CharSequence
abstract fun foo(): CharSequence
}
class Case2(override val a: String, override var b: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String<!>) : Base() { class Case2(override val a: String, override var b: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String<!>) : Base() {
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>CharSequence?<!> { override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>CharSequence?<!> {
@@ -44,10 +53,16 @@ class Case2(override val a: String, override var b: <!VAR_TYPE_MISMATCH_ON_OVERR
} }
} }
/* // FILE: TestCase.kt
* TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
* NOTE: abstract nested class members are not implemented package testPackCase3
*/ abstract class Base {
abstract val a: CharSequence
abstract var b: CharSequence
abstract fun foo(): CharSequence
}
class Case3 { class Case3 {
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class ImplBase1<!> : MainClass.Base1() {} <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class ImplBase1<!> : MainClass.Base1() {}
@@ -64,7 +64,7 @@
}, },
{ {
"specVersion": "0.1-213", "specVersion": "0.1-213",
"casesNumber": 1, "casesNumber": 3,
"description": "Abstract classes may contain abstract members, which should be implemented in an anonymous class that inherits from that abstract type", "description": "Abstract classes may contain abstract members, which should be implemented in an anonymous class that inherits from that abstract type",
"path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.2.kt", "path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.2.kt",
"unexpectedBehaviour": false, "unexpectedBehaviour": false,
@@ -72,7 +72,7 @@
}, },
{ {
"specVersion": "0.1-213", "specVersion": "0.1-213",
"casesNumber": 1, "casesNumber": 3,
"description": "attempt to implement abstract members with invalid types", "description": "attempt to implement abstract members with invalid types",
"path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.kt", "path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.kt",
"unexpectedBehaviour": false, "unexpectedBehaviour": false,
@@ -128,7 +128,7 @@
}, },
{ {
"specVersion": "0.1-213", "specVersion": "0.1-213",
"casesNumber": 2, "casesNumber": 4,
"description": "Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class", "description": "Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class",
"path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.1.kt", "path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.1.kt",
"unexpectedBehaviour": false, "unexpectedBehaviour": false,
@@ -11,12 +11,11 @@
* DESCRIPTION: check the type of jump expressions is Nothing and code placed on the left side of expression will never be executed * DESCRIPTION: check the type of jump expressions is Nothing and code placed on the left side of expression will never be executed
*/ */
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
fun case1() { fun case1() {
var name: Any? = null var name: Any? = null
val men = arrayListOf(Person("Phill"), Person(), Person("Bob")) val men = arrayListOf(Person1("Phill"), Person1(), Person1("Bob"))
for (k in men) { for (k in men) {
k.name k.name
loop@ for (i in men) { loop@ for (i in men) {
@@ -31,13 +30,13 @@ fun case1() {
val a = 1 val a = 1
} }
class Person(var name: String? = null) {} class Person1(var name: String? = null) {}
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
fun case2() { fun case2() {
var name: Any? = null var name: Any? = null
val men = arrayListOf(Person("Phill"), Person(), Person("Bob")) val men = arrayListOf(Person2("Phill"), Person2(), Person2("Bob"))
for (k in men) { for (k in men) {
loop@ for (i in men) { loop@ for (i in men) {
i.name i.name
@@ -51,6 +50,8 @@ fun case2() {
val a = 1 val a = 1
} }
class Person2(var name: String? = null) {}
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
fun case3() { fun case3() {
@@ -42,11 +42,11 @@ fun case2() {
} }
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
interface Processable<T> { interface ProcessableCase3<T> {
fun process(): T fun process(): T
} }
class Processor : Processable<Unit> { class Processor : ProcessableCase3<Unit> {
override fun process() { override fun process() {
val proc = "case 3" val proc = "case 3"
} }
@@ -58,6 +58,10 @@ fun case3() {
} }
// TESTCASE NUMBER: 4 // TESTCASE NUMBER: 4
interface Processable<T> {
fun process(): T
}
fun case4() { fun case4() {
val p2 = object : Processable<Unit> { val p2 = object : Processable<Unit> {
override fun process() { override fun process() {
@@ -14,28 +14,38 @@
* HELPERS: checkType * HELPERS: checkType
*/ */
class A(val a: Int) {
var isCompared = false
operator fun compareTo(other: A): Int = run {
isCompared = true
this.a - other.a
}
}
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
fun case1() { fun case1() {
val a1 = A(-1) val a1 = A1(-1)
val a2 = A(-3) val a2 = A1(-3)
val x = a1 < a2 val x = a1 < a2
x checkType { check<Boolean>() } x checkType { check<Boolean>() }
} }
class A1(val a: Int) {
var isCompared = false
operator fun compareTo(other: A1): Int = run {
isCompared = true
this.a - other.a
}
}
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
class A2(val a: Int) {
var isCompared = false
operator fun compareTo(other: A2): Int = run {
isCompared = true
this.a - other.a
}
}
fun case2() { fun case2() {
val a1 = A(-1) val a1 = A2(-1)
val a2 = A(-3) val a2 = A2(-3)
val x = a1 > a2 val x = a1 > a2
@@ -44,20 +54,36 @@ fun case2() {
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
fun case3() { fun case3() {
val a1 = A(-1) val a1 = A3(-1)
val a2 = A(-3) val a2 = A3(-3)
val x = a1 <= a2 val x = a1 <= a2
x checkType { check<Boolean>() } x checkType { check<Boolean>() }
} }
class A3(val a: Int) {
var isCompared = false
operator fun compareTo(other: A3): Int = run {
isCompared = true
this.a - other.a
}
}
// TESTCASE NUMBER: 4 // TESTCASE NUMBER: 4
fun case4() { fun case4() {
val a1 = A(-1) val a1 = A4(-1)
val a2 = A(-3) val a2 = A4(-3)
val x = a1 >= a2 val x = a1 >= a2
x checkType { check<Boolean>() } x checkType { check<Boolean>() }
} }
class A4(val a: Int) {
var isCompared = false
operator fun compareTo(other: A4): Int = run {
isCompared = true
this.a - other.a
}
}
@@ -13,6 +13,8 @@
* HELPERS: checkType * HELPERS: checkType
*/ */
// FILE: TestCases.kt
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
fun case1() { fun case1() {
@@ -59,7 +61,12 @@ interface `true`{}
interface `false`{} interface `false`{}
// FILE: TestCase7.kt
// TESTCASE NUMBER: 7 // TESTCASE NUMBER: 7
package testPackCase7c
interface `true`{}
interface `false`{}
fun case7() { fun case7() {
class `true` : `false`{} class `true` : `false`{}
@@ -13,7 +13,6 @@
* DESCRIPTION: Value equality expressions always have type kotlin.Boolean as does the equals method in kotlin.Any * DESCRIPTION: Value equality expressions always have type kotlin.Boolean as does the equals method in kotlin.Any
* HELPERS: checkType * HELPERS: checkType
*/ */
data class A(val a: Boolean)
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
@@ -22,12 +21,16 @@ fun case1() {
x checkType { check<Boolean>() } x checkType { check<Boolean>() }
} }
data class A(val a: Boolean)
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
fun case2() { fun case2() {
val x = A(false) == A(false) val x = A1(false) == A1(false)
x checkType { check<Boolean>() } x checkType { check<Boolean>() }
} }
data class A1(val a: Boolean)
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
fun case3() { fun case3() {
val x = true == false val x = true == false
@@ -12,6 +12,8 @@
* DESCRIPTION: check he type of jump expressions is the kotlin.Nothing * DESCRIPTION: check he type of jump expressions is the kotlin.Nothing
*/ */
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
fun case1() { fun case1() {
@@ -27,14 +29,13 @@ fun case1() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>s<!> <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>s<!>
} }
} }
class Person(var name: String? = null) {} class Person(var name: String? = null) {}
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
fun case2() { fun case2() {
var name: Any? = null var name: Any? = null
val men = arrayListOf(Person("Phill"), Person(), Person("Bob")) val men = arrayListOf(Person2("Phill"), Person2(), Person2("Bob"))
for (k in men) { for (k in men) {
loop@ for (i in men) { loop@ for (i in men) {
val val1 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>continue@loop<!> val val1 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>continue@loop<!>
@@ -45,6 +46,8 @@ fun case2() {
} }
} }
class Person2(var name: String? = null) {}
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
fun case3() { fun case3() {
@@ -11,14 +11,7 @@
* NUMBER: 1 * NUMBER: 1
* DESCRIPTION: check unsafe prefix decrement expression call for an assignable expression * DESCRIPTION: check unsafe prefix decrement expression call for an assignable expression
*/ */
class A() {
var i = 0
operator fun dec(): A {
this.i--
return this
}
}
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
@@ -32,6 +25,15 @@ class Case1() {
var a: A = A() var a: A = A()
} }
class A() {
var i = 0
operator fun dec(): A {
this.i--
return this
}
}
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
fun case2() { fun case2() {
@@ -40,5 +42,14 @@ fun case2() {
} }
class Case2() { class Case2() {
val a = A() val a = A2()
}
class A2() {
var i = 0
operator fun dec(): A2 {
this.i--
return this
}
} }
@@ -11,6 +11,12 @@
* NUMBER: 1 * NUMBER: 1
* DESCRIPTION: check unsafe prefix increment expression call for an assignable expression * DESCRIPTION: check unsafe prefix increment expression call for an assignable expression
*/ */
// FILE: TestCase.kt
// TESTCASE NUMBER: 1
package testPackCase1
class A() { class A() {
var i = 0 var i = 0
@@ -20,8 +26,6 @@ class A() {
} }
} }
// TESTCASE NUMBER: 1
fun case1() { fun case1() {
var b: Case1? = Case1() var b: Case1? = Case1()
<!UNSAFE_CALL!>++<!>b?.a <!UNSAFE_CALL!>++<!>b?.a
@@ -32,7 +36,18 @@ class Case1() {
var a: A = A() var a: A = A()
} }
// FILE: TestCase.kt
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
package testPackCase2
class A() {
var i = 0
operator fun inc(): A {
this.i++
return this
}
}
fun case2() { fun case2() {
var b= Case2() var b= Case2()
@@ -11,15 +11,22 @@
* NUMBER: 1 * NUMBER: 1
* DESCRIPTION: The type of the try-expression is the least upper bound of the types of the last expressions of the try body and the last expressions of all the catch blocks * DESCRIPTION: The type of the try-expression is the least upper bound of the types of the last expressions of the try body and the last expressions of all the catch blocks
*/ */
// FILE: TestCase.kt
// TESTCASE NUMBER: 1
package testPackCase1
fun throwExceptionA(b: Boolean) = run { if (b) throw ExcA() } fun throwExceptionA(b: Boolean) = run { if (b) throw ExcA() }
class ExcA() : Exception()
class ExcB() : Exception()
open class A<T>(var data: T) { open class A<T>(var data: T) {
fun foo(d: A<T>) {} fun foo(d: A<T>) {}
} }
class B<T>(data: T) : A<T>(data) class B<T>(data: T) : A<T>(data)
// TESTCASE NUMBER: 1
fun case1() { fun case1() {
val tryVal: B<String> = val tryVal: B<String> =
@@ -29,11 +36,24 @@ fun case1() {
}<!> catch (e: Exception) { }<!> catch (e: Exception) {
B("") B("")
} }
} }
// FILE: TestCase.kt
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
package testPackCase2
fun throwExceptionA(b: Boolean) = run { if (b) throw ExcA() }
class ExcA() : Exception()
class ExcB() : Exception()
open class A<T>(var data: T) {
fun foo(d: A<T>) {}
}
class B<T>(data: T) : A<T>(data)
fun case2() { fun case2() {
val tryVal: A<String> = val tryVal: A<String> =
@@ -45,10 +65,20 @@ fun case2() {
}<!> }<!>
} }
/*
* TESTCASE NUMBER: 3 // FILE: TestCase.kt
* ISSUES: KT-35494 // TESTCASE NUMBER: 3
*/ // ISSUES: KT-35494
package testPackCase3
fun throwExceptionA(b: Boolean) = run { if (b) throw ExcA() }
open class A<T>(var data: T) {
fun foo(d: A<T>) {}
}
class B<T>(data: T) : A<T>(data)
fun case3() { fun case3() {
val tryVal: A<Int> = val tryVal: A<Int> =
try { try {
@@ -13,6 +13,13 @@
* HELPERS: checkType * HELPERS: checkType
*/ */
// FILE: TestCase.kt
// TESTCASE NUMBER: 1
package testPackCase1
import checkType
import check
class A(val a: Set<Any>) { class A(val a: Set<Any>) {
operator fun contains(other: Any?): Boolean = run { this.a.contains(other) } operator fun contains(other: Any?): Boolean = run { this.a.contains(other) }
@@ -27,7 +34,6 @@ class C() {
} }
} }
// TESTCASE NUMBER: 1
fun case1() { fun case1() {
val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza")) val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza"))
val c = C() val c = C()
@@ -35,14 +41,52 @@ fun case1() {
a checkType { check<Boolean>() } a checkType { check<Boolean>() }
} }
// FILE: TestCase.kt
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
package testPackCase2
import checkType
import check
class A(val a: Set<Any>) {
operator fun contains(other: Any?): Boolean = run { this.a.contains(other) }
fun throwException(b: Boolean): A { if (b) throw Exception() else return this }
}
class C() {
var isEvaluated: Boolean = false
fun foo(): C {
this.isEvaluated = true
return this
}
}
fun case2() { fun case2() {
val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza")) val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza"))
val a = (null in b) val a = (null in b)
a checkType { check<Boolean>() } a checkType { check<Boolean>() }
} }
// FILE: TestCase.kt
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
package testPackCase3
import checkType
import check
class A(val a: Set<Any>) {
operator fun contains(other: Any?): Boolean = run { this.a.contains(other) }
fun throwException(b: Boolean): A { if (b) throw Exception() else return this }
}
class C() {
var isEvaluated: Boolean = false
fun foo(): C {
this.isEvaluated = true
return this
}
}
fun case3() { fun case3() {
val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza")) val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza"))
val x = "" val x = ""
@@ -50,7 +94,26 @@ fun case3() {
a checkType { check<Boolean>() } a checkType { check<Boolean>() }
} }
// FILE: TestCase.kt
// TESTCASE NUMBER: 4 // TESTCASE NUMBER: 4
package testPackCase4
import checkType
import check
class A(val a: Set<Any>) {
operator fun contains(other: Any?): Boolean = run { this.a.contains(other) }
fun throwException(b: Boolean): A { if (b) throw Exception() else return this }
}
class C() {
var isEvaluated: Boolean = false
fun foo(): C {
this.isEvaluated = true
return this
}
}
fun case4(nothing: Nothing) { fun case4(nothing: Nothing) {
val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza")) val b = A(mutableSetOf(1, C(), 3, false, 2, "azaza"))
val a = (nothing in b) val a = (nothing in b)
@@ -15,6 +15,12 @@
*/ */
// TESTCASE NUMBER: 1
fun case1() {
var b = B(1)
b <!ASSIGN_OPERATOR_AMBIGUITY!>+=<!> 1
}
class B(var a: Int) { class B(var a: Int) {
operator fun plus(value: Int): B { operator fun plus(value: Int): B {
a= a + value a= a + value
@@ -24,9 +30,3 @@ class B(var a: Int) {
a= a + value a= a + value
} }
} }
// TESTCASE NUMBER: 1
fun case1() {
var b = B(1)
b <!ASSIGN_OPERATOR_AMBIGUITY!>+=<!> 1
}
@@ -15,6 +15,11 @@
* DESCRIPTION: An operator assignment A+=B * DESCRIPTION: An operator assignment A+=B
*/ */
// TESTCASE NUMBER: 1
fun case1() {
val b = B(1)
b += 1
}
class B(var a: Int) { class B(var a: Int) {
operator fun plus(value: Int): B { operator fun plus(value: Int): B {
@@ -25,9 +30,3 @@ class B(var a: Int) {
a= a + value a= a + value
} }
} }
// TESTCASE NUMBER: 1
fun case1() {
val b = B(1)
b += 1
}
@@ -16,14 +16,16 @@
*/ */
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
import checkSubtype
class NothingWrapper() { class NothingWrapper() {
val data: Nothing = TODO() val data: Nothing = TODO()
} }
class CustomClass() {} class CustomClass() {}
// TESTCASE NUMBER: 1
fun case1() { fun case1() {
val wrapper: NothingWrapper = NothingWrapper() val wrapper: NothingWrapper = NothingWrapper()
checkSubtype<Any>(wrapper.data) checkSubtype<Any>(wrapper.data)
@@ -39,7 +41,16 @@ fun case1() {
checkSubtype<CustomClass>(wrapper.data) checkSubtype<CustomClass>(wrapper.data)
} }
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
package testPackCase2
import checkSubtype
class NothingWrapper() {
val data: Nothing = TODO()
}
class CustomClass() {}
fun case2(wrapper: NothingWrapper) { fun case2(wrapper: NothingWrapper) {
checkSubtype<MutableList<out Nothing>>(wrapper.data) checkSubtype<MutableList<out Nothing>>(wrapper.data)
checkSubtype<MutableList<in String>>(wrapper.data) checkSubtype<MutableList<in String>>(wrapper.data)
@@ -48,5 +59,4 @@ fun case2(wrapper: NothingWrapper) {
checkSubtype<MutableList<Any?>>(wrapper.data) checkSubtype<MutableList<Any?>>(wrapper.data)
checkSubtype<String>(wrapper.data) checkSubtype<String>(wrapper.data)
} }