class Savi::Compiler::Reach

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.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 #

[View source]

Instance Method Detail

def [](meta_type : Infer::MetaType) #

[View source]
def [](rt : Infer::ReifiedType) #

[View source]
def abstractly_reached_funcs_for(reach_def : Def) #

[View source]
def each_reached_subtype_of(ctx, abstract_def : Def, &) #

[View source]
def each_type_def #

[View source]
def handle_field(ctx, rt : Infer::ReifiedType, f_link, ident) : Tuple(String, Ref) | Nil #

[View source]
def handle_func(ctx, rf : Infer::ReifiedFunction, call_is_abstract) #

[View source]
def handle_type_def(ctx, rt : Infer::ReifiedType) #

[View source]
def handle_type_ref(ctx, meta_type : Infer::MetaType) : Ref #

[View source]
def next_numeric_id #

[View source]
def next_object_id #

[View source]
def next_trait_id(ctx, new_def : Def) #

[View source]
def next_tuple_id #

[View source]
def reach_func_for(rf : Infer::ReifiedFunction) : Func #

[View source]
def reached_func?(rf : Infer::ReifiedFunction) #

[View source]
def reached_func_sets_for(reach_def : Def) #

[View source]
def reached_funcs_for(reach_def : Def) #

[View source]
def run(ctx) #

[View source]

[View source]
def signature_for(ctx : Context, rf : Infer::ReifiedFunction, infer : Infer::FuncAnalysis) : Signature #

[View source]
def sympathetic_resonance(ctx) #

[View source]
def sympathetic_signature_resonance(ctx) #

[View source]
def trait_count : Int32 #

[View source]