several larger changes came together, bit of cleaning too

- all code must be in functions (which must be in classes).
— changes a fair few tests
— also changes api, as method is not recursive, not passed around
- all state in instance vars in compiler (no accessors)
- class is another such variable, surely more coming
all green again
This commit is contained in:
Torsten Ruger
2015-10-06 00:27:13 +03:00
parent 3d36fd1746
commit f4a4ccb98e
37 changed files with 302 additions and 205 deletions

View File

@ -7,11 +7,11 @@ class CompilerTest < MiniTest::Test
Virtual.machine.boot
end
def check
res = Bosl::Compiler.compile( @expression , Virtual.machine.space.get_main )
res = Bosl::Compiler.compile( @expression )
assert res.is_a?(Virtual::Slot) , "compiler must compile to slot, not #{res.inspect}"
end
def ttest_if_expression
#TODO review constant : all expressions return a slot
#TODO review constant : all expressions return a slot
@expression = s(:if,
s(:condition,
s(:int, 0)),
@ -21,9 +21,12 @@ class CompilerTest < MiniTest::Test
check
end
def test_function_expression
@expression = s(:function, :int, s(:name, :foo),
s(:parameters, s(:parameter, :ref, :x)),
s(:expressions, s(:int, 5)))
@expression = s(:class, :Foo,
s(:derives, :Object),
s(:expressions,
s(:function, :int, s(:name, :foo),
s(:parameters, s(:parameter, :ref, :x)),
s(:expressions, s(:int, 5)))))
check
end
end