class Ameba::AST::Scope
- Ameba::AST::Scope
- Reference
- Object
Overview
Represents a context of the local variable visibility. This is where the local variables belong to.
Defined in:
Constructors
-
.new(node, outer_scope = nil)
Creates a new scope.
Instance Method Summary
-
#==(other : self)
Returns
true
if this reference is the same as other. -
#add_argument(node)
Creates a new argument in the current scope.
-
#add_ivariable(node)
Adds a new instance variable to the current scope.
-
#add_variable(node)
Creates a new variable in the current scope.
-
#arg?(var)
Returns true if var is an argument in current scope, false if not.
-
#arguments : Array(Ameba::AST::Argument)
Link to the arguments in current scope
-
#assign_variable(name, node)
Creates a new assignment for the variable.
-
#assigns_ivar?(name)
Returns true instance variable assinged in this scope.
-
#block?
Returns true if current scope represents a block (or proc), false if not.
-
#def?
Returns true if current scope is a def, false if not.
- #end_location(*args, **options)
- #end_location(*args, **options, &)
-
#eql?(node)
Returns true if the
#node
represents exactly the same Crystal node as@node
. -
#find_variable(name : String)
Returns variable by its name or nil if it does not exist.
-
#hash(hasher)
See
Object#hash(hasher)
-
#in_macro?
Returns true if current scope sits inside a macro.
-
#inner_scopes : Array(Ameba::AST::Scope)
List of inner scopes
-
#ivariables : Array(Ameba::AST::InstanceVariable)
Link to the instance variables used in current scope
- #location(*args, **options, &)
- #location(*args, **options)
-
#node : Crystal::ASTNode
The actual AST node that represents a current scope.
-
#outer_scope : Scope?
Link to the outer scope
-
#references : Array(Ameba::AST::Reference)
Link to all variable references in currency scope
-
#references?(variable : Variable)
Returns true if current scope (or any of inner scopes) references variable, false if not.
-
#spawn_block?
Returns true if current scope represents a spawn block, e.
- #to_s(*args, **options)
- #to_s(*args, **options, &)
-
#top_level?
Returns true if this scope is a top level scope, false if not.
-
#type_definition?
Returns true if and only if current scope represents some type definition, for example a class.
-
#variables : Array(Ameba::AST::Variable)
Link to local variables
Constructor Detail
Creates a new scope. Accepts the AST node and the outer scope.
scope = Scope.new(class_node, nil)
Instance Method Detail
Returns true
if this reference is the same as other. Invokes same?
.
Creates a new argument in the current scope.
scope = Scope.new(class_node, nil)
scope.add_argument(arg_node)
Adds a new instance variable to the current scope.
scope = Scope.new(class_node, nil)
scope.add_ivariable(ivar_node)
Creates a new variable in the current scope.
scope = Scope.new(class_node, nil)
scope.add_variable(var_node)
Creates a new assignment for the variable.
scope = Scope.new(class_node, nil)
scope.assign_variable(var_name, assign_node)
Returns variable by its name or nil if it does not exist.
scope = Scope.new(class_node, nil)
scope.find_variable("foo")
Link to the instance variables used in current scope
Returns true if current scope (or any of inner scopes) references variable, false if not.
Returns true if and only if current scope represents some type definition, for example a class.