class Savi::Compiler::Reach
- Savi::Compiler::Reach
- Savi::AST::Visitor
- Reference
- Object
Overview
The purpose of the Reach pass is to [TODO: justify and clean up this pass].
This pass does not mutate the Program topology. This pass does not mutate the AST. This pass does not raise any compilation errors. This pass keeps state at the program level. This pass produces output state at the type/meta-type level.
Defined in:
savi/compiler/reach.crConstructors
Instance Method Summary
- #[](meta_type : Infer::MetaType)
- #[](rt : Infer::ReifiedType)
- #abstractly_reached_funcs_for(reach_def : Def)
- #each_reached_subtype_of(ctx, abstract_def : Def, &)
- #each_type_def
- #handle_field(ctx, rt : Infer::ReifiedType, f_link, ident) : Tuple(String, Ref) | Nil
- #handle_func(ctx, rf : Infer::ReifiedFunction, call_is_abstract)
- #handle_type_def(ctx, rt : Infer::ReifiedType)
- #handle_type_ref(ctx, meta_type : Infer::MetaType) : Ref
- #next_numeric_id
- #next_object_id
- #next_trait_id(ctx, new_def : Def)
- #next_tuple_id
- #reach_func_for(rf : Infer::ReifiedFunction) : Func
- #reached_func?(rf : Infer::ReifiedFunction)
- #reached_func_sets_for(reach_def : Def)
- #reached_funcs_for(reach_def : Def)
- #run(ctx)
- #seen_funcs : Hash({Savi::Compiler::Infer::ReifiedFunction, Bool}, Array(Savi::Compiler::Reach::Func))
- #signature_for(ctx : Context, rf : Infer::ReifiedFunction, infer : Infer::FuncAnalysis) : Signature
- #sympathetic_resonance(ctx)
- #sympathetic_signature_resonance(ctx)
- #trait_count : Int32
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
Instance Method Detail
def seen_funcs : Hash({Savi::Compiler::Infer::ReifiedFunction, Bool}, Array(Savi::Compiler::Reach::Func))
#
def signature_for(ctx : Context, rf : Infer::ReifiedFunction, infer : Infer::FuncAnalysis) : Signature
#