| # Inline functions can refer unavailable declarations | |
| ```kotlin | |
| // libA | |
| fun fooA() = 5 | |
| // libB: implementation depends on libA | |
| inline fun fooB() = fooA() | |
| // libC: implementation depends on libB, but not libA | |
| fun fooC() = fooB() | |
| ``` | |
| There is a problem, while inlining `fooB` to `fooC`. | |
| It contains call to `fooA`, but `fooA` doesn't exist for `fooC` compilation. | |
| For jvm it is not a problem, as it would inline `invokestatic libAKt.foo` as is, without | |
| trying to understand what does it mean. | |
| For current non-jvm it is not a problem, as it has all transitive dependencies at inlining time. | |
| Unfortunately, if trying to inline on compile time over IR it would be the same problem as in klibs. | |
| And even worse, as jvm compilation doesn't (and can't) have IrLinker to fix this symbols later. |