first steps to defining specialised slot classes
getting rid of the mess in SlotDefinition (wip)
This commit is contained in:
@ -53,11 +53,11 @@ module Sol
|
||||
assert_equal SlotLoad, @ins.class
|
||||
end
|
||||
def test_left
|
||||
assert_equal SlotDefinition , @ins.left.class
|
||||
assert_equal MessageDefinition , @ins.left.class
|
||||
assert_equal [:return_value] , @ins.left.slots
|
||||
end
|
||||
def test_right
|
||||
assert_equal SlotDefinition , @ins.right.class
|
||||
assert_equal MessageDefinition , @ins.right.class
|
||||
assert_equal [:receiver , :inst] , @ins.right.slots
|
||||
end
|
||||
end
|
||||
|
@ -73,7 +73,7 @@ module SolBlocks
|
||||
def test_assigns_move
|
||||
@ins = compile_main_block( "@a = arg")
|
||||
assert_equal SlotMachine::SlotLoad , @ins.class , @ins
|
||||
assert_equal SlotMachine::SlotDefinition , @ins.right.class , @ins
|
||||
assert_equal SlotMachine::MessageDefinition , @ins.right.class , @ins
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -12,7 +12,7 @@ module SolBlocks
|
||||
assert_equal TruthCheck , @ins.next(3).class
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.next(3).condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.next(3).condition.class , @ins
|
||||
end
|
||||
def test_simple_call
|
||||
assert_equal SimpleCall , @ins.next(2).class
|
||||
|
@ -15,7 +15,7 @@ module SolBlocks
|
||||
assert_equal TruthCheck , @ins.next.class , @ins
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.next.condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.next.condition.class , @ins
|
||||
end
|
||||
def test_array
|
||||
check_array [Label, TruthCheck, SlotLoad, Jump, Label,
|
||||
|
@ -8,7 +8,7 @@ module Sol
|
||||
"self.get_internal_word(0);return"
|
||||
end
|
||||
def test_receiver
|
||||
assert_equal SlotDefinition, @ins.next.receiver.class
|
||||
assert_equal MessageDefinition, @ins.next.receiver.class
|
||||
end
|
||||
def test_arg_one
|
||||
assert_equal SlotLoad, @ins.next(1).arguments[0].class
|
||||
@ -22,6 +22,10 @@ module Sol
|
||||
def test_call_has_right_method
|
||||
assert_equal :get_internal_word, @ins.next(2).method.name
|
||||
end
|
||||
def test_receiver_move
|
||||
assert_equal MessageDefinition, @ins.next.receiver.class
|
||||
end
|
||||
|
||||
end
|
||||
class TestSendSelfImplicitSlotMachine < TestSendSelfSlotMachine
|
||||
|
||||
|
@ -79,7 +79,7 @@ module Sol
|
||||
@compiler = compile_main( "@a = arg;return")
|
||||
@ins = @compiler.slot_instructions.next
|
||||
assert_equal SlotMachine::SlotLoad , @ins.class , @ins
|
||||
assert_equal SlotMachine::SlotDefinition , @ins.right.class , @ins
|
||||
assert_equal SlotMachine::MessageDefinition , @ins.right.class , @ins
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -18,7 +18,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.next.class , @ins
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.next.condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.next.condition.class , @ins
|
||||
end
|
||||
def test_label_after_check
|
||||
assert_equal Label , @ins.next(2).class , @ins
|
||||
|
@ -14,7 +14,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.class , @ins
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.condition.class , @ins
|
||||
end
|
||||
def test_label_after_check
|
||||
assert_equal Label , @ins.next.class , @ins
|
||||
|
@ -14,7 +14,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.class , @ins
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.condition.class , @ins
|
||||
end
|
||||
def test_label_after_check
|
||||
assert_equal Label , @ins.next.class , @ins
|
||||
|
@ -14,7 +14,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.class , @ins
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.condition.class , @ins
|
||||
end
|
||||
def test_label_after_check
|
||||
assert_equal Label , @ins.next.class , @ins
|
||||
|
@ -13,7 +13,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.next(3).class
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.next(3).condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.next(3).condition.class , @ins
|
||||
end
|
||||
def test_hoisted_call
|
||||
assert_equal SimpleCall , @ins.next(2).class
|
||||
|
@ -16,7 +16,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.next.class , @ins
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.next.condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.next.condition.class , @ins
|
||||
end
|
||||
def test_array
|
||||
check_array [Label, TruthCheck, SlotLoad, Jump, Label ,
|
||||
|
@ -14,7 +14,7 @@ module Sol
|
||||
assert_equal TruthCheck , @ins.next(4).class
|
||||
end
|
||||
def test_condition_is_slot
|
||||
assert_equal SlotDefinition , @ins.next(4).condition.class , @ins
|
||||
assert_equal MessageDefinition , @ins.next(4).condition.class , @ins
|
||||
end
|
||||
def test_hoisetd
|
||||
jump = @ins.next(8)
|
||||
|
@ -34,7 +34,7 @@ module Sol
|
||||
assert @ins.left.slots.empty?
|
||||
end
|
||||
def test_check_right
|
||||
assert_equal SlotDefinition, @ins.right.class
|
||||
assert_equal MessageDefinition, @ins.right.class
|
||||
assert_equal :message, @ins.right.known_object
|
||||
assert_equal [:method] , @ins.right.slots
|
||||
end
|
||||
|
Reference in New Issue
Block a user