create a load on the compiler

thus removing the need for << with objects on RegisterValue
This commit is contained in:
2020-03-01 10:52:21 +02:00
parent 95f3eec043
commit 64d860b2bf
7 changed files with 48 additions and 92 deletions

View File

@ -1,13 +1,5 @@
require_relative "helper"
module Risc
class FakeCallableCompiler < CallableCompiler
def initialize(a,c)
super(a,c)
end
def source_name
"luke"
end
end
class TestCallableCompiler < MiniTest::Test
def setup
Parfait.boot!({})
@ -29,28 +21,15 @@ module Risc
def test_const
assert_equal Array , @compiler.constants.class
end
end
class TestFakeCallableCompiler < MiniTest::Test
def setup
Parfait.boot!({})
label = SlotMachine::Label.new("hi","ho")
@compiler = FakeCallableCompiler.new(FakeCallable.new , label)
def test_load_class
object = @compiler.load_object(Parfait.object_space)
assert_equal RegisterValue , object.class
assert object.is_object?
end
def test_ok
assert @compiler
end
def test_current
assert @compiler.current
end
def test_current_label
assert_equal Label , @compiler.current.class
assert_equal "ho" , @compiler.current.name
end
def test_slot
assert @compiler.risc_instructions
end
def test_const
assert_equal Array , @compiler.constants.class
def test_load_code
object = @compiler.load_object(Parfait.object_space)
assert_equal LoadConstant , @compiler.current.class
assert_equal Parfait::Space , @compiler.current.constant.class
end
end
end

View File

@ -17,14 +17,6 @@ module Risc
def test_r0
assert_equal :message , @r0.symbol
end
def test_load_space
move = @r0 << Parfait.object_space
assert_equal LoadConstant , move.class
end
def test_load_symbol
move = @r1 << :puts
assert_equal LoadConstant , move.class
end
def test_load_label
label = Risc::Label.new("HI","ho" , FakeAddress.new(0))
move = @r1 << label

View File

@ -1,9 +1,9 @@
require_relative "../helper"
class FakeBuilder
attr_reader :built
class SuperFakeCompiler
attr_reader :code
def add_code(ins)
@built = ins
@code = ins
end
end
module Risc
@ -24,14 +24,6 @@ module Risc
def test_r0
assert_equal :message , @r0.symbol
end
def test_load_space
move = @r0 << Parfait.object_space
assert_equal LoadConstant , move.class
end
def test_load_symbol
move = @r1 << :puts
assert_equal LoadConstant , move.class
end
def test_load_label
label = Risc::Label.new("HI","ho" , FakeAddress.new(0))
move = @r1 << label
@ -41,16 +33,16 @@ module Risc
transfer = @r0 << @r1
assert_equal Transfer , transfer.class
end
def test_set_builder
reg = @r0.set_builder(FakeBuilder.new)
def test_set_compiler
reg = @r0.set_compiler(SuperFakeCompiler.new)
assert_equal RegisterValue , reg.class
assert reg.builder
assert reg.compiler
end
def test_calls_builder
builder = FakeBuilder.new
@r0.set_builder( builder )
def test_calls_compiler
compiler = SuperFakeCompiler.new
@r0.set_compiler( compiler )
@r0 << @r1
assert_equal Transfer , builder.built.class
assert_equal Transfer , compiler.code.class
end
def test_index_op
message = @r0[:next_message]

View File

@ -1,5 +1,6 @@
require_relative "helper"
module SlotMachine
# need to derive, to overwrite source_name
class FakeCallableCompiler < CallableCompiler
def source_name
"luke"