require_relative "../helper" module Risc class TestBuilderInfer < MiniTest::Test def setup Parfait.boot!(Parfait.default_test_options) Risc.boot! method = FakeCallable.new @compiler = Risc::MethodCompiler.new( method, SlotMachine::Label.new( "source_name", "return_label") ) @builder = @compiler.builder(method) end def test_list assert_equal :List , @builder.infer_type(:list).class_name end def test_name assert_equal :Word , @builder.infer_type(:name).class_name end def test_word assert_equal :Word , @builder.infer_type(:word).class_name end def test_caller assert_equal :Message , @builder.infer_type(:caller).class_name end def test_caller_reg assert_equal :Message , @builder.infer_type(:caller_reg).class_name end def test_define_twice @builder.caller_reg! assert_raises{ @builder.caller_reg! } end def test_define_conditionally_first assert_equal :r1 , @builder.caller_reg?.symbol end def test_define_conditionally_again first = @builder.caller_reg! assert_equal first , @builder.caller_reg? end def test_caller_tmp assert_equal :Message , @builder.infer_type(:caller_tmp).class_name end def test_caller_obj assert_equal :Message , @builder.infer_type(:caller_obj).class_name end def test_caller_const assert_equal :Message , @builder.infer_type(:caller_const).class_name end def test_caller_self assert_equal :Message , @builder.infer_type(:caller_self).class_name end def test_caller_1 assert_equal :Message , @builder.infer_type(:caller_1).class_name end def test_message assert_equal :Message , @builder.infer_type(:message).class_name end def test_next_message assert_equal :Message , @builder.infer_type(:next_message).class_name end end end