diff --git a/lib/ruby/send_statement.rb b/lib/ruby/send_statement.rb index 9a8f2a05..0b8a0303 100644 --- a/lib/ruby/send_statement.rb +++ b/lib/ruby/send_statement.rb @@ -15,7 +15,7 @@ module Ruby normalize_arg(arg , arguments , statements) end if statements.empty? - return Vool::SendStatement.new(@name, @receiver.to_vool , @arguments) + return Vool::SendStatement.new(@name, @receiver.to_vool , arguments) else statements << Vool::SendStatement.new(@name, @receiver.to_vool , arguments) return statements @@ -23,8 +23,8 @@ module Ruby end def normalize_arg(arg , arguments , statements) - if arg.respond_to?(:slot_definition) and !arg.is_a?(SendStatement) - arguments << arg + if arg.respond_to?(:ct_type) and !arg.is_a?(SendStatement) + arguments << arg.to_vool return end assign = Vool::LocalAssignment.new( "tmp_#{arg.object_id}".to_sym, arg) diff --git a/test/ruby/test_send_statement1.rb b/test/ruby/test_send_statement1.rb index 28e971bc..0cdc7441 100644 --- a/test/ruby/test_send_statement1.rb +++ b/test/ruby/test_send_statement1.rb @@ -25,23 +25,16 @@ module Ruby @lst = compile( "bar(1)").to_vool end def test_class - assert_equal Vool::Statements , @lst.class - assert_equal 2 , @lst.length - end - def test_first - assert_equal Vool::LocalAssignment , @lst.first.class - end - def test_last - assert_equal Vool::SendStatement , @lst.last.class + assert_equal Vool::SendStatement , @lst.class end def test_name - assert_equal :bar , @lst.last.name + assert_equal :bar , @lst.name end def test_receiver - assert_equal Vool::SelfExpression , @lst.last.receiver.class + assert_equal Vool::SelfExpression , @lst.receiver.class end def test_args - assert @lst.last.arguments.first.name.to_s.start_with?("tmp") + assert_equal Vool::IntegerConstant , @lst.arguments.first.class end end class TestSendSuperVool < MiniTest::Test @@ -60,21 +53,14 @@ module Ruby def setup @lst = compile( "super(1)").to_vool end - def test_super_args_class - assert_equal Vool::Statements , @lst.class - assert_equal 2 , @lst.length - end - def test_super_args_first - assert_equal Vool::LocalAssignment , @lst.first.class - end - def test_super_args_last - assert_equal Vool::SendStatement , @lst.last.class + def test_super_class + assert_equal Vool::SendStatement , @lst.class end def test_super_receiver - assert_equal Vool::SuperExpression , @lst.last.receiver.class + assert_equal Vool::SuperExpression , @lst.receiver.class end def test_super_name #is nil - assert_nil @lst.last.name + assert_nil @lst.name end end class TestSendReceiverTypeVool < MiniTest::Test