Alphabetical sort wrapped intersection types for rendered diagnostics
This commit is contained in:
+27
-27
@@ -1,5 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_SEALED_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,46 +7,47 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 6
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Checking for not exhaustive 'when' when not covered by all possible subtypes or 'when' does not have bound value.
|
||||
* HELPERS: sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedChild1 -> ""
|
||||
is _SealedChild2 -> ""
|
||||
fun case_1(value_1: SealedClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedChild1 -> ""
|
||||
is SealedChild2 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedChild1, is _SealedChild2 -> ""
|
||||
fun case_2(value_1: SealedClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedChild1, is SealedChild2 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
_SealedMixedChildObject1 -> ""
|
||||
fun case_3(value_1: SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
SealedMixedChildObject1 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_SealedMixedChildObject1, is _SealedMixedChild2, is _SealedMixedChild1 -> ""
|
||||
fun case_4(value_1: SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
SealedMixedChildObject1, is SealedMixedChild2, is SealedMixedChild1 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
fun case_5(value_1: SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: _SealedClassMixed): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
fun case_6(value_1: SealedClassMixed): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7(value_1: _SealedClassSingleWithObject): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
fun case_7(value_1: SealedClassSingleWithObject): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8(value_1: _SealedClassEmpty): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) { }
|
||||
fun case_8(value_1: SealedClassEmpty): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) { }
|
||||
|
||||
// TESTCASE NUMBER: 9
|
||||
fun case_9(value_1: Number): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) {
|
||||
@@ -68,15 +68,15 @@ fun case_10(value_1: Any): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 11
|
||||
fun case_11(value_1: _SealedClass): String = <!NO_ELSE_IN_WHEN!>when<!> {
|
||||
value_1 is _SealedChild1 -> ""
|
||||
value_1 is _SealedChild2 -> ""
|
||||
value_1 is _SealedChild3 -> ""
|
||||
fun case_11(value_1: SealedClass): String = <!NO_ELSE_IN_WHEN!>when<!> {
|
||||
value_1 is SealedChild1 -> ""
|
||||
value_1 is SealedChild2 -> ""
|
||||
value_1 is SealedChild3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 12
|
||||
fun case_12(value_1: _SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
fun case_12(value_1: SealedClassMixed): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
}
|
||||
|
||||
+17
-17
@@ -1,5 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_ENUM_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,43 +7,44 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 7
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Checking for not exhaustive when when not covered by all enumerated values.
|
||||
* HELPERS: enumClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
fun case_1(value_1: EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClass.EAST, _EnumClass.SOUTH, _EnumClass.NORTH -> ""
|
||||
fun case_2(value_1: EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClass.EAST, EnumClass.SOUTH, EnumClass.NORTH -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
fun case_3(value_1: EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
fun case_4(value_1: EnumClass): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _EnumClassSingle): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
fun case_5(value_1: EnumClassSingle): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) { }
|
||||
|
||||
/*
|
||||
* TESTCASE NUMBER: 6
|
||||
* DISCUSSION: maybe use const propagation here?
|
||||
* ISSUES: KT-25265
|
||||
*/
|
||||
fun case_6(value_1: _EnumClass): String {
|
||||
val west = _EnumClass.WEST
|
||||
fun case_6(value_1: EnumClass): String {
|
||||
val west = EnumClass.WEST
|
||||
|
||||
return <!NO_ELSE_IN_WHEN!>when<!> (value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
west -> ""
|
||||
}
|
||||
}
|
||||
@@ -54,4 +54,4 @@ fun case_6(value_1: _EnumClass): String {
|
||||
* DISCUSSION
|
||||
* ISSUES: KT-26044
|
||||
*/
|
||||
fun case_7(value_1: _EnumClassEmpty): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) { }
|
||||
fun case_7(value_1: EnumClassEmpty): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) { }
|
||||
|
||||
+30
-30
@@ -1,5 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_SEALED_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,59 +7,60 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 8
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: Checking for not exhaustive 'when' on the nullable sealed classes (and several checks for not sealed).
|
||||
* HELPERS: sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedChild1 -> ""
|
||||
is _SealedChild2 -> ""
|
||||
is _SealedChild3 -> ""
|
||||
fun case_1(value_1: SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedChild1 -> ""
|
||||
is SealedChild2 -> ""
|
||||
is SealedChild3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
_SealedMixedChildObject1 -> ""
|
||||
fun case_2(value_1: SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
SealedMixedChildObject1 -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
null, is _SealedMixedChild1, is _SealedMixedChild2, _SealedMixedChildObject1 -> ""
|
||||
fun case_3(value_1: SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
null, is SealedMixedChild1, is SealedMixedChild2, SealedMixedChildObject1 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
_SealedMixedChildObject1 -> ""
|
||||
_SealedMixedChildObject2 -> ""
|
||||
_SealedMixedChildObject3 -> ""
|
||||
fun case_4(value_1: SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
SealedMixedChildObject1 -> ""
|
||||
SealedMixedChildObject2 -> ""
|
||||
SealedMixedChildObject3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
fun case_5(value_1: SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: _SealedClassMixed?): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {}
|
||||
fun case_6(value_1: SealedClassMixed?): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7(value_1: _SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2-> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
fun case_7(value_1: SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2-> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8(value_1: _SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_SealedMixedChildObject1 -> ""
|
||||
fun case_8(value_1: SealedClassMixed?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
SealedMixedChildObject1 -> ""
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -77,4 +77,4 @@ fun case_9(value_1: Any?): String = <!NO_ELSE_IN_WHEN!>when<!> (value_1) {
|
||||
* DISCUSSION
|
||||
* ISSUES: KT-26044
|
||||
*/
|
||||
fun case_10(value: _SealedClassEmpty): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {}
|
||||
fun case_10(value: SealedClassEmpty): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {}
|
||||
|
||||
+16
-16
@@ -1,5 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_ENUM_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,38 +7,39 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 8
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: Checking for not exhaustive 'when' on the nullable enums.
|
||||
* HELPERS: enumClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
_EnumClass.WEST -> ""
|
||||
fun case_1(value_1: EnumClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
EnumClass.WEST -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
fun case_2(value_1: EnumClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _EnumClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClass.EAST, null, _EnumClass.SOUTH, _EnumClass.NORTH -> ""
|
||||
fun case_3(value_1: EnumClass?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClass.EAST, null, EnumClass.SOUTH, EnumClass.NORTH -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _EnumClassSingle): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {}
|
||||
fun case_4(value_1: EnumClassSingle): Int = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _EnumClassSingle?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
_EnumClassSingle.EVERYTHING -> ""
|
||||
fun case_5(value_1: EnumClassSingle?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
EnumClassSingle.EVERYTHING -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: _EnumClassSingle?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
fun case_6(value_1: EnumClassSingle?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
null -> ""
|
||||
}
|
||||
|
||||
+23
-24
@@ -1,5 +1,3 @@
|
||||
// !WITH_ENUM_CLASSES
|
||||
// !WITH_SEALED_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,23 +6,24 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 1
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: Check when exhaustive via else entry (when with bound value, redundant else).
|
||||
* HELPERS: enumClasses, sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass): String = when (value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.WEST -> ""
|
||||
fun case_1(value_1: EnumClass): String = when (value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.WEST -> ""
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClass?): String = when (value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.WEST -> ""
|
||||
fun case_2(value_1: EnumClass?): String = when (value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.WEST -> ""
|
||||
null -> ""
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
@@ -45,31 +44,31 @@ fun case_4(value_1: Boolean?): String = when (value_1) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClass): String = when (value_1) {
|
||||
is _SealedChild1 -> ""
|
||||
is _SealedChild2 -> ""
|
||||
is _SealedChild3 -> ""
|
||||
fun case_5(value_1: SealedClass): String = when (value_1) {
|
||||
is SealedChild1 -> ""
|
||||
is SealedChild2 -> ""
|
||||
is SealedChild3 -> ""
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: _SealedClass?): String = when (value_1) {
|
||||
is _SealedChild1 -> ""
|
||||
is _SealedChild2 -> ""
|
||||
is _SealedChild3 -> ""
|
||||
fun case_6(value_1: SealedClass?): String = when (value_1) {
|
||||
is SealedChild1 -> ""
|
||||
is SealedChild2 -> ""
|
||||
is SealedChild3 -> ""
|
||||
null -> ""
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7(value_1: _SealedClassSingle): String = when (value_1) {
|
||||
<!USELESS_IS_CHECK!>is _SealedClassSingle<!> -> ""
|
||||
fun case_7(value_1: SealedClassSingle): String = when (value_1) {
|
||||
<!USELESS_IS_CHECK!>is SealedClassSingle<!> -> ""
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8(value_1: _SealedClassSingle?): String = when (value_1) {
|
||||
is _SealedClassSingle -> ""
|
||||
fun case_8(value_1: SealedClassSingle?): String = when (value_1) {
|
||||
is SealedClassSingle -> ""
|
||||
null -> ""
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
+35
-35
@@ -1,5 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_SEALED_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,59 +7,60 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 6
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Check when exhaustive when possible subtypes of the sealed class are covered.
|
||||
* HELPERS: sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass): Int = when (value_1) {
|
||||
is _SealedChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.number
|
||||
is _SealedChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.e1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.e2
|
||||
is _SealedChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2
|
||||
fun case_1(value_1: SealedClass): Int = when (value_1) {
|
||||
is SealedChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.number
|
||||
is SealedChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.e1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.e2
|
||||
is SealedChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClass): String = when (value_1) {
|
||||
<!USELESS_IS_CHECK!>is _SealedClass<!> -> ""
|
||||
fun case_2(value_1: SealedClass): String = when (value_1) {
|
||||
<!USELESS_IS_CHECK!>is SealedClass<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClassWithMethods): String = when (value_1) {
|
||||
is _SealedWithMethodsChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1()
|
||||
is _SealedWithMethodsChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2()
|
||||
is _SealedWithMethodsChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m3()
|
||||
fun case_3(value_1: SealedClassWithMethods): String = when (value_1) {
|
||||
is SealedWithMethodsChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1()
|
||||
is SealedWithMethodsChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2()
|
||||
is SealedWithMethodsChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m3()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClassWithObjects): String = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> ""
|
||||
_SealedWithObjectsChild2 -> ""
|
||||
_SealedWithObjectsChild3 -> ""
|
||||
fun case_4(value_1: SealedClassWithObjects): String = when (value_1) {
|
||||
SealedWithObjectsChild1 -> ""
|
||||
SealedWithObjectsChild2 -> ""
|
||||
SealedWithObjectsChild3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClassMixed): String = when (value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
_SealedMixedChildObject1 -> ""
|
||||
_SealedMixedChildObject2 -> ""
|
||||
_SealedMixedChildObject3 -> ""
|
||||
fun case_5(value_1: SealedClassMixed): String = when (value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
SealedMixedChildObject1 -> ""
|
||||
SealedMixedChildObject2 -> ""
|
||||
SealedMixedChildObject3 -> ""
|
||||
}
|
||||
|
||||
/*
|
||||
* TESTCASE NUMBER: 6
|
||||
* DISCUSSION: is it correct that objects can be checked using the type checking operator?
|
||||
*/
|
||||
fun case_6(value_1: _SealedClassMixed): String = when (value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
is _SealedMixedChildObject1 -> ""
|
||||
is _SealedMixedChildObject2 -> ""
|
||||
is _SealedMixedChildObject3 -> ""
|
||||
fun case_6(value_1: SealedClassMixed): String = when (value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
is SealedMixedChildObject1 -> ""
|
||||
is SealedMixedChildObject2 -> ""
|
||||
is SealedMixedChildObject3 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7(value_1: _SealedClassEmpty): String = when (value_1) {
|
||||
fun case_7(value_1: SealedClassEmpty): String = when (value_1) {
|
||||
else -> ""
|
||||
}
|
||||
|
||||
@@ -69,8 +69,8 @@ fun case_7(value_1: _SealedClassEmpty): String = when (value_1) {
|
||||
* UNEXPECTED BEHAVIOUR: must be exhaustive
|
||||
* ISSUES: KT-22996
|
||||
*/
|
||||
fun case_8(value: _SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
is _SealedChild1, !is _SealedChild3?, <!USELESS_IS_CHECK!>is _SealedChild3?<!> -> ""
|
||||
fun case_8(value: SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
is SealedChild1, !is SealedChild3?, <!USELESS_IS_CHECK!>is SealedChild3?<!> -> ""
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -78,7 +78,7 @@ fun case_8(value: _SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
* UNEXPECTED BEHAVIOUR: must be exhaustive
|
||||
* ISSUES: KT-22996
|
||||
*/
|
||||
fun case_9(value: _SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
is _SealedChild1, !is _SealedChild3 -> ""
|
||||
<!USELESS_IS_CHECK!>is _SealedChild3?<!> -> ""
|
||||
fun case_9(value: SealedClass?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
is SealedChild1, !is SealedChild3 -> ""
|
||||
<!USELESS_IS_CHECK!>is SealedChild3?<!> -> ""
|
||||
}
|
||||
|
||||
+8
-8
@@ -1,4 +1,3 @@
|
||||
// !WITH_ENUM_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -7,17 +6,18 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 7
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Check when exhaustive when all enumerated values are checked.
|
||||
* HELPERS: enumClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(dir: _EnumClass): String = when (dir) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.WEST -> ""
|
||||
fun case_1(dir: EnumClass): String = when (dir) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.WEST -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClassSingle): String = when (value_1) {
|
||||
_EnumClassSingle.EVERYTHING -> ""
|
||||
fun case_2(value_1: EnumClassSingle): String = when (value_1) {
|
||||
EnumClassSingle.EVERYTHING -> ""
|
||||
}
|
||||
|
||||
+9
-9
@@ -1,4 +1,3 @@
|
||||
// !WITH_ENUM_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -7,20 +6,21 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 8
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: Check when exhaustive when enumerated values are checked and contains a null check.
|
||||
* HELPERS: enumClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass?): String = when (value_1) {
|
||||
_EnumClass.EAST -> ""
|
||||
_EnumClass.NORTH -> ""
|
||||
_EnumClass.SOUTH -> ""
|
||||
_EnumClass.WEST -> ""
|
||||
fun case_1(value_1: EnumClass?): String = when (value_1) {
|
||||
EnumClass.EAST -> ""
|
||||
EnumClass.NORTH -> ""
|
||||
EnumClass.SOUTH -> ""
|
||||
EnumClass.WEST -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClassSingle?): String = when (value_1) {
|
||||
_EnumClassSingle.EVERYTHING -> ""
|
||||
fun case_2(value_1: EnumClassSingle?): String = when (value_1) {
|
||||
EnumClassSingle.EVERYTHING -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
@@ -29,6 +29,6 @@ fun case_2(value_1: _EnumClassSingle?): String = when (value_1) {
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-26044
|
||||
*/
|
||||
fun case_3(value_1: _EnumClassEmpty?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
fun case_3(value_1: EnumClassEmpty?): String = <!NO_ELSE_IN_WHEN!>when<!>(value_1) {
|
||||
null -> ""
|
||||
}
|
||||
|
||||
+30
-30
@@ -1,4 +1,3 @@
|
||||
// !WITH_SEALED_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -7,46 +6,47 @@
|
||||
* PLACE: when-expression -> paragraph 11 -> sentence 8
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: Check when exhaustive when possible subtypes of the sealed class are covered and contains a null check.
|
||||
* HELPERS: sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass?): Int = when (value_1) {
|
||||
is _SealedChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.number
|
||||
is _SealedChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.e1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.e2
|
||||
is _SealedChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2
|
||||
fun case_1(value_1: SealedClass?): Int = when (value_1) {
|
||||
is SealedChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.number
|
||||
is SealedChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.e1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.e2
|
||||
is SealedChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1 + <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2
|
||||
null -> 0
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClass?): String = when (value_1) {
|
||||
is _SealedClass -> ""
|
||||
fun case_2(value_1: SealedClass?): String = when (value_1) {
|
||||
is SealedClass -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClassWithMethods?): String = when (value_1) {
|
||||
is _SealedWithMethodsChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1()
|
||||
is _SealedWithMethodsChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2()
|
||||
is _SealedWithMethodsChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m3()
|
||||
fun case_3(value_1: SealedClassWithMethods?): String = when (value_1) {
|
||||
is SealedWithMethodsChild1 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m1()
|
||||
is SealedWithMethodsChild2 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m2()
|
||||
is SealedWithMethodsChild3 -> <!DEBUG_INFO_SMARTCAST!>value_1<!>.m3()
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClassWithObjects?): String = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> ""
|
||||
_SealedWithObjectsChild2 -> ""
|
||||
_SealedWithObjectsChild3 -> ""
|
||||
fun case_4(value_1: SealedClassWithObjects?): String = when (value_1) {
|
||||
SealedWithObjectsChild1 -> ""
|
||||
SealedWithObjectsChild2 -> ""
|
||||
SealedWithObjectsChild3 -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClassMixed?): String = when (value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
_SealedMixedChildObject1 -> ""
|
||||
_SealedMixedChildObject2 -> ""
|
||||
_SealedMixedChildObject3 -> ""
|
||||
fun case_5(value_1: SealedClassMixed?): String = when (value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
SealedMixedChildObject1 -> ""
|
||||
SealedMixedChildObject2 -> ""
|
||||
SealedMixedChildObject3 -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
@@ -54,13 +54,13 @@ fun case_5(value_1: _SealedClassMixed?): String = when (value_1) {
|
||||
* TESTCASE NUMBER: 6
|
||||
* DISCUSSION: is it correct that objects can be checked using the type checking operator?
|
||||
*/
|
||||
fun case_6(value_1: _SealedClassMixed?): String = when (value_1) {
|
||||
is _SealedMixedChild1 -> ""
|
||||
is _SealedMixedChild2 -> ""
|
||||
is _SealedMixedChild3 -> ""
|
||||
is _SealedMixedChildObject1 -> ""
|
||||
is _SealedMixedChildObject2 -> ""
|
||||
is _SealedMixedChildObject3 -> ""
|
||||
fun case_6(value_1: SealedClassMixed?): String = when (value_1) {
|
||||
is SealedMixedChild1 -> ""
|
||||
is SealedMixedChild2 -> ""
|
||||
is SealedMixedChild3 -> ""
|
||||
is SealedMixedChildObject1 -> ""
|
||||
is SealedMixedChildObject2 -> ""
|
||||
is SealedMixedChildObject3 -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
@@ -69,6 +69,6 @@ fun case_6(value_1: _SealedClassMixed?): String = when (value_1) {
|
||||
* UNEXPECTED BEHAVIOUR: must be exhaustive
|
||||
* ISSUES: KT-26044
|
||||
*/
|
||||
fun case_7(value: _SealedClassEmpty?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
fun case_7(value: SealedClassEmpty?): String = <!NO_ELSE_IN_WHEN!>when<!> (value) {
|
||||
null -> ""
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,4 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -7,10 +6,11 @@
|
||||
* PLACE: when-expression -> paragraph 3 -> sentence 2
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' without bound value and with not boolean condition in 'when condition'.
|
||||
* HELPERS: typesProvider
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int, value_2: String, value_3: _BasicTypesProvider): String {
|
||||
fun case_1(value_1: Int, value_2: String, value_3: TypesProvider): String {
|
||||
when {
|
||||
<!TYPE_MISMATCH!>.012f / value_1<!> -> return ""
|
||||
<!TYPE_MISMATCH!>"$value_2..."<!> -> return ""
|
||||
|
||||
+3
-3
@@ -1,4 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -7,14 +6,15 @@
|
||||
* PLACE: when-expression -> paragraph 3 -> sentence 2
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' without bound value and not allowed comma in when entry.
|
||||
* HELPERS: typesProvider, classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _BasicTypesProvider) {
|
||||
fun case_1(value_1: TypesProvider) {
|
||||
when {
|
||||
getBoolean()<!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> value_1.getBoolean() -> return
|
||||
value_1.getBoolean() && getBoolean()<!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> getLong() == 1000L -> return
|
||||
<!TYPE_MISMATCH!>value_1.getList()<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> <!TYPE_MISMATCH!>getLong()<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> <!TYPE_MISMATCH!>{}<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> <!TYPE_MISMATCH!>Any()<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> throw Exception() -> return
|
||||
<!TYPE_MISMATCH!>Out<Int>()<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> <!TYPE_MISMATCH!>getLong()<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> <!TYPE_MISMATCH!>{}<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> <!TYPE_MISMATCH!>Any()<!><!COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT!>,<!> throw Exception() -> return
|
||||
}
|
||||
|
||||
<!UNREACHABLE_CODE!>return<!>
|
||||
|
||||
+10
-12
@@ -1,7 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -DEBUG_INFO_SMARTCAST
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_CLASSES
|
||||
// !WITH_FUNCTIONS
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -10,6 +7,7 @@
|
||||
* PLACE: when-expression -> paragraph 3 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' without bound value and with different variants of expressions in the control structure body.
|
||||
* HELPERS: typesProvider, classes, functions
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -25,11 +23,11 @@ fun case_1(value_1: Int) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int, value_2: Byte, value_3: _BasicTypesProvider) {
|
||||
fun case_2(value_1: Int, value_2: Byte, value_3: TypesProvider) {
|
||||
when {
|
||||
value_1 == 1 -> -.09 % 10L
|
||||
value_1 == 3 -> value_2 / -5
|
||||
value_1 == 2 -> value_3.getChar(99) - 11 + 90
|
||||
value_1 == 2 -> value_3.getChar() - 11 + 90
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,8 +37,8 @@ fun case_3(value_1: Int, value_2: Boolean, value_3: Long) {
|
||||
value_1 == 1 -> value_2
|
||||
value_1 == 2 -> !value_2
|
||||
value_1 == 3 -> getBoolean() && value_2
|
||||
value_1 == 5 -> getChar(10) != 'a'
|
||||
value_1 == 6 -> getList() === getAny()
|
||||
value_1 == 5 -> getChar() != 'a'
|
||||
value_1 == 6 -> Out<Int>() === getAny()
|
||||
value_1 == 7 -> value_3 <= 11
|
||||
}
|
||||
}
|
||||
@@ -145,8 +143,8 @@ fun case_11(value_1: Int) {
|
||||
// TESTCASE NUMBER: 12
|
||||
fun case_12(value_1: Int, value_2: Collection<Int>, value_3: Collection<Int>?) {
|
||||
when {
|
||||
value_1 == 1 -> value_2 as MutableList<Int>
|
||||
value_1 == 2 -> value_2 as? MutableList<Int>
|
||||
value_1 == 1 -> value_2 as List<Int>
|
||||
value_1 == 2 -> value_2 as? List<Int>
|
||||
value_1 == 3 -> value_3 <!UNCHECKED_CAST!>as? MutableMap<Int, Int><!>
|
||||
value_1 == 4 -> (value_2 <!UNCHECKED_CAST!>as? Map<Int, Int><!>) as MutableMap<Int, Int>
|
||||
}
|
||||
@@ -185,11 +183,11 @@ fun case_15(value_1: Int, value_2: List<Int>, value_3: List<List<List<List<Int>>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 16
|
||||
fun case_16(value_1: Int, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
fun case_16(value_1: Int, value_2: Class, value_3: Class?, value_4: Int) {
|
||||
fun __fun_1(): () -> Unit { return fun() { } }
|
||||
|
||||
when {
|
||||
value_1 == 1 -> _funWithoutArgs()
|
||||
value_1 == 1 -> funWithoutArgs()
|
||||
value_1 == 2 -> __fun_1()()
|
||||
value_1 == 3 -> value_2.fun_2(value_4)
|
||||
value_1 == 4 -> value_3?.fun_2(value_4)
|
||||
@@ -198,7 +196,7 @@ fun case_16(value_1: Int, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 17
|
||||
fun case_17(value_1: Int, value_2: _Class, value_3: _Class?) {
|
||||
fun case_17(value_1: Int, value_2: Class, value_3: Class?) {
|
||||
when {
|
||||
value_1 == 1 -> value_2.prop_1
|
||||
value_1 == 2 -> value_3?.prop_1
|
||||
|
||||
+12
-14
@@ -1,6 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_SEALED_CLASSES
|
||||
// !WITH_ENUM_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 3 -> sentence 2
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' without bound value and different variants of the boolean conditions (logical, equality, comparison, type checking operator, containment operator).
|
||||
* HELPERS: typesProvider, enumClasses, sealedClasses, classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -16,8 +14,8 @@ fun case_1(value_1: Boolean, value_2: Long): Int {
|
||||
return when {
|
||||
value_1 -> 1
|
||||
getBoolean() && value_1 -> 2
|
||||
getChar(10) != 'a' -> 3
|
||||
getList() === getAny() -> 4
|
||||
getChar() != 'a' -> 3
|
||||
Out<Int>() === getAny() -> 4
|
||||
value_2 <= 11 -> 5
|
||||
!value_1 -> 6
|
||||
else -> 7
|
||||
@@ -28,12 +26,12 @@ fun case_1(value_1: Boolean, value_2: Long): Int {
|
||||
* TESTCASE NUMBER: 2
|
||||
* NOTE: for a potential analysys of exhaustiveness by enums in whens without a bound value.
|
||||
*/
|
||||
fun case_2(value_1: _EnumClass) {
|
||||
fun case_2(value_1: EnumClass) {
|
||||
when {
|
||||
value_1 == _EnumClass.NORTH -> {}
|
||||
value_1 == _EnumClass.SOUTH -> {}
|
||||
value_1 == _EnumClass.WEST -> {}
|
||||
value_1 == _EnumClass.EAST -> {}
|
||||
value_1 == EnumClass.NORTH -> {}
|
||||
value_1 == EnumClass.SOUTH -> {}
|
||||
value_1 == EnumClass.WEST -> {}
|
||||
value_1 == EnumClass.EAST -> {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,11 +103,11 @@ fun case_7(value_1: Any) {
|
||||
* TESTCASE NUMBER: 8
|
||||
* NOTE: for a potential analysys of exhaustiveness by enums in whens without a bound value.
|
||||
*/
|
||||
fun case_8(value_1: _SealedClass) {
|
||||
fun case_8(value_1: SealedClass) {
|
||||
when {
|
||||
value_1 is _SealedChild1 -> {}
|
||||
value_1 is _SealedChild2 -> {}
|
||||
value_1 is _SealedChild3 -> {}
|
||||
value_1 is SealedChild1 -> {}
|
||||
value_1 is SealedChild2 -> {}
|
||||
value_1 is SealedChild3 -> {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -1,4 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,10 +8,11 @@
|
||||
* DESCRIPTION: 'When' without bound value and with Nothing in condition (subtype of Boolean).
|
||||
* DISCUSSION
|
||||
* ISSUES: KT-25948
|
||||
* HELPERS: typesProvider
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider) {
|
||||
fun case_1(<!UNUSED_PARAMETER!>value_1<!>: TypesProvider) {
|
||||
when {
|
||||
return -> <!UNREACHABLE_CODE!>return<!>
|
||||
<!UNREACHABLE_CODE!>return == return -> return<!>
|
||||
@@ -23,7 +23,7 @@ fun case_1(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider) {
|
||||
fun case_2(<!UNUSED_PARAMETER!>value_1<!>: TypesProvider) {
|
||||
when {
|
||||
throw Exception() -> <!UNREACHABLE_CODE!>return<!>
|
||||
<!UNREACHABLE_CODE!>(throw Exception()) == (throw Exception()) -> return<!>
|
||||
@@ -34,7 +34,7 @@ fun case_2(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider) {
|
||||
fun case_3(<!UNUSED_PARAMETER!>value_1<!>: TypesProvider) {
|
||||
loop1@ while (true) {
|
||||
loop2@ while (true) {
|
||||
loop3@ while (true) {
|
||||
@@ -49,7 +49,7 @@ fun case_3(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider): String {
|
||||
fun case_4(<!UNUSED_PARAMETER!>value_1<!>: TypesProvider): String {
|
||||
loop1@ while (true) {
|
||||
loop2@ while (true) {
|
||||
loop3@ while (true) {
|
||||
@@ -64,7 +64,7 @@ fun case_4(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: Nothing, <!UNUSED_PARAMETER!>value_2<!>: _BasicTypesProvider): String {
|
||||
fun case_6(value_1: Nothing, <!UNUSED_PARAMETER!>value_2<!>: TypesProvider): String {
|
||||
when {
|
||||
value_1 -> <!UNREACHABLE_CODE!>return ""<!>
|
||||
<!UNREACHABLE_CODE!>value_2.getNothing() -> return ""<!>
|
||||
@@ -76,7 +76,7 @@ fun case_6(value_1: Nothing, <!UNUSED_PARAMETER!>value_2<!>: _BasicTypesProvider
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(<!UNUSED_PARAMETER!>value_1<!>: _BasicTypesProvider, <!UNUSED_PARAMETER!>value_2<!>: Nothing) {
|
||||
fun case_5(<!UNUSED_PARAMETER!>value_1<!>: TypesProvider, <!UNUSED_PARAMETER!>value_2<!>: Nothing) {
|
||||
loop1@ while (true) {
|
||||
loop2@ while (true) {
|
||||
loop3@ while (true) {
|
||||
|
||||
+9
-11
@@ -1,7 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_FUNCTIONS
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -10,6 +7,7 @@
|
||||
* PLACE: when-expression -> paragraph 6 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' with bound value and with different variants of expressions in the control structure body.
|
||||
* HELPERS: typesProvider, classes, functions
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -25,11 +23,11 @@ fun case_1(value_1: Int) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int, value_2: Byte, value_3: _BasicTypesProvider) {
|
||||
fun case_2(value_1: Int, value_2: Byte, value_3: TypesProvider) {
|
||||
when (value_1) {
|
||||
1 -> -.09 % 10L
|
||||
3 -> value_2 / -5
|
||||
2 -> value_3.getChar(99) - 11 + 90
|
||||
2 -> value_3.getChar() - 11 + 90
|
||||
4 -> 100
|
||||
}
|
||||
}
|
||||
@@ -40,7 +38,7 @@ fun case_3(value_1: Int, value_2: Boolean, value_3: Long) {
|
||||
1 -> value_2
|
||||
2 -> !value_2
|
||||
3 -> getBoolean() && value_2
|
||||
5 -> getChar(10) != 'a'
|
||||
5 -> getChar() != 'a'
|
||||
6 -> getList() === getAny()
|
||||
7 -> value_3 <= 11
|
||||
}
|
||||
@@ -148,8 +146,8 @@ fun case_11(value_1: Int) {
|
||||
// TESTCASE NUMBER: 12
|
||||
fun case_12(value_1: Int, value_2: Collection<Int>, value_3: Collection<Int>?) {
|
||||
when (value_1) {
|
||||
1 -> value_2 as MutableList<Int>
|
||||
2 -> value_2 as? MutableList<Int>
|
||||
1 -> value_2 as List<Int>
|
||||
2 -> value_2 as? List<Int>
|
||||
3 -> value_3 <!UNCHECKED_CAST!>as? MutableMap<Int, Int><!>
|
||||
4 -> (value_2 <!UNCHECKED_CAST!>as? Map<Int, Int><!>) as MutableMap<Int, Int>
|
||||
}
|
||||
@@ -188,11 +186,11 @@ fun case_15(value_1: Int, value_2: List<Int>, value_3: List<List<List<List<Int>>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 16
|
||||
fun case_16(value_1: Int, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
fun case_16(value_1: Int, value_2: Class, value_3: Class?, value_4: Int) {
|
||||
fun __fun_1(): () -> Unit { return fun() { } }
|
||||
|
||||
when (value_1) {
|
||||
1 -> _funWithoutArgs()
|
||||
1 -> funWithoutArgs()
|
||||
2 -> __fun_1()()
|
||||
3 -> value_2.fun_2(value_4)
|
||||
4 -> value_3?.fun_2(value_4)
|
||||
@@ -201,7 +199,7 @@ fun case_16(value_1: Int, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 17
|
||||
fun case_17(value_1: Int, value_2: _Class, value_3: _Class?) {
|
||||
fun case_17(value_1: Int, value_2: Class, value_3: Class?) {
|
||||
when (value_1) {
|
||||
1 -> value_2.prop_1
|
||||
2 -> value_3?.prop_1
|
||||
|
||||
+2
-2
@@ -1,4 +1,3 @@
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -7,12 +6,13 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' with bound value and type test condition (without companion object in classes), but without type checking operator.
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Any): String {
|
||||
when (value_1) {
|
||||
<!NO_COMPANION_OBJECT!>_EmptyClass<!> -> return ""
|
||||
<!NO_COMPANION_OBJECT!>EmptyClass<!> -> return ""
|
||||
}
|
||||
|
||||
return ""
|
||||
|
||||
+1
-1
@@ -1,4 +1,3 @@
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -7,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 1
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' with bound value and type test condition on the non-type operand of the type checking operator.
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
|
||||
+2
-2
@@ -1,4 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -7,10 +6,11 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 3
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' with bound value and 'when condition' with range expression, but without containment checking operator.
|
||||
* HELPERS: typesProvider
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int, value_2: _BasicTypesProvider): String {
|
||||
fun case_1(value_1: Int, value_2: TypesProvider): String {
|
||||
when (value_1) {
|
||||
<!INCOMPATIBLE_TYPES!>-1000L..100<!> -> return ""
|
||||
<!INCOMPATIBLE_TYPES!>value_2.getInt()..getLong()<!> -> return ""
|
||||
|
||||
+2
-2
@@ -1,5 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,10 +7,11 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 3
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' with bound value and 'when condition' with contains operator and type without defined contains operator.
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int, value_2: _EmptyClass, value_3: Int, value_4: Any): String {
|
||||
fun case_1(value_1: Int, value_2: EmptyClass, value_3: Int, value_4: Any): String {
|
||||
when (value_1) {
|
||||
<!TYPE_MISMATCH_IN_RANGE, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>in<!> value_2 -> return ""
|
||||
<!TYPE_MISMATCH_IN_RANGE, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>in<!> value_3 -> return ""
|
||||
|
||||
+3
-4
@@ -1,5 +1,3 @@
|
||||
// !WITH_CLASSES
|
||||
// !WITH_OBJECTS
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' with bound value and type test condition.
|
||||
* HELPERS: classes, objects
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -61,8 +60,8 @@ fun case_5(value_1: Any?): String = when (value_1) {
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: Any): String {
|
||||
when (value_1) {
|
||||
is _EmptyObject -> return ""
|
||||
is _ClassWithCompanionObject.Companion -> return ""
|
||||
is EmptyObject -> return ""
|
||||
is ClassWithCompanionObject.Companion -> return ""
|
||||
}
|
||||
|
||||
return ""
|
||||
|
||||
+16
-18
@@ -1,6 +1,3 @@
|
||||
// !WITH_SEALED_CLASSES
|
||||
// !WITH_CLASSES
|
||||
// !WITH_OBJECTS
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,13 +6,14 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 1
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' with bound value and type test condition (invert type checking operator).
|
||||
* HELPERS: classes, sealedClasses, objects
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass) = when (value_1) {
|
||||
!is _SealedChild1 -> {}
|
||||
!is _SealedChild2 -> {}
|
||||
!is _SealedChild3 -> {}
|
||||
fun case_1(value_1: SealedClass) = when (value_1) {
|
||||
!is SealedChild1 -> {}
|
||||
!is SealedChild2 -> {}
|
||||
!is SealedChild3 -> {}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -23,16 +21,16 @@ fun case_1(value_1: _SealedClass) = when (value_1) {
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-22996
|
||||
*/
|
||||
fun case_2(value_1: _SealedClass?): String = when (value_1) {
|
||||
!is _SealedChild2 -> "" // including null
|
||||
<!USELESS_IS_CHECK!>is _SealedChild2<!> -> ""
|
||||
fun case_2(value_1: SealedClass?): String = when (value_1) {
|
||||
!is SealedChild2 -> "" // including null
|
||||
<!USELESS_IS_CHECK!>is SealedChild2<!> -> ""
|
||||
null -> "" // redundant
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClass?): String = when (value_1) {
|
||||
!is _SealedChild2? -> "" // null isn't included
|
||||
is _SealedChild2 -> ""
|
||||
fun case_3(value_1: SealedClass?): String = when (value_1) {
|
||||
!is SealedChild2? -> "" // null isn't included
|
||||
is SealedChild2 -> ""
|
||||
null -> ""
|
||||
}
|
||||
|
||||
@@ -41,18 +39,18 @@ fun case_3(value_1: _SealedClass?): String = when (value_1) {
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-22996
|
||||
*/
|
||||
fun case_4(value_1: _SealedClass?) {
|
||||
fun case_4(value_1: SealedClass?) {
|
||||
when (value_1) {
|
||||
!is _SealedChild2 -> {} // including null
|
||||
<!USELESS_IS_CHECK!>is _SealedChild2?<!> -> {} // redundant nullable type check
|
||||
!is SealedChild2 -> {} // including null
|
||||
<!USELESS_IS_CHECK!>is SealedChild2?<!> -> {} // redundant nullable type check
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: Any): String {
|
||||
when (value_1) {
|
||||
is _EmptyObject -> return ""
|
||||
!is _ClassWithCompanionObject.Companion -> return ""
|
||||
is EmptyObject -> return ""
|
||||
!is ClassWithCompanionObject.Companion -> return ""
|
||||
}
|
||||
|
||||
return ""
|
||||
|
||||
+7
-9
@@ -1,6 +1,3 @@
|
||||
// !WITH_CLASSES
|
||||
// !WITH_SEALED_CLASSES
|
||||
// !WITH_OBJECTS
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 1
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: 'When' with bound value and enumaration of type test conditions.
|
||||
* HELPERS: classes, sealedClasses, objects
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -21,8 +19,8 @@ fun case_1(value_1: Any) = when (value_1) {
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Any?) = when (value_1) {
|
||||
is Float, is Char, is _SealedClass? -> "" // if value is null then this branch will be executed
|
||||
is Double, is Boolean, is _ClassWithCompanionObject.Companion -> ""
|
||||
is Float, is Char, is SealedClass? -> "" // if value is null then this branch will be executed
|
||||
is Double, is Boolean, is ClassWithCompanionObject.Companion -> ""
|
||||
else -> ""
|
||||
}
|
||||
|
||||
@@ -33,7 +31,7 @@ fun case_2(value_1: Any?) = when (value_1) {
|
||||
*/
|
||||
fun case_3(value_1: Any?) = when (value_1) {
|
||||
is Float, is Char, is Int? -> "" // if value is null then this branch will be executed
|
||||
is _SealedChild2, is Boolean?, is String -> "" // redundant nullable type check
|
||||
is SealedChild2, is Boolean?, is String -> "" // redundant nullable type check
|
||||
else -> ""
|
||||
}
|
||||
|
||||
@@ -44,7 +42,7 @@ fun case_3(value_1: Any?) = when (value_1) {
|
||||
*/
|
||||
fun case_4(value_1: Any?) = when (value_1) {
|
||||
is Float, is Char?, is Int? -> "" // double nullable type check in the one branch
|
||||
is _SealedChild1, is Boolean, is String -> ""
|
||||
is SealedChild1, is Boolean, is String -> ""
|
||||
else -> ""
|
||||
}
|
||||
|
||||
@@ -56,7 +54,7 @@ fun case_4(value_1: Any?) = when (value_1) {
|
||||
fun case_5(value_1: Any?): String {
|
||||
when (value_1) {
|
||||
is Float, is Char?, is Int -> return ""
|
||||
is Double, is _EmptyObject, is String -> return ""
|
||||
is Double, is EmptyObject, is String -> return ""
|
||||
null -> return "" // null-check redundant
|
||||
else -> return ""
|
||||
}
|
||||
@@ -70,7 +68,7 @@ fun case_5(value_1: Any?): String {
|
||||
fun case_6(value_1: Any?): String {
|
||||
when (value_1) {
|
||||
is Float, is Char?, null, is Int -> return "" // double nullable type check in the one branch
|
||||
is Double, is _EmptyObject, is String -> return ""
|
||||
is Double, is EmptyObject, is String -> return ""
|
||||
else -> return ""
|
||||
}
|
||||
}
|
||||
|
||||
+14
-14
@@ -1,4 +1,3 @@
|
||||
// !WITH_SEALED_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -7,32 +6,33 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 1
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: 'When' with bound value and enumaration of type test conditions (with invert type checking operator).
|
||||
* HELPERS: sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass): String = when (value_1) {
|
||||
is _SealedChild1, !is _SealedChild3 -> ""
|
||||
<!USELESS_IS_CHECK!>is _SealedChild3<!> -> ""
|
||||
fun case_1(value_1: SealedClass): String = when (value_1) {
|
||||
is SealedChild1, !is SealedChild3 -> ""
|
||||
<!USELESS_IS_CHECK!>is SealedChild3<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClass) = when (value_1) {
|
||||
!is _SealedChild1, !is _SealedChild2, !is _SealedChild3 -> {}
|
||||
fun case_2(value_1: SealedClass) = when (value_1) {
|
||||
!is SealedChild1, !is SealedChild2, !is SealedChild3 -> {}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClass): String = when (value_1) {
|
||||
is _SealedChild2, !is _SealedChild2 -> ""
|
||||
fun case_3(value_1: SealedClass): String = when (value_1) {
|
||||
is SealedChild2, !is SealedChild2 -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClass): String = when (value_1) {
|
||||
!is _SealedChild1, <!USELESS_IS_CHECK!>is _SealedChild1<!> -> ""
|
||||
fun case_4(value_1: SealedClass): String = when (value_1) {
|
||||
!is SealedChild1, <!USELESS_IS_CHECK!>is SealedChild1<!> -> ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: Any?): String = when (value_1) {
|
||||
is _SealedChild3, !is _SealedChild3? -> ""
|
||||
is SealedChild3, !is SealedChild3? -> ""
|
||||
else -> ""
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ fun case_5(value_1: Any?): String = when (value_1) {
|
||||
* ISSUES: KT-22996
|
||||
*/
|
||||
fun case_6(value_1: Any?): String = when (value_1) {
|
||||
is Boolean?, !is _SealedChild3 -> "" // double nullable type check in the one branch
|
||||
<!USELESS_IS_CHECK!>is _SealedChild3<!> -> ""
|
||||
is Boolean?, !is SealedChild3 -> "" // double nullable type check in the one branch
|
||||
<!USELESS_IS_CHECK!>is SealedChild3<!> -> ""
|
||||
else -> ""
|
||||
}
|
||||
|
||||
@@ -53,6 +53,6 @@ fun case_6(value_1: Any?): String = when (value_1) {
|
||||
* ISSUES: KT-22996
|
||||
*/
|
||||
fun case_7(value_1: Any?): String = when (value_1) {
|
||||
is Number?, null, !is _SealedChild3 -> "" // triple nullable type check in the one branch
|
||||
is Number?, null, !is SealedChild3 -> "" // triple nullable type check in the one branch
|
||||
else -> ""
|
||||
}
|
||||
|
||||
+3
-4
@@ -1,5 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 3
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' with bound value and containment operator.
|
||||
* HELPERS: typesProvider, classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -23,9 +22,9 @@ fun case_1(value_1: Int, value_2: Int, value_3: Short): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int, value_2: List<IntArray>, value_3: _Class) = when (value_1) {
|
||||
fun case_2(value_1: Int, value_2: List<IntArray>, value_3: Class) = when (value_1) {
|
||||
in value_2[0] -> ""
|
||||
!in listOf(0, 1, 2, 3, 4) -> ""
|
||||
!in value_3.getIntArray(90) -> ""
|
||||
!in value_3.getIntArray() -> ""
|
||||
else -> ""
|
||||
}
|
||||
+3
-4
@@ -1,5 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 3
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' with bound value and enumeration of the containment operators.
|
||||
* HELPERS: typesProvider, classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -21,7 +20,7 @@ fun case_1(value_1: Int, value_2: Int, value_3: Short): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int, value_2: List<IntArray>, value_3: _Class) = when (value_1) {
|
||||
!in value_2[0], !in listOf(0, 1, 2, 3, 4), !in value_3.getIntArray(90) -> ""
|
||||
fun case_2(value_1: Int, value_2: List<IntArray>, value_3: Class) = when (value_1) {
|
||||
!in value_2[0], !in listOf(0, 1, 2, 3, 4), !in value_3.getIntArray() -> ""
|
||||
else -> ""
|
||||
}
|
||||
+8
-10
@@ -1,6 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_FUNCTIONS
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 5
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' with enumeration of the different variants of expressions in 'when condition'.
|
||||
* HELPERS: typesProvider, classes, functions
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -28,7 +26,7 @@ fun case_2(value_1: Number, value_2: Int) {
|
||||
when (value_1) {
|
||||
-.09 % 10L -> {}
|
||||
value_2 / -5 -> {}
|
||||
getByte(99) - 11 + 90 -> {}
|
||||
getByte() - 11 + 90 -> {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +36,7 @@ fun case_3(value_1: Boolean, value_2: Boolean, value_3: Long) {
|
||||
value_2 -> {}
|
||||
!value_2 -> {}
|
||||
getBoolean() && value_2 -> {}
|
||||
getChar(10) != 'a' -> {}
|
||||
getChar() != 'a' -> {}
|
||||
getList() === getAny() -> {}
|
||||
value_3 <= 11 -> {}
|
||||
}
|
||||
@@ -113,8 +111,8 @@ fun case_9(value_1: Any) {
|
||||
// TESTCASE NUMBER: 10
|
||||
fun case_10(value_1: Collection<Int>, value_2: Collection<Int>, value_3: Collection<Int>?) {
|
||||
when (value_1) {
|
||||
value_2 as MutableList<Int> -> {}
|
||||
value_2 <!USELESS_CAST!>as? MutableList<Int><!> -> {}
|
||||
value_2 as List<Int> -> {}
|
||||
value_2 <!USELESS_CAST!>as? List<Int><!> -> {}
|
||||
value_3 <!UNCHECKED_CAST!>as? MutableMap<Int, Int><!> -> {}
|
||||
(value_2 <!UNCHECKED_CAST!>as? Map<Int, Int><!>) as MutableMap<Int, Int> -> {}
|
||||
}
|
||||
@@ -153,11 +151,11 @@ fun case_13(value_1: Int, value_2: List<Int>, value_3: List<List<List<List<Int>>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 14
|
||||
fun case_14(value_1: Any, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
fun case_14(value_1: Any, value_2: Class, value_3: Class?, value_4: Int) {
|
||||
fun __fun_1(): () -> Any { return fun() { } }
|
||||
|
||||
when (value_1) {
|
||||
_funWithoutArgs() -> {}
|
||||
funWithoutArgs() -> {}
|
||||
__fun_1()() -> {}
|
||||
value_2.fun_2(value_4) -> {}
|
||||
value_3?.fun_2(value_4) -> {}
|
||||
@@ -166,7 +164,7 @@ fun case_14(value_1: Any, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 15
|
||||
fun case_15(value_1: Int, value_2: _Class, value_3: _Class?) {
|
||||
fun case_15(value_1: Int, value_2: Class, value_3: Class?) {
|
||||
when (value_1) {
|
||||
value_2.prop_1 -> {}
|
||||
value_3?.prop_2 -> {}
|
||||
|
||||
+8
-10
@@ -1,6 +1,3 @@
|
||||
// !WITH_BASIC_TYPES
|
||||
// !WITH_CLASSES
|
||||
// !WITH_FUNCTIONS
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,6 +6,7 @@
|
||||
* PLACE: when-expression -> paragraph 7 -> sentence 5
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' with different variants of the arithmetic expressions (additive expression and multiplicative expression) in 'when condition'.
|
||||
* HELPERS: typesProvider, classes, functions
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
@@ -22,14 +20,14 @@ fun case_1(value_1: Any?) {
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Number, value_2: Int) {
|
||||
when (value_1) {
|
||||
-.09 % 10L, value_2 / -5, getByte(99) - 11 + 90 -> {}
|
||||
-.09 % 10L, value_2 / -5, getByte() - 11 + 90 -> {}
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: Boolean, value_2: Boolean, value_3: Long) {
|
||||
when (value_1) {
|
||||
value_2, !value_2, getBoolean() && value_2, getChar(10) != 'a' -> {}
|
||||
value_2, !value_2, getBoolean() && value_2, getChar() != 'a' -> {}
|
||||
getList() === getAny(), value_3 <= 11 -> {}
|
||||
}
|
||||
}
|
||||
@@ -90,7 +88,7 @@ fun case_9(value_1: Any) {
|
||||
// TESTCASE NUMBER: 10
|
||||
fun case_10(value_1: Collection<Int>, value_2: Collection<Int>, value_3: Collection<Int>?) {
|
||||
when (value_1) {
|
||||
value_2 as MutableList<Int>, value_2 <!USELESS_CAST!>as? MutableList<Int><!> -> {}
|
||||
value_2 as List<Int>, value_2 <!USELESS_CAST!>as? List<Int><!> -> {}
|
||||
value_3 <!UNCHECKED_CAST!>as? MutableMap<Int, Int><!>, (value_2 <!UNCHECKED_CAST!>as? Map<Int, Int><!>) as MutableMap<Int, Int> -> {}
|
||||
}
|
||||
}
|
||||
@@ -123,17 +121,17 @@ fun case_13(value_1: Int, value_2: List<Int>, value_3: List<List<List<List<Int>>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 14
|
||||
fun case_14(value_1: Any, value_2: _Class, value_3: _Class?, value_4: Int) {
|
||||
fun case_14(value_1: Any, value_2: Class, value_3: Class?, value_4: Int) {
|
||||
fun __fun_1(): () -> Unit { return fun() { } }
|
||||
|
||||
when (value_1) {
|
||||
_funWithoutArgs(), __fun_1()(), value_2.fun_2(value_4) -> {}
|
||||
funWithoutArgs(), __fun_1()(), value_2.fun_2(value_4) -> {}
|
||||
value_3?.fun_2(value_4), value_3!!.fun_2(value_4) -> {}
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 15
|
||||
fun case_15(value_1: Int, value_2: _Class, value_3: _Class?) {
|
||||
fun case_15(value_1: Int, value_2: Class, value_3: Class?) {
|
||||
when (value_1) {
|
||||
value_2.prop_1, value_3?.prop_2 -> {}
|
||||
value_2::prop_1.get(), value_3!!::prop_3.get() -> {}
|
||||
@@ -256,7 +254,7 @@ fun case_25(value_1: Boolean) = when (value_1) {
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-26045
|
||||
*/
|
||||
fun case_26(value_1: Int?, value_2: _Class, value_3: _Class?) {
|
||||
fun case_26(value_1: Int?, value_2: Class, value_3: Class?) {
|
||||
when (value_1) {
|
||||
value_2.prop_1, <!DUPLICATE_LABEL_IN_WHEN!>value_3?.prop_1<!> -> {}
|
||||
10 -> {}
|
||||
|
||||
+23
-23
@@ -1,5 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,24 +7,25 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via else branch).
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int): String {
|
||||
val whenValue = when {
|
||||
value_1 == 0 -> _ClassLevel2()
|
||||
value_1 > 0 && value_1 <= 10 -> _ClassLevel3()
|
||||
value_1 > 10 && value_1 <= 100 -> _ClassLevel4()
|
||||
else -> _ClassLevel5()
|
||||
value_1 == 0 -> ClassLevel2()
|
||||
value_1 > 0 && value_1 <= 10 -> ClassLevel3()
|
||||
value_1 > 10 && value_1 <= 100 -> ClassLevel4()
|
||||
else -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
@@ -33,19 +33,19 @@ fun case_1(value_1: Int): String {
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int): String {
|
||||
val whenValue = when (value_1) {
|
||||
0 -> _ClassLevel2()
|
||||
1 -> _ClassLevel3()
|
||||
2 -> _ClassLevel4()
|
||||
else -> _ClassLevel5()
|
||||
0 -> ClassLevel2()
|
||||
1 -> ClassLevel3()
|
||||
2 -> ClassLevel4()
|
||||
else -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
+38
-39
@@ -1,6 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_ENUM_CLASSES
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -9,58 +7,59 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via enum).
|
||||
* HELPERS: classes, enumClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass): String {
|
||||
fun case_1(value_1: EnumClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> _ClassLevel2()
|
||||
_EnumClass.NORTH -> _ClassLevel3()
|
||||
_EnumClass.SOUTH -> _ClassLevel4()
|
||||
_EnumClass.WEST -> _ClassLevel5()
|
||||
EnumClass.EAST -> ClassLevel2()
|
||||
EnumClass.NORTH -> ClassLevel3()
|
||||
EnumClass.SOUTH -> ClassLevel4()
|
||||
EnumClass.WEST -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClass?): String {
|
||||
fun case_2(value_1: EnumClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> _ClassLevel2()
|
||||
_EnumClass.NORTH -> _ClassLevel3()
|
||||
_EnumClass.SOUTH -> _ClassLevel4()
|
||||
_EnumClass.WEST -> _ClassLevel5()
|
||||
null -> _ClassLevel6()
|
||||
EnumClass.EAST -> ClassLevel2()
|
||||
EnumClass.NORTH -> ClassLevel3()
|
||||
EnumClass.SOUTH -> ClassLevel4()
|
||||
EnumClass.WEST -> ClassLevel5()
|
||||
null -> ClassLevel6()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel6>() }
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel6>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel6>() }
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel6>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _EnumClass): String {
|
||||
fun case_3(value_1: EnumClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
_EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><Int>() }
|
||||
@@ -74,12 +73,12 @@ fun case_3(value_1: _EnumClass): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _EnumClass?): String {
|
||||
fun case_4(value_1: EnumClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
_EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
null -> <!IMPLICIT_CAST_TO_ANY!>false<!>
|
||||
}
|
||||
|
||||
|
||||
+16
-16
@@ -1,5 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -8,20 +7,21 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via boolean bound value).
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Boolean): String {
|
||||
val whenValue = when (value_1) {
|
||||
true -> _ClassLevel2()
|
||||
false -> _ClassLevel3()
|
||||
true -> ClassLevel2()
|
||||
false -> ClassLevel3()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
@@ -29,16 +29,16 @@ fun case_1(value_1: Boolean): String {
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Boolean?): String {
|
||||
val whenValue = when (value_1) {
|
||||
true -> _ClassLevel2()
|
||||
false -> _ClassLevel3()
|
||||
null -> _ClassLevel4()
|
||||
true -> ClassLevel2()
|
||||
false -> ClassLevel3()
|
||||
null -> ClassLevel4()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
+69
-70
@@ -1,6 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_SEALED_CLASSES
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
@@ -9,51 +7,52 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via sealed class).
|
||||
* HELPERS: classes, sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass): String {
|
||||
fun case_1(value_1: SealedClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> _ClassLevel2()
|
||||
is _SealedChild2 -> _ClassLevel3()
|
||||
is _SealedChild3 -> _ClassLevel4()
|
||||
is SealedChild1 -> ClassLevel2()
|
||||
is SealedChild2 -> ClassLevel3()
|
||||
is SealedChild3 -> ClassLevel4()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClass?): String {
|
||||
fun case_2(value_1: SealedClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> _ClassLevel2()
|
||||
is _SealedChild2 -> _ClassLevel3()
|
||||
is _SealedChild3 -> _ClassLevel4()
|
||||
null -> _ClassLevel5()
|
||||
is SealedChild1 -> ClassLevel2()
|
||||
is SealedChild2 -> ClassLevel3()
|
||||
is SealedChild3 -> ClassLevel4()
|
||||
null -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClass): String {
|
||||
fun case_3(value_1: SealedClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is _SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is _SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
is SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><Int>() }
|
||||
@@ -65,11 +64,11 @@ fun case_3(value_1: _SealedClass): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClass?): String {
|
||||
fun case_4(value_1: SealedClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is _SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is _SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
is SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
null -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
}
|
||||
|
||||
@@ -84,48 +83,48 @@ fun case_4(value_1: _SealedClass?): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClassWithObjects): String {
|
||||
fun case_5(value_1: SealedClassWithObjects): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> _ClassLevel2()
|
||||
_SealedWithObjectsChild2 -> _ClassLevel3()
|
||||
_SealedWithObjectsChild3 -> _ClassLevel4()
|
||||
SealedWithObjectsChild1 -> ClassLevel2()
|
||||
SealedWithObjectsChild2 -> ClassLevel3()
|
||||
SealedWithObjectsChild3 -> ClassLevel4()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: _SealedClassWithObjects?): String {
|
||||
fun case_6(value_1: SealedClassWithObjects?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> _ClassLevel2()
|
||||
_SealedWithObjectsChild2 -> _ClassLevel3()
|
||||
_SealedWithObjectsChild3 -> _ClassLevel4()
|
||||
null -> _ClassLevel5()
|
||||
SealedWithObjectsChild1 -> ClassLevel2()
|
||||
SealedWithObjectsChild2 -> ClassLevel3()
|
||||
SealedWithObjectsChild3 -> ClassLevel4()
|
||||
null -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7(value_1: _SealedClassWithObjects): String {
|
||||
fun case_7(value_1: SealedClassWithObjects): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><Int>() }
|
||||
@@ -137,11 +136,11 @@ fun case_7(value_1: _SealedClassWithObjects): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8(value_1: _SealedClassWithObjects?): String {
|
||||
fun case_8(value_1: SealedClassWithObjects?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
null -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
}
|
||||
|
||||
@@ -156,19 +155,19 @@ fun case_8(value_1: _SealedClassWithObjects?): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 9
|
||||
fun case_9(value_1: _SealedClassWithObjects?): String {
|
||||
fun case_9(value_1: SealedClassWithObjects?): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedClassWithObjects -> _ClassLevel2()
|
||||
else -> _ClassLevel3()
|
||||
is SealedClassWithObjects -> ClassLevel2()
|
||||
else -> ClassLevel3()
|
||||
}
|
||||
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><_ClassLevel1>() }
|
||||
checkSubtype<_ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<_ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel5>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel4>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel3>() }
|
||||
whenValue checkType { <!TYPE_MISMATCH!>_<!><ClassLevel1>() }
|
||||
checkSubtype<ClassLevel5>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel4>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
checkSubtype<ClassLevel3>(<!TYPE_MISMATCH!>whenValue<!>)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
+13
-13
@@ -1,5 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,19 +7,20 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via else branch).
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int): String {
|
||||
val whenValue = when {
|
||||
value_1 == 0 -> _ClassLevel2()
|
||||
value_1 > 0 && value_1 <= 10 -> _ClassLevel3()
|
||||
value_1 > 10 && value_1 <= 100 -> _ClassLevel4()
|
||||
else -> _ClassLevel5()
|
||||
value_1 == 0 -> ClassLevel2()
|
||||
value_1 > 0 && value_1 <= 10 -> ClassLevel3()
|
||||
value_1 > 10 && value_1 <= 100 -> ClassLevel4()
|
||||
else -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
@@ -28,14 +28,14 @@ fun case_1(value_1: Int): String {
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int): String {
|
||||
val whenValue = when (value_1) {
|
||||
0 -> _ClassLevel2()
|
||||
1 -> _ClassLevel3()
|
||||
2 -> _ClassLevel4()
|
||||
else -> _ClassLevel5()
|
||||
0 -> ClassLevel2()
|
||||
1 -> ClassLevel3()
|
||||
2 -> ClassLevel4()
|
||||
else -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
+26
-27
@@ -1,6 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_CLASSES
|
||||
// !WITH_ENUM_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,46 +7,47 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via enum).
|
||||
* HELPERS: classes, enumClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _EnumClass): String {
|
||||
fun case_1(value_1: EnumClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> _ClassLevel2()
|
||||
_EnumClass.NORTH -> _ClassLevel3()
|
||||
_EnumClass.SOUTH -> _ClassLevel4()
|
||||
_EnumClass.WEST -> _ClassLevel5()
|
||||
EnumClass.EAST -> ClassLevel2()
|
||||
EnumClass.NORTH -> ClassLevel3()
|
||||
EnumClass.SOUTH -> ClassLevel4()
|
||||
EnumClass.WEST -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _EnumClass?): String {
|
||||
fun case_2(value_1: EnumClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> _ClassLevel2()
|
||||
_EnumClass.NORTH -> _ClassLevel3()
|
||||
_EnumClass.SOUTH -> _ClassLevel4()
|
||||
_EnumClass.WEST -> _ClassLevel5()
|
||||
null -> _ClassLevel6()
|
||||
EnumClass.EAST -> ClassLevel2()
|
||||
EnumClass.NORTH -> ClassLevel3()
|
||||
EnumClass.SOUTH -> ClassLevel4()
|
||||
EnumClass.WEST -> ClassLevel5()
|
||||
null -> ClassLevel6()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _EnumClass): String {
|
||||
fun case_3(value_1: EnumClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
_EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
}
|
||||
|
||||
whenValue checkType { _<Any>() }
|
||||
@@ -58,12 +57,12 @@ fun case_3(value_1: _EnumClass): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _EnumClass?): String {
|
||||
fun case_4(value_1: EnumClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
_EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
EnumClass.EAST -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
EnumClass.NORTH -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
EnumClass.SOUTH -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
EnumClass.WEST -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
null -> <!IMPLICIT_CAST_TO_ANY!>false<!>
|
||||
}
|
||||
|
||||
|
||||
+10
-10
@@ -1,5 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -8,17 +7,18 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 3
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via boolean bound value).
|
||||
* HELPERS: classes
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Boolean): String {
|
||||
val whenValue = when (value_1) {
|
||||
true -> _ClassLevel2()
|
||||
false -> _ClassLevel3()
|
||||
true -> ClassLevel2()
|
||||
false -> ClassLevel3()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
@@ -26,13 +26,13 @@ fun case_1(value_1: Boolean): String {
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Boolean?): String {
|
||||
val whenValue = when (value_1) {
|
||||
true -> _ClassLevel2()
|
||||
false -> _ClassLevel3()
|
||||
null -> _ClassLevel4()
|
||||
true -> ClassLevel2()
|
||||
false -> ClassLevel3()
|
||||
null -> ClassLevel4()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
+45
-46
@@ -1,6 +1,4 @@
|
||||
// !CHECK_TYPE
|
||||
// !WITH_SEALED_CLASSES
|
||||
// !WITH_CLASSES
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
@@ -9,43 +7,44 @@
|
||||
* PLACE: when-expression -> paragraph 9 -> sentence 1
|
||||
* NUMBER: 4
|
||||
* DESCRIPTION: 'When' least upper bound of the types check (when exhaustive via sealed class).
|
||||
* HELPERS: classes, sealedClasses
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: _SealedClass): String {
|
||||
fun case_1(value_1: SealedClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> _ClassLevel2()
|
||||
is _SealedChild2 -> _ClassLevel3()
|
||||
is _SealedChild3 -> _ClassLevel4()
|
||||
is SealedChild1 -> ClassLevel2()
|
||||
is SealedChild2 -> ClassLevel3()
|
||||
is SealedChild3 -> ClassLevel4()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: _SealedClass?): String {
|
||||
fun case_2(value_1: SealedClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> _ClassLevel2()
|
||||
is _SealedChild2 -> _ClassLevel3()
|
||||
is _SealedChild3 -> _ClassLevel4()
|
||||
null -> _ClassLevel5()
|
||||
is SealedChild1 -> ClassLevel2()
|
||||
is SealedChild2 -> ClassLevel3()
|
||||
is SealedChild3 -> ClassLevel4()
|
||||
null -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(value_1: _SealedClass): String {
|
||||
fun case_3(value_1: SealedClass): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is _SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is _SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
is SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
}
|
||||
|
||||
whenValue checkType { _<Any>() }
|
||||
@@ -55,11 +54,11 @@ fun case_3(value_1: _SealedClass): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4(value_1: _SealedClass?): String {
|
||||
fun case_4(value_1: SealedClass?): String {
|
||||
val whenValue = when (value_1) {
|
||||
is _SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is _SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is _SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
is SealedChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
is SealedChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
is SealedChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
null -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
}
|
||||
|
||||
@@ -70,40 +69,40 @@ fun case_4(value_1: _SealedClass?): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5(value_1: _SealedClassWithObjects): String {
|
||||
fun case_5(value_1: SealedClassWithObjects): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> _ClassLevel2()
|
||||
_SealedWithObjectsChild2 -> _ClassLevel3()
|
||||
_SealedWithObjectsChild3 -> _ClassLevel4()
|
||||
SealedWithObjectsChild1 -> ClassLevel2()
|
||||
SealedWithObjectsChild2 -> ClassLevel3()
|
||||
SealedWithObjectsChild3 -> ClassLevel4()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
fun case_6(value_1: _SealedClassWithObjects?): String {
|
||||
fun case_6(value_1: SealedClassWithObjects?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> _ClassLevel2()
|
||||
_SealedWithObjectsChild2 -> _ClassLevel3()
|
||||
_SealedWithObjectsChild3 -> _ClassLevel4()
|
||||
null -> _ClassLevel5()
|
||||
SealedWithObjectsChild1 -> ClassLevel2()
|
||||
SealedWithObjectsChild2 -> ClassLevel3()
|
||||
SealedWithObjectsChild3 -> ClassLevel4()
|
||||
null -> ClassLevel5()
|
||||
}
|
||||
|
||||
whenValue checkType { _<_ClassLevel2>() }
|
||||
checkSubtype<_ClassLevel1>(whenValue)
|
||||
whenValue checkType { _<ClassLevel2>() }
|
||||
checkSubtype<ClassLevel1>(whenValue)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
fun case_7(value_1: _SealedClassWithObjects): String {
|
||||
fun case_7(value_1: SealedClassWithObjects): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
}
|
||||
|
||||
whenValue checkType { _<Any>() }
|
||||
@@ -113,11 +112,11 @@ fun case_7(value_1: _SealedClassWithObjects): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8(value_1: _SealedClassWithObjects?): String {
|
||||
fun case_8(value_1: SealedClassWithObjects?): String {
|
||||
val whenValue = when (value_1) {
|
||||
_SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
_SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
_SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
SealedWithObjectsChild1 -> <!IMPLICIT_CAST_TO_ANY!>10<!>
|
||||
SealedWithObjectsChild2 -> <!IMPLICIT_CAST_TO_ANY!>""<!>
|
||||
SealedWithObjectsChild3 -> <!IMPLICIT_CAST_TO_ANY!>object<!> {}
|
||||
null -> {<!IMPLICIT_CAST_TO_ANY!>{}<!>}
|
||||
}
|
||||
|
||||
@@ -128,9 +127,9 @@ fun case_8(value_1: _SealedClassWithObjects?): String {
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 9
|
||||
fun case_9(value_1: _SealedClassWithObjects): String {
|
||||
fun case_9(value_1: SealedClassWithObjects): String {
|
||||
val whenValue = when (value_1) {
|
||||
<!USELESS_IS_CHECK!>is _SealedClassWithObjects<!> -> 10
|
||||
<!USELESS_IS_CHECK!>is SealedClassWithObjects<!> -> 10
|
||||
}
|
||||
|
||||
whenValue checkType { _<Int>() }
|
||||
|
||||
Reference in New Issue
Block a user