class
Crystal::MetaVar
Included Modules
Defined in:
compiler/crystal/semantic/ast.crConstructors
Instance Method Summary
-
#==(other : self)
Returns
trueif this reference is the same as other. -
#assigned_to=(assigned_to : Bool)
Is this metavar assigned a value?
-
#assigned_to? : Bool
Is this metavar assigned a value?
-
#belongs_to?(context)
True if this variable belongs to the given context.
- #clone_without_location
-
#closure_in?(context)
True if this variable belongs to the given context but must be allocated in a closure.
-
#closured? : Bool
A variable is closured if it's used in a ProcLiteral context where it wasn't created.
-
#context : ASTNode | NonGenericModuleType | Nil
This is the context of the variable: who allocates it.
-
#context=(context : ASTNode | NonGenericModuleType | Nil)
This is the context of the variable: who allocates it.
- #freeze_type : Type | Nil
- #freeze_type=(freeze_type : Type | Nil)
-
#inspect(io : IO) : Nil
Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.
-
#local_vars
Local variables associated with this meta variable.
-
#local_vars=(local_vars : Nil | Array(Crystal::ASTNode))
Local variables associated with this meta variable.
-
#local_vars? : Array(Crystal::ASTNode)?
Is this metavar associated with any local vars?
-
#mark_as_closured
Marks this variable as closured.
-
#mutably_closured=(mutably_closured : Bool)
Is this metavar closured in a mutable way? This means it's closured and it got a value assigned to it more than once.
-
#mutably_closured? : Bool
Is this metavar closured in a mutable way? This means it's closured and it got a value assigned to it more than once.
- #name : String
- #name=(name : String)
-
#nil_if_read=(nil_if_read : Bool)
True if we need to mark this variable as nilable if this variable is read.
-
#nil_if_read? : Bool
True if we need to mark this variable as nilable if this variable is read.
- #pretty_print(pp)
Instance methods inherited from module Crystal::SpecialVar
special_var?
special_var?
Instance methods inherited from class Crystal::ASTNode
accept(visitor)
accept,
accept_children(visitor)
accept_children,
add_observer(observer)
add_observer,
at(node : ASTNode)at(location : Location | Nil) at, at_end(node : ASTNode)
at_end(end_location : Location | Nil) at_end, bind(from = nil, &) bind, bind_to(node : ASTNode) : Nil
bind_to(nodes : Indexable) : Nil bind_to, class_desc class_desc, class_name class_name, clone clone, dependencies : SmallNodeList dependencies, doc doc, doc=(doc) doc=, enclosing_call : Call | Nil enclosing_call, enclosing_call=(enclosing_call : Call | Nil) enclosing_call=, end_location : Location | Nil end_location, end_location=(end_location : Location | Nil) end_location=, false_literal? false_literal?, filtered_by(filter) filtered_by, find_owner_trace(program, owner) find_owner_trace, freeze_type freeze_type, inspect(io : IO) : Nil inspect, interpret(method : String, args : Array(ASTNode), named_args : Hash(String, ASTNode) | Nil, block : Crystal::Block | Nil, interpreter : Crystal::MacroInterpreter, name_loc : Location | Nil) interpret, interpret_compare(other) interpret_compare, length : Int32 | Nil length, location : Location | Nil location, location=(location : Location | Nil) location=, macro_is_a?(macro_type : MacroType) : Bool macro_is_a?, map_type(type) map_type, name_location name_location, name_size name_size, no_returns? no_returns?, nop? nop?, notify_observers notify_observers, pretty_print(pp) pretty_print, propagate propagate, raise(message, inner = nil, exception_type = Crystal::TypeException) raise, raise_frozen_type(freeze_type, invalid_type, from) raise_frozen_type, remove_enclosing_call(enclosing_call) remove_enclosing_call, remove_observer(observer) remove_observer, restrict_type_to_freeze_type(freeze_type, type) restrict_type_to_freeze_type, restriction_of?(other : Underscore, owner, self_free_vars = nil, other_free_vars = nil)
restriction_of?(other : ASTNode, owner, self_free_vars = nil, other_free_vars = nil)
restriction_of?(other : Type, owner, self_free_vars = nil, other_free_vars = nil)
restriction_of?(other, owner, self_free_vars = nil, other_free_vars = nil) restriction_of?, set_enclosing_call(enclosing_call) set_enclosing_call, set_type(type : Type)
set_type(type : Nil) set_type, set_type_from(type, from) set_type_from, simple_literal? simple_literal?, single_expression single_expression, single_expression? single_expression?, stringify stringify, supports_autocast?(number_autocast : Bool = true) supports_autocast?, symbolize symbolize, to_macro_id to_macro_id, to_s(io : IO, macro_expansion_pragmas = nil, emit_doc = false, emit_location_pragmas : Bool = false) : Nil to_s, to_string(context) to_string, transform(transformer) transform, true_literal? true_literal?, truthy? truthy?, type
type(*, with_autocast = false) type, type=(type) type=, type? type?, type_from_dependencies : Type | Nil type_from_dependencies, unbind_from(nodes : Nil)
unbind_from(node : ASTNode)
unbind_from(nodes : Enumerable(ASTNode)) unbind_from, update(from = nil) update, visibility visibility, visibility=(visibility : Visibility) visibility=, warning(message, inner = nil, exception_type = Crystal::TypeException) warning, wrong_number_of(elements, subject, given, expected)
wrong_number_of(elements, given, expected) wrong_number_of, wrong_number_of_arguments(subject, given, expected) wrong_number_of_arguments, wrong_number_of_message(elements, subject, given, expected)
wrong_number_of_message(elements, given, expected) wrong_number_of_message
Class methods inherited from class Crystal::ASTNode
class_desc : String
class_desc
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
Instance Method Detail
Returns true if this reference is the same as other. Invokes same?.
True if this variable belongs to the given context but must be allocated in a closure.
A variable is closured if it's used in a ProcLiteral context where it wasn't created.
This is the context of the variable: who allocates it. It can either be the Program (for top level variables), a Def or a Block.
This is the context of the variable: who allocates it. It can either be the Program (for top level variables), a Def or a Block.
Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.
class Person
def initialize(@name : String, @age : Int32)
end
end
Person.new("John", 32).inspect # => #<Person:0x10fd31f20 @name="John", @age=32>
Local variables associated with this meta variable. Can be Var or MetaVar.
Is this metavar associated with any local vars?
Is this metavar closured in a mutable way? This means it's closured and it got a value assigned to it more than once. If that's the case, when it's closured then all local variable related to it will also be bound to it.
Is this metavar closured in a mutable way? This means it's closured and it got a value assigned to it more than once. If that's the case, when it's closured then all local variable related to it will also be bound to it.
True if we need to mark this variable as nilable if this variable is read.
True if we need to mark this variable as nilable if this variable is read.