Fix slot access for constants
Type access is allowed for any object, including constants. Needed for parfait
This commit is contained in:
@ -28,7 +28,9 @@ module Risc
|
||||
end
|
||||
def to_target
|
||||
assert @expect , "No output given"
|
||||
RubyX::RubyXCompiler.new(RubyX.default_test_options).ruby_to_target(as_test_main,:interpreter)
|
||||
compiler = RubyX::RubyXCompiler.new(RubyX.default_test_options)
|
||||
vool = compiler.ruby_to_vool(as_test_main)
|
||||
compiler.to_target(:interpreter)
|
||||
end
|
||||
def produce_main
|
||||
produce_target(:main)
|
||||
|
@ -23,4 +23,31 @@ module Mom
|
||||
assert_equal "[StringConstant]" , @definition.to_s
|
||||
end
|
||||
end
|
||||
class TestSlotDefinitionConstantType < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
@compiler = Risc::FakeCompiler.new
|
||||
@definition = SlotDefinition.new(StringConstant.new("hi") , [:type])
|
||||
@register = @definition.to_register(@compiler , InstructionMock.new)
|
||||
@instruction = @compiler.instructions.first
|
||||
end
|
||||
def test_def_class
|
||||
assert_equal Risc::LoadConstant , @instruction.class
|
||||
end
|
||||
def test_def_register
|
||||
assert_equal :r1 , @instruction.register.symbol
|
||||
end
|
||||
def test_def_const
|
||||
assert_equal "hi" , @instruction.constant.to_string
|
||||
end
|
||||
def test_to_s
|
||||
assert_equal "[StringConstant, type]" , @definition.to_s
|
||||
end
|
||||
def test_def_register2
|
||||
assert_equal :r1 , @compiler.instructions[1].register.symbol
|
||||
end
|
||||
def test_def_next_index
|
||||
assert_equal 0 , @compiler.instructions[1].index
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user