abstract class Savi::Compiler::Infer::DynamicInfo

Direct Known Subclasses

Defined in:

savi/compiler/infer/info.cr

Instance Method Summary

Instance methods inherited from class Savi::Compiler::Infer::Info

add_downstream(use_pos : Source::Pos, info : Info) add_downstream, add_peer_hint(peer : Info) add_peer_hint, as_conduit? : Conduit | Nil as_conduit?, as_downstream_constraint_meta_type(ctx : Context, type_check : TypeCheck::ForReifiedFunc) : MetaType | Nil as_downstream_constraint_meta_type, as_multiple_downstream_constraints(ctx : Context, type_check : TypeCheck::ForReifiedFunc) : Array(Tuple(Source::Pos, MetaType)) | Nil as_multiple_downstream_constraints, as_upstream_conduits : Array(Conduit) as_upstream_conduits, layer_index : Int32 layer_index, layer_index=(layer_index : Int32) layer_index=, layer_index? : Int32 | Nil layer_index?, override_describe_kind : String | Nil override_describe_kind, override_describe_kind=(override_describe_kind : String | Nil) override_describe_kind=, pos : Source::Pos pos, pos=(pos : Source::Pos) pos=, resolve_span!(ctx : Context, infer : Visitor) resolve_span!, tether_resolve_span(ctx : Context, infer : Visitor) tether_resolve_span, tether_terminal? tether_terminal?, tether_upward_transform_span(ctx : Context, infer : Visitor, span : Span) : Span tether_upward_transform_span, tethers(querent : Info) : Array(Tether) tethers, to_s to_s

Instance Method Detail

def add_downstream(use_pos : Source::Pos, info : Info) #

[View source]
def adds_alias #

May be implemented by the child class as an optional hook.


[View source]
def after_add_downstream(use_pos : Source::Pos, info : Info) #

May be implemented by the child class as an optional hook.


[View source]
def describe_downstream_constraints(ctx : Context, type_check : TypeCheck::ForReifiedFunc) #

[View source]
abstract def describe_kind : String #

Must be implemented by the child class as an required hook.


[View source]
def described_kind #

[View source]
def downstream_tethers(querent : Info) : Array(Tether) #

[View source]
def downstream_use_pos #

[View source]
def downstreams_each #

[View source]
def downstreams_empty? #

[View source]
def list_downstream_constraints(ctx : Context, type_check : TypeCheck::ForReifiedFunc) #

[View source]
def tether_constraint_spans(ctx : Context, infer : Visitor) #

[View source]
def tethers(querent : Info) : Array(Tether) #

[View source]
def this_would_be_possible_if : Tuple(Source::Pos, String) | Nil #

This property can be set to give a hint in the event of a typecheck error.


[View source]
def this_would_be_possible_if=(this_would_be_possible_if : Tuple(Source::Pos, String) | Nil) #

This property can be set to give a hint in the event of a typecheck error.


[View source]
def total_downstream_constraint(ctx : Context, type_check : TypeCheck::ForReifiedFunc) #

When we need to take into consideration the downstreams' constraints in order to infer our type from them, we can use this to collect all those constraints into one intersection of them all.


[View source]