Module: Carbon::Compiler::Visitor::Preparation::Statements

Included in:
Carbon::Compiler::Visitor::Preparation
Defined in:
lib/carbon/compiler/visitor/preparation/statements.rb

Instance Method Summary collapse

Instance Method Details

#visit_statement_body(node) ⇒ Object



61
62
63
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 61

def visit_statement_body(node)
  node.merge(body: accept(node.body))
end

#visit_statement_body_follow(node) ⇒ Object



33
34
35
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 33

def visit_statement_body_follow(node)
  node.merge(body: accept(node.body), follow: accept(node.follow))
end

#visit_statement_catch(node) ⇒ Object



28
29
30
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 28

def visit_statement_catch(node)
  visit_statement_body_follow(node)
end

#visit_statement_else(node) ⇒ Object



23
24
25
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 23

def visit_statement_else(node)
  node.update(body: accept(node.body))
end

#visit_statement_for(node) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 47

def visit_statement_for(node)
  @context = :"for:init"
  initial = accept(node.initial)
  @context = :"for:cond"
  condition = accept(node.condition)
  @context = :"for:incr"
  increment = accept(node.increment)
  @context = :normal

  node.update(initial: initial, condition: condition,
    increment: increment, body: accept(node.body))
end

#visit_statement_if(node) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 13

def visit_statement_if(node)
  @context = :if
  condition = accept(node.condition)
  @context = :normal

  node.update(condition: condition, body: accept(node.body),
    follow: accept(node.follow))
end

#visit_statement_let(node) ⇒ Object



66
67
68
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 66

def visit_statement_let(node)
  node.merge(type: accept(node.type))
end

#visit_statement_while(node) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/carbon/compiler/visitor/preparation/statements.rb', line 38

def visit_statement_while(node)
  @context = :while
  expr = accept(node.condition)
  @context = :normal

  node.update(condition: expr, body: accept(node.body))
end