Class: Carbon::Compiler::Visitor::Preparation
- Inherits:
-
Object
- Object
- Carbon::Compiler::Visitor::Preparation
- Includes:
- Base, Expressions, Function, Statements, Struct
- Defined in:
- lib/carbon/compiler/visitor/preparation.rb,
lib/carbon/compiler/visitor/preparation/struct.rb,
lib/carbon/compiler/visitor/preparation/function.rb,
lib/carbon/compiler/visitor/preparation/statements.rb,
lib/carbon/compiler/visitor/preparation/expressions.rb
Defined Under Namespace
Modules: Expressions, Function, Statements, Struct
Instance Method Summary collapse
- #call(node) ⇒ Object
-
#initialize(file, index) ⇒ Preparation
constructor
A new instance of Preparation.
- #visit_directive(node) ⇒ Object
- #visit_module(node) ⇒ Object
- #visit_root(node) ⇒ Object
- #visit_type(node) ⇒ Object
Methods included from Struct
#visit_struct, #visit_struct_element
Methods included from Statements
#visit_statement_body, #visit_statement_body_follow, #visit_statement_catch, #visit_statement_else, #visit_statement_for, #visit_statement_if, #visit_statement_let, #visit_statement_while
Methods included from Function
#visit_function, #visit_function_body, #visit_function_generic, #visit_function_parameter
Methods included from Base
Constructor Details
#initialize(file, index) ⇒ Preparation
Returns a new instance of Preparation.
20 21 22 23 24 25 26 27 |
# File 'lib/carbon/compiler/visitor/preparation.rb', line 20 def initialize(file, index) @index = index @file = file @name = @file.module @directives = [] @_funcs = {} @context = :normal end |
Instance Method Details
#call(node) ⇒ Object
29 30 31 |
# File 'lib/carbon/compiler/visitor/preparation.rb', line 29 def call(node) accept(node) end |
#visit_directive(node) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/carbon/compiler/visitor/preparation.rb', line 53 def visit_directive(node) directive = Compiler::Directive.new(node, @file, @index) @directives << node if directive.attach? directive.call node end |
#visit_module(node) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/carbon/compiler/visitor/preparation.rb', line 44 def visit_module(node) error_mismatched_name(node) if node.name != @name error_multiple_modules(node) if @_name @_name = node @file.module = @name = node.name node end |
#visit_root(node) ⇒ Object
39 40 41 |
# File 'lib/carbon/compiler/visitor/preparation.rb', line 39 def visit_root(node) node.map! { |c| accept(c) } end |
#visit_type(node) ⇒ Object
34 35 36 |
# File 'lib/carbon/compiler/visitor/preparation.rb', line 34 def visit_type(node) node.sub(@file.aliases) end |