abstract class Savi::Compiler::Infer::NamedInfo
- Savi::Compiler::Infer::NamedInfo
- Savi::Compiler::Infer::DynamicInfo
- Savi::Compiler::Infer::Info
- Reference
- Object
Direct Known Subclasses
- Savi::Compiler::Infer::ErrorOut
- Savi::Compiler::Infer::FuncBody
- Savi::Compiler::Infer::Local
- Savi::Compiler::Infer::Param
- Savi::Compiler::Infer::YieldIn
- Savi::Compiler::Infer::YieldOut
Defined in:
savi/compiler/infer/info.crConstructors
Instance Method Summary
-
#adds_alias
May be implemented by the child class as an optional hook.
-
#after_add_downstream(use_pos : Source::Pos, info : Info)
May be implemented by the child class as an optional hook.
- #as_conduit? : Conduit | Nil
- #assign(ctx : Context, upstream : Info, upstream_pos : Source::Pos)
- #explicit? : Bool
- #explicit_is_type_expr_cap? : Bool
- #first_viable_constraint_pos : Source::Pos
-
#infer_from_all_upstreams? : Bool
By default, a NamedInfo will only treat the first assignment as relevant for inferring when there is no explicit, but some subclasses may override.
- #resolve_span!(ctx : Context, infer : Visitor) : Span
- #set_explicit(explicit : Info)
- #tether_upward_transform_span(ctx : Context, infer : Visitor, span : Span) : Span
- #tethers(querent : Info) : Array(Tether)
- #upstream_infos
Instance methods inherited from class Savi::Compiler::Infer::DynamicInfo
add_downstream(use_pos : Source::Pos, info : Info)
add_downstream,
adds_alias
adds_alias,
after_add_downstream(use_pos : Source::Pos, info : Info)
after_add_downstream,
describe_downstream_constraints(ctx : Context, type_check : TypeCheck::ForReifiedFunc)
describe_downstream_constraints,
describe_kind : String
describe_kind,
described_kind
described_kind,
downstream_tethers(querent : Info) : Array(Tether)
downstream_tethers,
downstream_use_pos
downstream_use_pos,
downstreams_each
downstreams_each,
downstreams_empty?
downstreams_empty?,
list_downstream_constraints(ctx : Context, type_check : TypeCheck::ForReifiedFunc)
list_downstream_constraints,
tether_constraint_spans(ctx : Context, infer : Visitor)
tether_constraint_spans,
tethers(querent : Info) : Array(Tether)
tethers,
this_would_be_possible_if : Tuple(Source::Pos, String) | Nil
this_would_be_possible_if,
this_would_be_possible_if=(this_would_be_possible_if : Tuple(Source::Pos, String) | Nil)
this_would_be_possible_if=,
total_downstream_constraint(ctx : Context, type_check : TypeCheck::ForReifiedFunc)
total_downstream_constraint
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
Constructor Detail
Instance Method Detail
def adds_alias
#
Description copied from class Savi::Compiler::Infer::DynamicInfo
May be implemented by the child class as an optional hook.
Description copied from class Savi::Compiler::Infer::DynamicInfo
May be implemented by the child class as an optional hook.
def infer_from_all_upstreams? : Bool
#
By default, a NamedInfo will only treat the first assignment as relevant for inferring when there is no explicit, but some subclasses may override.