I've spent many hours today on various false starts regarding ITypes, trying to do clever dispatches based on Parrot's PerlArray/PerlScalar/PerlHash PMC mode. Sadly, I have come to the realization that the semantic for ITypes seems to be exactly the same as the Perl 5 model, their only difference being the possibility of multiple mix-in ITypes on the same variable, as well as the auto-referencing bit.
However, with tremendous amount of help from Stevan in forms of tests, I have at least got the value part working, so this small example from asavige runs correctly now. Yay!
Also fixed is the
undef $x bug (
undef was not declared as
is rw), reported and tested by ninereason; he have also added various lvalue related tests.
Stevan reported that in
sub foo (+$x = 3, +$y = 4), the comma is parsed as part of the default for
$x. I'm not sure how to deal with it rigorously, so I have simply removed
, from the parser for default parameter values.
Stevan also asked for
is rw support in parameter declarations, which I promptly implemented. Now he wants
is copy... Any takers?
The trailing comma (and redundant comma anywhere) is finally parsed correctly. Building on that, I have implemented this idea of Larry's:
@a = expr(); # scalar context to expr()
@a[0,] = expr(); # list context to expr()
Ovid suggested (and luqui confirmed) that
$_, and I implemented as such. Shortly after, I was surprised to see that Damian updated Perl6::Say to do the same thing, which marks his first upload in a year. Welcome back, Damian!
Gruber sent in a patch to make
$*PID work on *nix systems; I gladly applied it. gaal committed a few tests for the yet-unimplemented
Two more days for Pugs work until the scheduled 6.2.0 release. Stay tuned!