mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 13:11:32 +00:00
compiler: declare symbols before store so that symbol graph works
This commit is contained in:
10
bir/src/main/kotlin/gay/pizza/pork/bir/IrDeclare.kt
Normal file
10
bir/src/main/kotlin/gay/pizza/pork/bir/IrDeclare.kt
Normal file
@ -0,0 +1,10 @@
|
||||
package gay.pizza.pork.bir
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class IrDeclare(override val symbol: IrSymbol, val value: IrCodeElement) : IrCodeElement, IrSymbolOwner {
|
||||
override fun crawl(block: (IrElement) -> Unit) {
|
||||
value.crawl(block)
|
||||
}
|
||||
}
|
@ -29,6 +29,7 @@ interface IrVisitor<T> {
|
||||
fun visitIrFunctionArgument(ir: IrFunctionArgument): T
|
||||
fun visitIrIndex(ir: IrIndex): T
|
||||
fun visitIrListSize(ir: IrListSize): T
|
||||
fun visitIrDeclare(ir: IrDeclare): T
|
||||
|
||||
fun visit(ir: IrElement): T = when (ir) {
|
||||
is IrBreak -> visitIrBeak(ir)
|
||||
@ -59,5 +60,6 @@ interface IrVisitor<T> {
|
||||
is IrFunctionArgument -> visitIrFunctionArgument(ir)
|
||||
is IrIndex -> visitIrIndex(ir)
|
||||
is IrListSize -> visitIrListSize(ir)
|
||||
is IrDeclare -> visitIrDeclare(ir)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user