new tests
diff --git a/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt b/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt
index 2544d4d..eba918f 100644
--- a/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt
+++ b/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt
@@ -19,3 +19,45 @@
     val expP2: E = E()
     val barP2: String = expP2.ep
 }
+
+fun bar() {
+    fun foo(): E = E()
+    foo()
+}
+
+fun baz() {
+    fun qux() {
+        fun foo(): E = E()
+        foo()
+    }
+    qux()
+}
+
+fun quux() {
+    class Local {
+        fun corge() {
+            fun foo(): E = E()
+            foo()
+        }
+    }
+    Local().corge()
+}
+
+fun grault() {
+    object {
+        fun garply() {
+            fun foo(): E = E()
+            foo()
+        }
+    }.garply()
+}
+
+fun waldo() {
+    val fred = object {
+        fun garply() {
+            fun foo(): E = E()
+            foo()
+        }
+    }
+    fred.garply()
+}
diff --git a/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt b/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt
index 0a7ea7a..f3ad794 100644
--- a/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt
+++ b/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt
@@ -30,7 +30,52 @@
     }
 }
 
-fun box(): String = checkResults(test1(D()), test2(D()), test3(D()), test4(D()), test5())
+fun test6(): String {
+    return try {
+        bar()
+        return "FAIL6"
+    } catch (e: Throwable) {
+        e.checkLinkageError("function foo declared in function bar can not be called")
+    }
+}
+
+fun test7(): String {
+    return try {
+        baz()
+        return "FAIL7"
+    } catch (e: Throwable) {
+        e.checkLinkageError("function foo declared in function qux declared in function baz can not be called")
+    }
+}
+
+fun test8(): String {
+    return try {
+        quux()
+        return "FAIL8"
+    } catch (e: Throwable) {
+        e.checkLinkageError("function foo declared in function quux\$Local.corge can not be called")
+    }
+}
+
+fun test9(): String {
+    return try {
+        grault()
+        return "FAIL9"
+    } catch (e: Throwable) {
+        e.checkLinkageError("function foo declared in function grault\$1.garply")
+    }
+}
+
+fun test10(): String {
+    return try {
+        waldo()
+        return "FAIL10"
+    } catch (e: Throwable) {
+        e.checkLinkageError("function foo declared in function waldo\$fred\$1.garply")
+    }
+}
+
+fun box(): String = checkResults(test1(D()), test2(D()), test3(D()), test4(D()), test5(), test6(), test7(), test8(), test9(), test10())
 
 private fun Throwable.checkLinkageError(prefix: String): String =
     if (this::class.simpleName == "IrLinkageError" && message?.startsWith("$prefix because it uses unlinked symbols") == true)
diff --git a/compiler/testData/klibABI/removeClassAsVariableType/lib2/l2.kt b/compiler/testData/klibABI/removeClassAsVariableType/lib2/l2.kt
index 19bd767..0c52bc7 100644
--- a/compiler/testData/klibABI/removeClassAsVariableType/lib2/l2.kt
+++ b/compiler/testData/klibABI/removeClassAsVariableType/lib2/l2.kt
@@ -2,3 +2,40 @@
     var foo: Foo? = null
     check(foo == null)
 }
+
+fun baz() {
+    fun qux() {
+        var foo: Foo? = null
+        check(foo == null)
+    }
+    qux()
+}
+
+fun quux() {
+    class Local {
+        fun corge() {
+            var foo: Foo? = null
+            check(foo == null)
+        }
+    }
+    Local().corge()
+}
+
+fun grault() {
+    object {
+        fun garply() {
+            var foo: Foo? = null
+            check(foo == null)
+        }
+    }.garply()
+}
+
+fun waldo() {
+    val fred = object {
+        fun garply() {
+            var foo: Foo? = null
+            check(foo == null)
+        }
+    }
+    fred.garply()
+}
diff --git a/compiler/testData/klibABI/removeClassAsVariableType/main/m.kt b/compiler/testData/klibABI/removeClassAsVariableType/main/m.kt
index d319ea2..91ebd35 100644
--- a/compiler/testData/klibABI/removeClassAsVariableType/main/m.kt
+++ b/compiler/testData/klibABI/removeClassAsVariableType/main/m.kt
@@ -1,14 +1,58 @@
-fun box(): String {
+fun test1(): String {
     return try {
         bar()
-        return "FAIL"
+        return "FAIL1"
     } catch (e: Throwable) {
         e.checkLinkageError("var foo declared in function bar can not be read")
     }
 }
 
+fun test2(): String {
+    return try {
+        baz()
+        return "FAIL2"
+    } catch (e: Throwable) {
+        e.checkLinkageError("var foo declared in function qux declared in function baz can not be read")
+    }
+}
+
+fun test3(): String {
+    return try {
+        quux()
+        return "FAIL3"
+    } catch (e: Throwable) {
+        e.checkLinkageError("var foo declared in function quux\$Local.corge can not be read")
+    }
+}
+
+fun test4(): String {
+    return try {
+        grault()
+        return "FAIL4"
+    } catch (e: Throwable) {
+        e.checkLinkageError("var foo declared in function grault\$1.garply can not be read")
+    }
+}
+
+fun test5(): String {
+    return try {
+        waldo()
+        return "FAIL5"
+    } catch (e: Throwable) {
+        e.checkLinkageError("var foo declared in function waldo\$fred\$1.garply")
+    }
+}
+
+fun box() = checkResults(test1(), test2(), test3(), test4(), test5())
+
 private fun Throwable.checkLinkageError(prefix: String): String =
     if (this::class.simpleName == "IrLinkageError" && message?.startsWith("$prefix because it uses unlinked symbols") == true)
         "OK"
     else
         message!!
+
+private fun checkResults(vararg results: String): String = when {
+    results.isEmpty() -> "no results to check"
+    results.all { it == "OK" } -> "OK"
+    else -> results.joinToString("\n")
+}