[JVM] Fix shrinking of local range for dead variables.

Coroutine transform would occasionally *extend* the range of a
local instead of shrinking it (if the next suspension point
is after the end point for the local). That leads to the local
variable table having a local that covers code where it is not
defined. That is invalid and leads to D8 removing the locals
table from the code.
This commit is contained in:
Mads Ager
2021-04-09 09:37:17 +02:00
committed by TeamCityServer
parent ebdbcbb7b6
commit b27a109a1e
9 changed files with 62 additions and 1 deletions
@@ -0,0 +1,23 @@
// WITH_RUNTIME
// WITH_COROUTINES
// FULL_RUNTIME
// KJS_WITH_FULL_RUNTIME
class JarFile {
fun entries() = listOf<String>()
}
private fun scriptTemplatesDiscoverySequence(): Sequence<String> {
return sequence<String> {
yield("OK")
for (dep in listOf<String>()) {
try {
} catch (e: Throwable) {
}
}
}
}
fun box(): String {
return scriptTemplatesDiscoverySequence().first()
}