Files
kotlin/compiler/testData/codegen/bytecodeText/when/whenNull.kt
Mads Ager fb6eafddf1 JVM_IR: Generate better code for null checks.
Simplify ifs when branches have condition true/false.

Simplify blocks containing only a variable declaration
and a variable get of the same variable. Simplify to
just the condition.

Do not introduce temporary variables for constants for
null checks. Constants have no side-effects and can be
reloaded freely instead of going through a local.

This simplifies code such as "42.toLong()!!" so that the
resulting code has no branches and uses no locals. The
simplifications happen as follows:

```
block
  temp = 42.toLong()
  when
    (temp == null) throw NPE
    (true) load temp

---> null test simplification

block
  temp = 42.toLong()
  when
    (false) throw NPE
    (true) load temp

---> when simplification

block
  temp = 42.toLong()
  load temp

---> block simplification

42.toLong()
```
2019-01-23 15:11:14 +01:00

10 lines
264 B
Kotlin
Vendored

fun test(a: Any?, b: Any?, c: Any?) {
when (null) {
a -> throw IllegalArgumentException("a is null")
b -> throw IllegalArgumentException("b is null")
c -> throw IllegalArgumentException("c is null")
}
}
// 0 areEqual
// 3 IFNONNULL