logo

class

compiler::ResolveExpr

sys::Obj
  compiler::CompilerSupport
    compiler::CompilerStep
      compiler::ResolveExpr

Walk the AST to resolve:

  • Manage local variable scope
  • Resolve loop for breaks and continues
  • Resolve LocalDefStmt.init into full assignment expression
  • Resolve Expr.ctype
  • Resolve UknownVarExpr -> LocalVarExpr, FieldExpr, or CallExpr
  • Resolve CallExpr to their CMethod

Slots

blockStack

Block[] blockStack

curryCount

Int curryCount

enterBlock

override Void enterBlock(Block block)

enterMethodDef

override Void enterMethodDef(MethodDef m)

enterStmt

override Void enterStmt(Stmt stmt)

exitBlock

override Void exitBlock(Block block)

inClosure

Bool inClosure

make

new make(Compiler compiler)

run

override Void run()

stmtStack

Stmt[] stmtStack

visitExpr

override Expr visitExpr(Expr expr)

visitStmt

override Void visitStmt(Stmt stmt)