blob: 9be498b02b5a59da653ed081d40403ece49c225c [file] [log] [blame]
// RUNTIME
fun none() {}
fun unitEmptyInfer() {}
fun unitEmpty() : Unit {}
fun unitEmptyReturn() : Unit {return}
fun unitIntReturn() : Unit {return <error>1</error>}
fun unitUnitReturn() : Unit {return Unit}
fun test1() : Any = { <error>return</error> }
fun test2() : Any = a@ {return@a 1}
fun test3() : Any { <error>return</error> }
fun bbb() {
return <error>1</error>
}
fun foo(<warning>expr</warning>: StringBuilder): Int {
val c = 'a'
when(c) {
0.toChar() -> throw Exception("zero")
else -> throw Exception("nonzero" + c)
}
}
fun unitShort() : Unit = Unit
fun unitShortConv() : Unit = <error>1</error>
fun unitShortNull() : Unit = <error>null</error>
fun intEmpty() : Int {<error>}</error>
fun intShortInfer() = 1
fun intShort() : Int = 1
//fun intBlockInfer() {1}
fun intBlock() : Int {return 1}
fun intBlock1() : Int {<warning>1</warning><error>}</error>
fun intString(): Int = <error>"s"</error>
fun intFunctionLiteral(): Int = <error>{ 10 }</error>
fun blockReturnUnitMismatch() : Int {<error>return</error>}
fun blockReturnValueTypeMismatch() : Int {return <error>3.4</error>}
fun blockReturnValueTypeMatch() : Int {return 1}
fun blockReturnValueTypeMismatchUnit() : Int {return <error>Unit</error>}
fun blockAndAndMismatch() : Int {
<warning>true && false</warning>
<error>}</error>
fun blockAndAndMismatch1() : Int {
return <error>true && false</error>
}
fun blockAndAndMismatch2() : Int {
(return <error>true</error>) <warning>&& (return <error>false</error>)</warning>
}
fun blockAndAndMismatch3() : Int {
<warning>true || false</warning>
<error>}</error>
fun blockAndAndMismatch4() : Int {
return <error>true || false</error>
}
fun blockAndAndMismatch5() : Int {
(return <error>true</error>) <warning>|| (return <error>false</error>)</warning>
}
fun blockReturnValueTypeMatch1() : Int {
return if (1 > 2) <error>1.0</error> else <error>2.0</error>
}
fun blockReturnValueTypeMatch2() : Int {
return <error><error>if</error> (1 > 2) 1</error>
}
fun blockReturnValueTypeMatch3() : Int {
return <error><error>if</error> (1 > 2) else 1</error>
}
fun blockReturnValueTypeMatch4() : Int {
if (1 > 2)
return <error>1.0</error>
else return <error>2.0</error>
}
fun blockReturnValueTypeMatch5() : Int {
if (1 > 2)
return <error>1.0</error>
return <error>2.0</error>
}
fun blockReturnValueTypeMatch6() : Int {
if (1 > 2)
else return <error>1.0</error>
return <error>2.0</error>
}
fun blockReturnValueTypeMatch7() : Int {
if (1 > 2)
<warning>1.0</warning>
else <warning>2.0</warning>
<error>}</error>
fun blockReturnValueTypeMatch8() : Int {
if (1 > 2)
<warning>1.0</warning>
else <warning>2.0</warning>
return 1
}
fun blockReturnValueTypeMatch9() : Int {
if (1 > 2)
<warning>1.0</warning>
<error>}</error>
fun blockReturnValueTypeMatch10() : Int {
return <error><error>if</error> (1 > 2) 1</error>
}
fun blockReturnValueTypeMatch11() : Int {
if (1 > 2)
else <warning>1.0</warning>
<error>}</error>
fun blockReturnValueTypeMatch12() : Int {
if (1 > 2)
return 1
else return <error>1.0</error>
}
fun blockNoReturnIfValDeclaration(): Int {
val <warning>x</warning> = 1
<error>}</error>
fun blockNoReturnIfEmptyIf(): Int {
if (1 < 2) {} else {}
<error>}</error>
fun blockNoReturnIfUnitInOneBranch(): Int {
if (1 < 2) {
return 1
} else {
if (3 < 4) {
} else {
return 2
}
}
<error>}</error>
fun nonBlockReturnIfEmptyIf(): Int = if (1 < 2) <error>{}</error> else <error>{}</error>
fun nonBlockNoReturnIfUnitInOneBranch(): Int = if (1 < 2) <error>{}</error> else 2
val a = <error>return</error> 1
class A() {
}
fun illegalConstantBody(): Int = <error>"s"</error>
fun illegalConstantBlock(): String {
return <error>1</error>
}
fun illegalIfBody(): Int =
if (1 < 2) <error>'a'</error> else { <error>1.0</error> }
fun illegalIfBlock(): Boolean {
if (1 < 2)
return false
else { return <error>1</error> }
}
fun illegalReturnIf(): Char {
return if (1 < 2) 'a' else { <error>1</error> }
}
fun returnNothing(): Nothing {
throw <error>1</error>
}
fun f(): Int {
if (1 < 2) { return 1 } else returnNothing()
}
fun f1(): Int = if (1 < 2) 1 else returnNothing()