diff --git a/lib/parfait/type.rb b/lib/parfait/type.rb index f31e2c62..2709694c 100644 --- a/lib/parfait/type.rb +++ b/lib/parfait/type.rb @@ -68,7 +68,17 @@ module Parfait end def to_s - "#{class_name}-#{@names.inspect}" + str = "#{class_name}-[" + first = false + @names.each do |name| + unless(first) + first = true + str += ":#{name}" + else + str += ", :#{name}" + end + end + str + "]" end def method_names diff --git a/lib/risc/register_value.rb b/lib/risc/register_value.rb index 62a33fab..02d9ce97 100644 --- a/lib/risc/register_value.rb +++ b/lib/risc/register_value.rb @@ -66,7 +66,7 @@ module Risc end def to_s - s = "#{symbol}:#{type}" + s = "#{symbol}:#{type&.class_name}" s += ":#{extra}" unless extra.empty? s end diff --git a/lib/vool/yield_statement.rb b/lib/vool/yield_statement.rb index 968fa491..d1a6c995 100644 --- a/lib/vool/yield_statement.rb +++ b/lib/vool/yield_statement.rb @@ -64,7 +64,7 @@ module Vool # to call the block (that we know now to be the last arg), # we do a message setup, arg transfer and the a arg_yield (which is similar to dynamic_call) def yield_arg_block(compiler) - arg_index = compiler.get_method.arguments_type.get_length + arg_index = compiler.get_method.arguments_type.get_length - 1 setup = Mom::MessageSetup.new( arg_index ) mom_receive = @receiver.slot_definition(compiler) arg_target = [:message , :next_message , :arguments] diff --git a/test/vool/test_yield_statement.rb b/test/vool/test_yield_statement.rb index 11a024e4..e329803e 100644 --- a/test/vool/test_yield_statement.rb +++ b/test/vool/test_yield_statement.rb @@ -35,7 +35,7 @@ module Vool end def test_setup assert_equal MessageSetup, @ins.next(2).class - assert_equal 3, @ins.next(2).method_source + assert_equal 2, @ins.next(2).method_source end def test_transfer assert_equal ArgumentTransfer, @ins.next(3).class @@ -53,7 +53,7 @@ module Vool end def test_yield assert_equal BlockYield, @ins.next(4).class - assert_equal 3, @ins.next(4).arg_index + assert_equal 2, @ins.next(4).arg_index end end end