Class: RLSL::Prism::ASTVisitor::ScopeContext

Inherits:
Object
  • Object
show all
Defined in:
lib/rlsl/prism/ast_visitor/scope_context.rb

Defined Under Namespace

Classes: Scope

Instance Method Summary collapse

Constructor Details

#initialize(params: []) ⇒ ScopeContext

Returns a new instance of ScopeContext.



9
10
11
# File 'lib/rlsl/prism/ast_visitor/scope_context.rb', line 9

def initialize(params: [])
  @scopes = [build_scope(params)]
end

Instance Method Details

#declare(name) ⇒ Object



32
33
34
# File 'lib/rlsl/prism/ast_visitor/scope_context.rb', line 32

def declare(name)
  @scopes.last.declared_vars.add(name.to_sym)
end

#declared?(name) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/rlsl/prism/ast_visitor/scope_context.rb', line 24

def declared?(name)
  @scopes.reverse_each.any? { |scope| scope.declared_vars.include?(name.to_sym) }
end

#known_variable?(name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/rlsl/prism/ast_visitor/scope_context.rb', line 28

def known_variable?(name)
  parameter?(name) || declared?(name)
end

#parameter?(name) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/rlsl/prism/ast_visitor/scope_context.rb', line 20

def parameter?(name)
  @scopes.reverse_each.any? { |scope| scope.params.include?(name.to_sym) }
end

#with_scope(params: []) ⇒ Object



13
14
15
16
17
18
# File 'lib/rlsl/prism/ast_visitor/scope_context.rb', line 13

def with_scope(params: [])
  @scopes << build_scope(params)
  yield
ensure
  @scopes.pop
end