class Savi::Compiler::Completeness::Branch

Defined in:

savi/compiler/completeness.cr

Constructors

Instance Method Summary

Instance methods inherited from class Savi::AST::Visitor

visit(ctx : Compiler::Context, node : Node) visit, visit_any?(ctx : Compiler::Context, node : Node) visit_any?, visit_children?(ctx : Compiler::Context, node : Node) visit_children?, visit_pre(ctx : Compiler::Context, node : Node) visit_pre

Constructor Detail

def self.new(ctx : Savi::Compiler::Context, type : Savi::Program::Type, func : Savi::Program::Function, func_link : Savi::Program::Function::Link, analysis : Savi::Compiler::Completeness::Analysis, branch_cache : Hash(Tuple(Set(String), Savi::Program::Function::Link), Savi::Compiler::Completeness::Branch), all_fields : Array(Savi::Program::Function), let_fields : Set(String), seen_fields : Set(String) = Set(String).new, call_crumbs : Array(Savi::Source::Pos) = Array(Source::Pos).new, possibly_away : Bool = false, loop_stack : Array(Savi::AST::Loop) = [] of AST::Loop) #

[View source]

Instance Method Detail

def all_fields : Array(Program::Function) #

[View source]
def analysis : Analysis #

[View source]
def branch_cache : Hash(Tuple(Set(String), Program::Function::Link), Branch) #

[View source]
def call_crumbs : Array(Source::Pos) #

[View source]
def collect_unseen_fields #

[View source]
def func : Program::Function #

[View source]
def func_link : Program::Function::Link #

[View source]
def jumps : Jumps::Analysis #

[View source]
def let_fields : Set(String) #

[View source]
def pre_infer : PreInfer::Analysis #

[View source]
def seen_fields : Set(String) #

[View source]
def show_unseen_fields #

[View source]
def sub_branch(ctx : Context, next_f : Program::Function, next_f_link : Program::Function::Link, call_crumb : Source::Pos, possibly_away = false) #

[View source]
def sub_branch(node : AST::Node) #

[View source]
def touch(node : AST::Choice) #

[View source]
def touch(node : AST::FieldRead) #

[View source]
def touch(node : AST::FieldWrite) #

[View source]
def touch(node : AST::FieldDisplace) #

[View source]
def touch(node : AST::Identifier) #

[View source]
def touch(node : AST::Call) #

[View source]
def touch(node : AST::Node) #

[View source]
def type : Program::Type #

[View source]
def visit(ctx, node) #

This visitor never replaces nodes, it just touches them and returns them.


[View source]
def visit_children?(ctx, node : AST::Choice) #

[View source]
def visit_pre(ctx, node) #

[View source]