As mentioned earlier today, I've rewritten the guts of the argument passing code. It's now one function 'process_args', which is mostly a state machine with currently ~12 cases that handles the various states or should eventually handle.

Anyway, previous functionality and named arguments passing is working with it already, so far as tested before. Missing is still handling of optional named params, as well as all the error checking with named arguments/params. But with the new state machine all these checks are just filling a case statement which is partly done with a TODO comment already.

The code passes all core and languages tests except the already mentioned:

  lua/t/function.t    1   256     2    1  50.00%

therefore I've just checked it in as r11276.

A lot more tests are needed for all the variations of arg passing. Contributions welcome. See t/op/calling.t (labeled 'named \d' for existing PASM tests) or t/op/cc_params.t (for a more automated test generation - thanks particle).

And Alberto (ambs) has started to hack imcc.y for the necessary/proposed PIR support.

leo

Reply via email to