Commit Graph

2736 Commits

Author SHA1 Message Date
f620f0fd74 last test fixed, ruby layer complete 2018-07-20 21:27:55 +03:00
b00b0cf064 fixed some interpreter tests
hoisting is slightly more simple and that adds a couple insstructions
2018-07-20 21:00:47 +03:00
6022aa4dab introduce ruby variable and remove ct_type
cleaner oo
2018-07-20 20:53:35 +03:00
9548440949 remove old tests
those normalisation tests are now to_vool tests
2018-07-20 20:10:12 +03:00
235853ab2d first run at ruby block to_vool
leaving the parser structure in the ruby layer,
but adopting the constant approach in vool
2018-07-20 20:07:15 +03:00
0238874c20 fx ruby send args 2018-07-20 20:06:14 +03:00
d03592dfb1 fix ruby return 2018-07-20 20:05:32 +03:00
172327f045 fix assignments
which was letting ruby instances through
also rename the doubious copy
2018-07-20 18:13:58 +03:00
6a58a71c0a fix while.to_vool
sanitize normalizer on the way
- return ruby, let caller to_vool
- return single statement, not single? statements
2018-07-20 17:51:17 +03:00
9b8bd57db4 fix if to_vool
and add (simple) hoisting tests
2018-07-20 17:30:08 +03:00
98788b52d3 fix ruby variables 2018-07-20 14:22:26 +03:00
f4402ba30f fix local assignment
was missing a method that got lost in copy/paste
also renaming to get guard to pick up tests
2018-07-20 14:16:29 +03:00
d14eca3e70 fix assignments to_vool 2018-07-20 13:43:37 +03:00
e536a7ac88 fixing send to_vool
was hoisting unneccessarily, because not respecting basics
2018-07-20 13:15:16 +03:00
7b02feae7a fix ruby send statement
remove ruby expression
2018-07-20 10:05:11 +03:00
8cd9818f64 fix ruby return statement
assignment and normalizer on the way
2018-07-20 09:07:09 +03:00
a5168ef818 fix ruby class statement 2018-07-19 21:44:48 +03:00
238f09b5ad fix method to_vool 2018-07-19 21:36:28 +03:00
7b4a0126f7 add a helper to get the vool equivalent of a ruby class 2018-07-19 20:59:15 +03:00
77be0d3f73 fixing the ruby creation tests 2018-07-19 16:30:36 +03:00
f728725b1a change the ruby block to be like the ruby block
ie modelled like the ast outputs it
2018-07-19 16:22:44 +03:00
61225c2f20 ifx most of the conversion
well . . it's still converting to ruby, minor detail
2018-07-19 14:59:10 +03:00
ae3d64eb53 moved all the normalize stuff over to the ruby layer
Which is how it should have been from the start
2018-07-19 14:47:29 +03:00
38350dd198 start a new ruby layer to do the to_vool conversion
the "normalization" is getting more and more complicated and is not tested
And it seems i really don't like working with the untyped ast
2018-07-19 14:46:51 +03:00
f624e38dbb finish assign test
start ifs
2018-07-18 13:57:38 +03:00
3c1137066b more block tests reveal a compiler bug
copy/paste, args twice in switch
2018-07-18 10:13:19 +03:00
ff8b95f21a get block resolution to use the extra
block_compiler puts in the extra, that we get out when resolving the type
Thus block args work, though only by assuming direct call
2018-07-17 10:37:33 +03:00
280ea8a8c4 remove resolve_to_register
which was, quite simply, from another era when more than message was pinned
2018-07-16 19:19:49 +03:00
73645e1507 rename resolve_type to infer_type
as we go from a symbol to a type, more or less by convention
also remove the compiler from there and other not used cases
No tests change, good refactoring
2018-07-16 19:17:57 +03:00
4cc04787e9 remove Risc.resolve_to_index
mostly by using better typed registers,
which cleans up the code where it was used
2018-07-16 19:00:04 +03:00
29363e7f72 split compilers resolve_type into the three possibilities
cleaner code, though temporary it shifts some dirt
into the index method. up next
2018-07-16 12:03:40 +03:00
3343017dba move type resolution to compiler
from risc_value.
also unite mock compilers
2018-07-16 11:46:18 +03:00
e3673e579c pass extra info into register init, not just value
extra info may be hash, maybe just type info
2018-07-16 11:23:09 +03:00
b410538d07 uups, forgot to check that in 2018-07-15 17:44:26 +03:00
3bc85805a4 must pass registers to slot_to_reg and reg_to_slot
as they are typed, those functions don't resolve on Risc, but the register type
miscother changes from previous commits
2018-07-15 16:30:50 +03:00
f31d22d901 use real type in register, not symbol
this has some more consequences, upcoming
2018-07-15 15:16:12 +03:00
a71a6d34fb use message reg not message
for upcoming change
2018-07-15 15:14:38 +03:00
69385c863f some more addresses 2018-07-15 15:13:25 +03:00
eaeea29e38 helper erro handling 2018-07-15 12:32:02 +03:00
648ec772ec direct index access helper for type 2018-07-15 12:30:50 +03:00
ab8b574e9c also recode the slot_definition resolution
much like in the slot_load. In fact suspiciously so.
wip, as also changing to storing type (not sym) in reg
2018-07-14 22:39:00 +03:00
58c7294abd finish the loop in slot_load
thus rewrite of that old nested if thing is done
2018-07-14 11:04:21 +03:00
581f457119 type helper for class name 2018-07-14 11:03:16 +03:00
61c840c023 start to move slot_load code to register_value
the iea is to iterate through register_values while reducing the slot_load to a number of Slot_to_regs
wip
2018-07-13 21:56:55 +03:00
21009b0e9b delegate resolve to compiler when needed
and forgotten space test
2018-07-13 21:55:27 +03:00
a095515b0e new get_type_by_class_name helper for space
sorely needed, with 36 occurences replaced
2018-07-13 21:50:40 +03:00
27a142f2a3 use compiler base class for blocks too
can now go to mom level and add
test harness still looks overly complicated, but works
first block tests at mom level
2018-07-10 22:03:32 +03:00
a3e758357c extract base class from method_compiler
to be used for blocks too
2018-07-10 22:02:11 +03:00
edea9ac080 makeing the method of the compiler more or less private
in preparation for using the same code for bocks
2018-07-09 19:32:17 +03:00
63b55f2aa4 refactor a bit for upcoming delegations
must get method to be private
more tell, not ask
2018-07-09 18:16:51 +03:00