Ji Sungbin
03/15/2023, 3:58 AM// A module
public fun Hi() {
println("hi~")
}
// B module
public fun Bye() {
println("bye~")
}
Module A has a dependency on module B, and I’ve enabled the Kotlin Compiler Plugin with MyIrVisitor
.
internal class MyIrVisitor : IrElementVisitorVoid {
override fun visitModuleFragment(declaration: IrModuleFragment) {
declaration.files.forEach { file ->
file.accept(this, null)
}
}
override fun visitFile(declaration: IrFile) {
declaration.declarations.forEach { item ->
item.accept(this, null)
}
}
override fun visitSimpleFunction(declaration: IrSimpleFunction) {
logger.warn("[visit] ${declaration.name.asString()}")
declaration.body?.accept(this, null)
}
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment) {
declaration.declarations.forEach { item ->
item.accept(this, null)
}
}
}
I expected both [visit] Hi
and [visit] Bye
to be printed, but only [visit] Hi
was actually printed.
Am I misunderstanding visitExternalPackageFragment
?