On Wed, Mar 26, 2008 at 04:29:05PM +0100, Klaas-Jan Stol wrote: > hi, > > i've been working on an actions file for the NQP compiler, written in > NQP. It can be found in compilers/nqp/bootstrap > to build it, go to the compilers/nqp directory, and type "make boot" > > It seems to work pretty nicely, except that there's some weirdness going on. > The problem seems to be that some invocations to "get_scalar()" get lost. > > Compare the output of ../../parrot nqp.pbc --target=pir > (note that this code doesn't make sense, and won't run. Just notice > the translation for $( 1) ) > > my $past := PAST::Var.new( $(1), :name('x'), :scope('lexical') ); > > .namespace > .sub "_block10" > get_hll_global $P11, ["PAST"], "Var" > new $P12, "Integer" > assign $P12, 1 > $P13 = $P12."get_scalar"() > $P14 = $P11."new"($P13, "x" :named("name"), "lexical" :named("scope")) > .lex "$past", $P14 > .return ($P14) > .end > > with ../../parrot bootstrap/nqp.pbc --target=pir: > > my $past := PAST::Var.new( $(1), :name('x'), :scope('lexical') ); > > .namespace > .sub "_block10" > get_hll_global $P11, ["PAST"], "Var" > $P12 = $P11."new"(1, "x" :named("name"), "lexical" :named("scope")) > .lex "$past", $P12 > .return ($P12) > .end > > > So, the "get_scalar()" call on "1" is removed. > Am I trying to do something impossible?
Interesting bug. I'd look to see how the self-hosted nqp version is handling the $(...) operation. Pm