[FIR] Add NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY diagnostic
This commit is contained in:
committed by
teamcityserver
parent
151478aa27
commit
a6984c5198
-13
@@ -1,13 +0,0 @@
|
||||
interface X {
|
||||
fun f(): Boolean
|
||||
}
|
||||
|
||||
val m = object : X {
|
||||
override fun f(): Boolean {
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
fun local(): Int {
|
||||
}
|
||||
}
|
||||
}
|
||||
compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/ReturnFromFunctionInObject.kt
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
interface X {
|
||||
fun f(): Boolean
|
||||
}
|
||||
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
package f
|
||||
|
||||
|
||||
//KT-3444 Front-end doesn't check if local function or function of anonymous class returns value
|
||||
|
||||
fun box(): Int {
|
||||
|
||||
fun local(): Int {
|
||||
}
|
||||
|
||||
return local()
|
||||
}
|
||||
|
||||
fun main() {
|
||||
box()
|
||||
}
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
package f
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -7,10 +7,10 @@ class A {}
|
||||
package test.p; class C {fun f() {}}
|
||||
|
||||
// FILE: c.kt
|
||||
package test.p; open class G<T> {open fun f(): T {} fun a() {}}
|
||||
package test.p; open class G<T> {open fun f(): T {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!> fun a() {}}
|
||||
|
||||
// FILE: d.kt
|
||||
package test.p; class G2<E> : <!SUPERTYPE_NOT_INITIALIZED!>G<E><!> { fun g() : E {} override fun f() : E {}}
|
||||
package test.p; class G2<E> : <!SUPERTYPE_NOT_INITIALIZED!>G<E><!> { fun g() : E {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!> override fun f() : E {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>}
|
||||
|
||||
// FILE: e.kt
|
||||
package test.p; fun foo() {}
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@ fun illegalWhenBlock(a: Any): Int {
|
||||
is Int -> return a
|
||||
is String -> return a.length
|
||||
}
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
fun box() {
|
||||
fun local():Int {
|
||||
}
|
||||
}
|
||||
|
||||
interface X {
|
||||
fun f(): Boolean
|
||||
}
|
||||
|
||||
val m = object : X {
|
||||
override fun f(): Boolean {
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
fun box() {
|
||||
fun local():Int {
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
@@ -10,19 +10,19 @@ val closure = {
|
||||
}
|
||||
|
||||
fun h(): Int { // error: should be NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
}
|
||||
|
||||
class A {
|
||||
init {
|
||||
fun foo(): Int {
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
val closure = {
|
||||
val x = ""
|
||||
|
||||
fun local(): Int {
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
}
|
||||
|
||||
val y = ""
|
||||
|
||||
+3
-3
@@ -7,7 +7,7 @@ fun f() {
|
||||
|
||||
fun loc1(): Int {
|
||||
val x1_ = "" // ok: unused
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
}
|
||||
|
||||
fun f() {
|
||||
@@ -15,12 +15,12 @@ fun f() {
|
||||
|
||||
fun loc2(): Int {
|
||||
val x2_ = "" // error: should be UNUSED_VARIABLE
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
}
|
||||
|
||||
val v: String
|
||||
get() {
|
||||
val x3 = "" // ok: unused
|
||||
}
|
||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user