KT-8263: Conditional operators are not parsed correctly

This commit is contained in:
Iven Krall
2022-06-12 20:05:43 +02:00
committed by teamcity
parent 2053363def
commit ec8da2033c
37 changed files with 4847 additions and 218 deletions
@@ -1,8 +0,0 @@
// SKIP_TXT
// ISSUE: KT-8263
fun test(x: Int, y: Int) {
if (<!CONDITION_TYPE_MISMATCH!>x < (<!SYNTAX!>if<!><!SYNTAX!><!> <!SYNTAX!>(<!><!UNRESOLVED_REFERENCE!><!SYNTAX!><!>y<!> ><!><!SYNTAX!><!> 115<!SYNTAX!>) 1 else 2))<!> {
Unit
}
}
@@ -1,8 +1,9 @@
// FIR_IDENTICAL
// SKIP_TXT
// ISSUE: KT-8263
fun test(x: Int, y: Int) {
if (<!UNRESOLVED_REFERENCE!>x<!> < (<!SYNTAX!>if<!><!SYNTAX!><!> <!SYNTAX!>(<!><!UNRESOLVED_REFERENCE!><!SYNTAX!><!>y<!> ><!SYNTAX!><!> 115<!SYNTAX!>) 1 else 2))<!> {
if (x < (if (y > 115) 1 else 2)) {
Unit
}
}
@@ -0,0 +1,22 @@
// FIR_IDENTICAL
// !LANGUAGE: +AllowTypeArgumentListLikeExpressions
// ISSUE: KT-8263
fun f(x: Int, y: Int, z: () -> Any, a: (Boolean, Boolean) -> Unit, b: (Any?) -> Unit) {
a(x < -1, (-3) > 3)
a(x < (-1), -3 > 3)
a(x < (-1), (-3) > 3)
a(x < y, -3 > 3)
a(x < y, x > 2)
b(x < if (y > (0)) y else 0)
b(x < (if (y > (0)) y else 0))
b(x < when (y > (0)) { else -> 0 })
b(x < (when (y > (0)) { else -> 0 }))
b(z() as Int < 15)
b(z() as Int < y)
b(z() is Int < true)
b(z() !is Int < true)
b(z() !is Int < true > false)
}
@@ -0,0 +1,4 @@
package
public fun f(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int, /*2*/ z: () -> kotlin.Any, /*3*/ a: (kotlin.Boolean, kotlin.Boolean) -> kotlin.Unit, /*4*/ b: (kotlin.Any?) -> kotlin.Unit): kotlin.Unit
@@ -0,0 +1,21 @@
// !LANGUAGE: -AllowTypeArgumentListLikeExpressions
// ISSUE: KT-8263
fun f(x: Int, y: Int, z: () -> Any, a: (Boolean, Boolean) -> Unit, b: (Any?) -> Unit) {
a(x < -1, (-3) > 3)
a(x < (-1), -3 > 3)
a(x < (-1), (-3) > 3)
a(x < y, -3 > 3)
a(x < y, x > 2)
b(x < if (y > (0)) y else 0)
b(x < (if (y > (0)) y else 0))
b(x < when (y > (0)) { else -> 0 })
b(x < (when (y > (0)) { else -> 0 }))
b(z() as Int < 15)
b(z() as Int < y)
b(z() is Int < true)
b(z() !is Int < true)
b(z() !is Int < true > false)
}
@@ -0,0 +1,21 @@
// !LANGUAGE: -AllowTypeArgumentListLikeExpressions
// ISSUE: KT-8263
fun f(x: Int, y: Int, z: () -> Any, a: (Boolean, Boolean) -> Unit, b: (Any?) -> Unit) {
a(x < -1, (-3) > 3)
a(x < (-1), -3 > 3)
a(x <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> (-1), (-3) > 3)
a(x < y, -3 > 3)
a(x <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> y, x > 2)
b(x < if (y > (0)) y else 0)
b(x <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> (if (y > (0)) y else 0))
b(x < when (y > (0)) { else -> 0 })
b(x <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> (when (y > (0)) { else -> 0 }))
b(z() as Int <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> 15)
b(z() as Int <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> y)
b(z() is Int <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> true)
b(z() !is Int <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> true)
b(z() !is Int <!TYPE_ARGUMENT_LIST_LIKE_EXPRESSION!><<!> true > false)
}
@@ -0,0 +1,4 @@
package
public fun f(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int, /*2*/ z: () -> kotlin.Any, /*3*/ a: (kotlin.Boolean, kotlin.Boolean) -> kotlin.Unit, /*4*/ b: (kotlin.Any?) -> kotlin.Unit): kotlin.Unit