move type resolution to compiler
from risc_value. also unite mock compilers
This commit is contained in:
@ -1,21 +1,6 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Mom
|
||||
class CompilerMock
|
||||
# resolve a symbol to a type. Allowed symbols are :frame , :receiver and arguments
|
||||
# which return the respective types, otherwise nil
|
||||
def resolve_type( name )
|
||||
return nil
|
||||
end
|
||||
def use_reg( type )
|
||||
Risc.tmp_reg(type )
|
||||
end
|
||||
def reset_regs
|
||||
|
||||
end
|
||||
def add_constant(c)
|
||||
end
|
||||
end
|
||||
class InstructionMock < Instruction
|
||||
end
|
||||
end
|
||||
|
@ -5,7 +5,7 @@ module Mom
|
||||
class TestSlotDefinitionConstant < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!
|
||||
@compiler = CompilerMock.new
|
||||
@compiler = Risc::FakeCompiler.new
|
||||
@definition = SlotDefinition.new(StringConstant.new("hi") , [])
|
||||
@instruction = @definition.to_register(@compiler , InstructionMock.new)
|
||||
end
|
||||
|
@ -4,7 +4,7 @@ module Mom
|
||||
class TestSlotDefinitionKnown1 < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!
|
||||
@compiler = CompilerMock.new
|
||||
@compiler = Risc::FakeCompiler.new
|
||||
@definition = SlotDefinition.new(:message , :caller)
|
||||
@instruction = @definition.to_register(@compiler , InstructionMock.new)
|
||||
end
|
||||
|
@ -4,7 +4,7 @@ module Mom
|
||||
class TestSlotDefinitionKnown2 < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!
|
||||
@compiler = CompilerMock.new
|
||||
@compiler = Risc::FakeCompiler.new
|
||||
@definition = SlotDefinition.new(:message , [:caller , :type])
|
||||
@instruction = @definition.to_register(@compiler , InstructionMock.new)
|
||||
end
|
||||
|
@ -11,11 +11,11 @@ module Mom
|
||||
end
|
||||
def test_fail_on_right
|
||||
@load = SlotLoad.new( [:message, :caller] , [:receiver,:type] )
|
||||
assert_raises {@load.to_risc(CompilerMock.new)}
|
||||
assert_raises {@load.to_risc(Risc::FakeCompiler.new)}
|
||||
end
|
||||
def test_fail_on_left_long
|
||||
@load = SlotLoad.new( [:message, :caller , :type] , [:receiver,:type] )
|
||||
assert_raises {@load.to_risc(CompilerMock.new)}
|
||||
assert_raises {@load.to_risc(Risc::FakeCompiler.new)}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -6,7 +6,7 @@ module Mom
|
||||
def setup
|
||||
Parfait.boot!
|
||||
@load = SlotLoad.new( [:message, :caller] , [:message,:type] )
|
||||
@compiler = CompilerMock.new
|
||||
@compiler = Risc::FakeCompiler.new
|
||||
@instruction = @load.to_risc(@compiler)
|
||||
end
|
||||
|
||||
|
@ -6,7 +6,7 @@ module Mom
|
||||
def setup
|
||||
Parfait.boot!
|
||||
@load = SlotLoad.new( [:message, :caller, :type] , [:message, :caller , :type] )
|
||||
@compiler = CompilerMock.new
|
||||
@compiler = Risc::FakeCompiler.new
|
||||
@instruction = @load.to_risc(@compiler)
|
||||
end
|
||||
|
||||
|
@ -1,15 +1,6 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Risc
|
||||
class FakeCompiler
|
||||
def resolve_type(name)
|
||||
Parfait.object_space.types.values.first
|
||||
end
|
||||
def use_reg(type)
|
||||
RegisterValue.new(:r1 , type)
|
||||
end
|
||||
end
|
||||
|
||||
class TestRegisterValue < MiniTest::Test
|
||||
|
||||
def setup
|
||||
@ -25,13 +16,6 @@ module Risc
|
||||
def test_resolves_index_fail
|
||||
assert_raises {@r0.resolve_index(:something)}
|
||||
end
|
||||
def test_revolve_new_type_0
|
||||
assert_equal :Message, @r0.resolve_new_type(:caller , @compiler)
|
||||
end
|
||||
def test_revolve_new_type_1
|
||||
# returned by FakeCompiler , not real
|
||||
assert_equal "BinaryCode_Type", @r1.resolve_new_type(:receiver , @compiler).name
|
||||
end
|
||||
def test_get_new_left_0
|
||||
assert_equal RegisterValue , @r0.get_new_left(:caller , @compiler).class
|
||||
end
|
||||
|
17
test/support/fake_compiler.rb
Normal file
17
test/support/fake_compiler.rb
Normal file
@ -0,0 +1,17 @@
|
||||
module Risc
|
||||
class FakeCompiler
|
||||
def slot_type(slot,type)
|
||||
type.type_for(slot)
|
||||
end
|
||||
def resolve_type(name)
|
||||
Parfait.object_space.types.values.first
|
||||
end
|
||||
def use_reg(type)
|
||||
RegisterValue.new(:r1 , type)
|
||||
end
|
||||
def reset_regs
|
||||
end
|
||||
def add_constant(c)
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user