fx ruby send args
This commit is contained in:
parent
d03592dfb1
commit
0238874c20
@ -27,7 +27,7 @@ module Ruby
|
|||||||
arguments << arg.to_vool
|
arguments << arg.to_vool
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
assign = Vool::LocalAssignment.new( "tmp_#{arg.object_id}".to_sym, arg)
|
assign = Vool::LocalAssignment.new( "tmp_#{arg.object_id}".to_sym, arg.to_vool)
|
||||||
statements << assign
|
statements << assign
|
||||||
arguments << Vool::LocalVariable.new(assign.name)
|
arguments << Vool::LocalVariable.new(assign.name)
|
||||||
end
|
end
|
||||||
|
@ -27,7 +27,7 @@ module Ruby
|
|||||||
arguments << arg
|
arguments << arg
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
assign = LocalAssignment.new( "tmp_#{arg.object_id}".to_sym, arg)
|
assign = LocalAssignment.new( "tmp_#{arg.object_id}".to_sym, arg.to_vool)
|
||||||
statements << assign
|
statements << assign
|
||||||
arguments << LocalVariable.new(assign.name)
|
arguments << LocalVariable.new(assign.name)
|
||||||
end
|
end
|
||||||
|
@ -15,5 +15,10 @@ module Vool
|
|||||||
at_depth(depth , "#{@name} = #{@value}")
|
at_depth(depth , "#{@name} = #{@value}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def chain_assign(assign , compiler)
|
||||||
|
return assign unless @value.is_a?(SendStatement)
|
||||||
|
@value.to_mom(compiler) << assign
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,10 +9,6 @@ module Vool
|
|||||||
return chain_assign( Mom::SlotLoad.new(to,from) , compiler)
|
return chain_assign( Mom::SlotLoad.new(to,from) , compiler)
|
||||||
end
|
end
|
||||||
|
|
||||||
def chain_assign(assign , compiler)
|
|
||||||
return assign unless @value.is_a?(SendStatement)
|
|
||||||
@value.to_mom(compiler) << assign
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -27,6 +27,9 @@ module Vool
|
|||||||
@statements << o
|
@statements << o
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
def prepend(o)
|
||||||
|
@statements = [o] + @statements
|
||||||
|
end
|
||||||
|
|
||||||
# create mom instructions
|
# create mom instructions
|
||||||
def to_mom( compiler )
|
def to_mom( compiler )
|
||||||
|
@ -70,7 +70,7 @@ module Ruby
|
|||||||
|
|
||||||
def test_instance_return
|
def test_instance_return
|
||||||
lst = compile( "return @var" ).to_vool
|
lst = compile( "return @var" ).to_vool
|
||||||
assert_equal InstanceVariable , lst.return_value.class
|
assert_equal Vool::InstanceVariable , lst.return_value.class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_class_basic
|
def test_class_basic
|
||||||
@ -81,7 +81,7 @@ module Ruby
|
|||||||
|
|
||||||
def test_class_return
|
def test_class_return
|
||||||
lst = compile( "return @@var" ).to_vool
|
lst = compile( "return @@var" ).to_vool
|
||||||
assert_equal ClassVariable , lst.return_value.class
|
assert_equal Vool::ClassVariable , lst.return_value.class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_module_basic
|
def test_module_basic
|
||||||
|
Loading…
Reference in New Issue
Block a user