class Crystal::Repl::Compiler

Overview

In this file we define the operations that cast types to other types, be it to expand them to fit "bigger" types (upcast) or to shrink them when a type is restricted, like when using is_a? (downcast). This is similar to codegen/cast.cr except that instead of producing LLVM code it works on the value on the top of the stack.

Defined in:

compiler/crystal/interpreter/cast.cr
compiler/crystal/interpreter/compiler.cr
compiler/crystal/interpreter/primitives.cr
compiler/crystal/interpreter/to_bool.cr

Constant Summary

WITH_SCOPE = ".with_scope"

The name we use for the variable where we store the with ... yield scope of calls without an obj.

Constructors

Instance Method Summary

Instance methods inherited from class Crystal::Visitor

accept(node) accept, end_visit(node) end_visit, end_visit_any(node) end_visit_any, visit_any(node) visit_any

Instance methods inherited from class Reference

==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other)
==
, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil)
same?
, to_s(io : IO) : Nil to_s

Constructor methods inherited from class Reference

new new, unsafe_construct(address : Pointer, *args, **opts) : self unsafe_construct

Class methods inherited from class Reference

pre_initialize(address : Pointer) pre_initialize

Instance methods inherited from class Object

! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other)
===
, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash
hash
, in?(collection : Object) : Bool
in?(*values : Object) : Bool
in?
, inspect(io : IO) : Nil
inspect : String
inspect
, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil!
not_nil!
, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String
to_json
, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil
to_pretty_json
, to_s(io : IO) : Nil
to_s : String
to_s
, to_yaml(io : IO) : Nil
to_yaml : String
to_yaml
, try(&) try, unsafe_as(type : T.class) forall T unsafe_as

Class methods inherited from class Object

from_json(string_or_io : String | IO, root : String)
from_json(string_or_io : String | IO)
from_json
, from_yaml(string_or_io : String | IO) from_yaml

Macros inherited from class Object

class_getter(*names, &block) class_getter, class_getter!(*names) class_getter!, class_getter?(*names, &block) class_getter?, class_property(*names, &block) class_property, class_property!(*names) class_property!, class_property?(*names, &block) class_property?, class_setter(*names) class_setter, def_clone def_clone, def_equals(*fields) def_equals, def_equals_and_hash(*fields) def_equals_and_hash, def_hash(*fields) def_hash, delegate(*methods, to object) delegate, forward_missing_to(delegate) forward_missing_to, getter(*names, &block) getter, getter!(*names) getter!, getter?(*names, &block) getter?, property(*names, &block) property, property!(*names) property!, property?(*names, &block) property?, setter(*names) setter

Constructor Detail

def self.new(context : Context, local_vars : LocalVars, instructions : CompiledInstructions = CompiledInstructions.new, scope : Type | Nil = nil, def __arg0 : Crystal::Def | Nil = nil, top_level : Bool = true) #

[View source]
def self.new(context : Context, compiled_def : CompiledDef, top_level : Bool, scope : Type = compiled_def.owner) #

[View source]

Instance Method Detail

def add_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def add_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def add_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def add_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def add_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def add_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def add_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def add_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def add_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def add_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def add_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def add_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def add_wrap_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def add_wrap_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def add_wrap_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def allocate_class(size : Int32, type_id : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def and_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def and_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def and_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def argc_unsafe(*, node : ASTNode | Nil) : Nil #

[View source]
def argv_unsafe(*, node : ASTNode | Nil) : Nil #

[View source]
def atomicrmw(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def block_level : Int32 #

In which block level we are in. Right when we enter a def we are at block level 0. When entering a block, the block level is incremented.

This is useful to distinguish a same variable in multiple scopes, for example:

a = 0      # has block_level = 0
foo do |a| # <- this is a different variable, has block_level = 1
end

[View source]
def block_level=(block_level : Int32) #

In which block level we are in. Right when we enter a def we are at block level 0. When entering a block, the block level is incremented.

This is useful to distinguish a same variable in multiple scopes, for example:

a = 0      # has block_level = 0
foo do |a| # <- this is a different variable, has block_level = 1
end

[View source]
def branch_if(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def branch_unless(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def break_block(size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def c_fun_to_proc(*, node : ASTNode | Nil) : Nil #

[View source]
def call(compiled_def : CompiledDef, *, node : ASTNode | Nil) : Nil #

[View source]
def call_block(compiled_block : CompiledBlock, *, node : ASTNode | Nil) : Nil #

[View source]
def call_with_block(compiled_def : CompiledDef, *, node : ASTNode | Nil) : Nil #

[View source]
def class_var_initialized(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def closure_context : ClosureContext | Nil #

[View source]
def closure_context=(closure_context : ClosureContext | Nil) #

[View source]
def cmp_eq(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_f32(predicate : Compiler::FloatPredicate, *, node : ASTNode | Nil) : Nil #

[View source]
def cmp_f64(predicate : Compiler::FloatPredicate, *, node : ASTNode | Nil) : Nil #

[View source]
def cmp_ge(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_gt(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_le(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_lt(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_neq(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def cmp_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def cmpxchg(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def compile(node : ASTNode) : Nil #

Compile bytecode instructions for the given node.


[View source]
def compile_assign_to_var(node : ASTNode, target : ASTNode, value : ASTNode) #

[View source]
def compile_block(compiled_block : CompiledBlock, target_def : Def, parent_closure_context : ClosureContext | Nil) : Nil #

Compile bytecode instructions for the given block, where target_def is the method that will yield to the block.


[View source]
def compile_def(compiled_def : CompiledDef, parent_closure_context : ClosureContext | Nil = nil, closure_owner = compiled_def.def) : Nil #

Compile bytecode instructions for the given method.


[View source]
def compile_extern_proc_wrapper(node, proc_type, symbol) #

[View source]
def compile_return(node, exp) #

[View source]
def compiled_block : CompiledBlock | Nil #

The block we are in, if any. This is different than compiling_block. Consider this code:

def foo(&)
  # When this is called from the top-level, `compiled_block`
  # will be the block given to `foo`, but `compiling_block`
  # will be `nil` because we are not compiling a block.

  bar do
    # Now we are compiling `bar`, so `compiling_block` will
    # have this block and `bar` as a value.
    # And also, `compiled_block` is still the block given to `foo`.
    # This is the point where you can see their difference.
    yield
  end
end

def bar(&)
  yield
end

# Here `compiling_block` and `compiled_block` are `nil`.

foo do
  # When this block is compiled, `compiling_block` will have
  # the block and `foo`.
  a = 1
end

[View source]
def compiled_block=(compiled_block : CompiledBlock | Nil) #

The block we are in, if any. This is different than compiling_block. Consider this code:

def foo(&)
  # When this is called from the top-level, `compiled_block`
  # will be the block given to `foo`, but `compiling_block`
  # will be `nil` because we are not compiling a block.

  bar do
    # Now we are compiling `bar`, so `compiling_block` will
    # have this block and `bar` as a value.
    # And also, `compiled_block` is still the block given to `foo`.
    # This is the point where you can see their difference.
    yield
  end
end

def bar(&)
  yield
end

# Here `compiling_block` and `compiled_block` are `nil`.

foo do
  # When this block is compiled, `compiling_block` will have
  # the block and `foo`.
  a = 1
end

[View source]
def const_initialized(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def copy_from(offset : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def div_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def div_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def dup(size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def f32_to_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def f32_to_u32_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f32_to_u64_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_f32_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i128_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i16(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i64_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_i8(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u16(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u32_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u64_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def f64_to_u8(*, node : ASTNode | Nil) : Nil #

[View source]
def get_class_ivar(offset : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_class_var(index : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_const(index : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_const_pointer(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_local(index : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_self_ivar(offset : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_struct_ivar(offset : Int32, size : Int32, total_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def get_union_type_id(union_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_i16(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_i8(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_u16(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def i128_to_u8(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_i16(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_i8(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_u16(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def i64_to_u8(*, node : ASTNode | Nil) : Nil #

[View source]
def instructions : CompiledInstructions #

The instructions that are being generated.


[View source]
def interpreter_call_stack_unwind(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_current_fiber(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_fiber_resumable(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_fiber_swapcontext(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bitreverse128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bitreverse16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bitreverse32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bitreverse64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bitreverse8(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bswap128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bswap16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bswap32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_bswap64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_countleading128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_countleading16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_countleading32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_countleading64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_countleading8(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_counttrailing128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_counttrailing16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_counttrailing32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_counttrailing64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_counttrailing8(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_debugtrap(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshl128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshl16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshl32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshl64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshl8(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshr128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshr16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshr32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshr64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_fshr8(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_memcpy(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_memmove(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_memset(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_pause(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_popcount128(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_popcount16(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_popcount32(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_popcount64(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_popcount8(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_intrinsics_read_cycle_counter(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_proc_new(proc_type_id : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_raise_without_backtrace(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_signal(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_signal_descriptor(*, node : ASTNode | Nil) : Nil #

[View source]
def interpreter_spawn(*, node : ASTNode | Nil) : Nil #

[View source]
def jump(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def leave(size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def leave_def(size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def lib_call(lib_function : LibFunction, *, node : ASTNode | Nil) : Nil #

[View source]
def libm_ceil_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_ceil_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_copysign_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_copysign_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_cos_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_cos_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_exp2_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_exp2_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_exp_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_exp_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_floor_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_floor_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_fma_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_fma_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_log10_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_log10_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_log2_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_log2_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_log_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_log_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_max_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_max_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_min_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_min_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_pow_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_pow_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_powi_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_powi_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_rint_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_rint_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_round_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_round_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_sin_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_sin_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_sqrt_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_sqrt_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_trunc_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def libm_trunc_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def load_atomic(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def logical_not(*, node : ASTNode | Nil) : Nil #

[View source]
def lookup_closured_var(name : String) : ClosuredVar #

[View source]
def lookup_closured_var?(name : String, closure_context : ClosureContext, indexes : Array(Int32)) #

[View source]
def lookup_closured_var?(name : String) : ClosuredVar | Nil #

[View source]
def lookup_local_var(name : String) : LocalVar #

[View source]
def lookup_local_var?(name : String, *, from : Int32 = @block_level) : LocalVar | Nil #

[View source]
def lookup_local_var?(name : String, *, at block_level : Int32) : LocalVar | Nil #

[View source]
def lookup_local_var_or_closured_var(name : String) : LocalVar | ClosuredVar #

[View source]
def metaclass_is_a(filter_type_id : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def mul_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_wrap_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_wrap_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def mul_wrap_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def or_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def or_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def or_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def pointer_add(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointer_address(*, node : ASTNode | Nil) : Nil #

[View source]
def pointer_diff(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointer_get(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointer_is_not_null(*, node : ASTNode | Nil) : Nil #

[View source]
def pointer_is_null(*, node : ASTNode | Nil) : Nil #

[View source]
def pointer_malloc(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointer_new(*, node : ASTNode | Nil) : Nil #

[View source]
def pointer_realloc(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointer_set(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointerof_class_var(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointerof_ivar(offset : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pointerof_var(index : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pop(size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def pop_from_offset(size : Int32, offset : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def proc_call(*, node : ASTNode | Nil) : Nil #

[View source]
def proc_to_c_fun(ffi_call_interface : FFI::CallInterface, *, node : ASTNode | Nil) : Nil #

[View source]
def push_zeros(amount : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def put_i128(value : Int128, *, node : ASTNode | Nil) : Nil #

[View source]
def put_i64(value : Int64, *, node : ASTNode | Nil) : Nil #

[View source]
def put_in_union(type_id : Int32, from_size : Int32, union_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def put_metaclass(size : Int32, union_type : Bool, *, node : ASTNode | Nil) : Nil #

[View source]
def put_nil(*, node : ASTNode | Nil) : Nil #

[View source]
def put_nilable_type_in_union(union_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def put_reference_type_in_union(union_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def put_stack_top_pointer(size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def put_union_type_id(type_id : Int32, union_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def reference_is_a(filter_type_id : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def remove_from_union(union_size : Int32, from_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def reset_class(size : Int32, type_id : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def set_class_var(index : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def set_const(index : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def set_local(index : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def set_self_ivar(offset : Int32, size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def sign_extend(amount : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def store_atomic(element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def sub_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_wrap_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_wrap_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def sub_wrap_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def symbol_to_s(*, node : ASTNode | Nil) : Nil #

[View source]
def throw(*, node : ASTNode | Nil) : Nil #

[View source]
def tuple_copy_element(tuple_size : Int32, old_offset : Int32, new_offset : Int32, element_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def tuple_indexer_known_index(tuple_size : Int32, offset : Int32, value_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_f32_bang(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_i16(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_i8(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_u16(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def u128_to_u8(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_f32(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_f64(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_i16(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_i8(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_u16(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def u64_to_u8(*, node : ASTNode | Nil) : Nil #

[View source]
def union_is_a(union_size : Int32, filter_type_id : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def union_to_bool(union_size : Int32, *, node : ASTNode | Nil) : Nil #

[View source]
def unreachable(message : String, *, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_div_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_mod_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shl_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shl_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shl_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_i128_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_i64_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_u128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_u128_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_u32(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_u64(*, node : ASTNode | Nil) : Nil #

[View source]
def unsafe_shr_u64_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def visit(node : Nop) #

[View source]
def visit(node : NilLiteral) #

[View source]
def visit(node : BoolLiteral) #

[View source]
def visit(node : NumberLiteral) #

[View source]
def visit(node : CharLiteral) #

[View source]
def visit(node : StringLiteral) #

[View source]
def visit(node : SymbolLiteral) #

[View source]
def visit(node : TupleLiteral) #

[View source]
def visit(node : NamedTupleLiteral) #

[View source]
def visit(node : ExceptionHandler) #

[View source]
def visit(node : Expressions) #

[View source]
def visit(node : Assign) #

[View source]
def visit(node : TypeDeclaration) #

[View source]
def visit(node : Var) #

[View source]
def visit(node : InstanceVar) #

[View source]
def visit(node : ClassVar) #

[View source]
def visit(node : ReadInstanceVar) #

[View source]
def visit(node : UninitializedVar) #

[View source]
def visit(node : If) #

[View source]
def visit(node : While) #

[View source]
def visit(node : Return) #

[View source]
def visit(node : TypeOf) #

[View source]
def visit(node : SizeOf) #

[View source]
def visit(node : InstanceSizeOf) #

[View source]
def visit(node : AlignOf) #

[View source]
def visit(node : InstanceAlignOf) #

[View source]
def visit(node : TypeNode) #

[View source]
def visit(node : Path) #

[View source]
def visit(node : Generic) #

[View source]
def visit(node : PointerOf) #

[View source]
def visit(node : Not) #

[View source]
def visit(node : Cast) #

[View source]
def visit(node : NilableCast) #

[View source]
def visit(node : IsA) #

[View source]
def visit(node : RespondsTo) #

[View source]
def visit(node : Call) #

[View source]
def visit(node : Out) #

[View source]
def visit(node : ProcLiteral) #

[View source]
def visit(node : ProcPointer) #

[View source]
def visit(node : Break) #

[View source]
def visit(node : Next) #

[View source]
def visit(node : Yield) #

[View source]
def visit(node : ClassDef) #

[View source]
def visit(node : ModuleDef) #

[View source]
def visit(node : EnumDef) #

[View source]
def visit(node : Def) #

[View source]
def visit(node : FunDef) #

[View source]
def visit(node : LibDef) #

[View source]
def visit(node : Macro) #

[View source]
def visit(node : VisibilityModifier) #

[View source]
def visit(node : Annotation) #

[View source]
def visit(node : AnnotationDef) #

[View source]
def visit(node : Alias) #

[View source]
def visit(node : Include) #

[View source]
def visit(node : Extend) #

[View source]
def visit(node : Unreachable) #

[View source]
def visit(node : FileNode) #

[View source]
def visit(node : ASTNode) #

[View source]
def xor_i128(*, node : ASTNode | Nil) : Nil #

[View source]
def xor_i32(*, node : ASTNode | Nil) : Nil #

[View source]
def xor_i64(*, node : ASTNode | Nil) : Nil #

[View source]
def zero_extend(amount : Int32, *, node : ASTNode | Nil) : Nil #

[View source]