Class: Java::OrgJrubyAst::BlockNode

Inherits:
Object
  • Object
show all
Defined in:
lib/duby/old/compiler_old.rb,
lib/duby/old/typer_old.rb

Instance Method Summary collapse

Instance Method Details

#compile(builder) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/duby/old/compiler_old.rb', line 72

def compile(builder)
  size = child_nodes.size
  if size == 0
    case type
    when Jint
      builder.iconst_0
    else
      builder.aconst_null
    end
  else
    i = 0
    while i < size
      node = child_nodes.get(i)
      node = node.next_node while NewlineNode === node
      next unless node

      builder.line node.position.start_line + 1

      node.compile(builder)
      
      if i + 1 < size
        builder.pop if builder.method?
      end
      
      i += 1
    end
  end
end

#type(builder) ⇒ Object

Type of a block is the type of its final element



16
17
18
19
20
21
22
# File 'lib/duby/old/typer_old.rb', line 16

def type(builder)
  if child_nodes.size == 0
    JObject
  else
    @type ||= child_nodes.get(child_nodes.size - 1).type(builder)
  end
end