On Thu, Jan 31, 2008 at 03:05:17AM -0800, Klaas-Jan Stol wrote:
> # New Ticket Created by  Klaas-Jan Stol 
> # Please include the string:  [perl #50424]
> # in the subject line of all future correspondence about this issue. 
> # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=50424 >
> 
> as far as I could see, it is not allowed to create empty PAST::Stmts nodes.
> (I might have done something else wrong, but I could not find any other
> reason).
> 
> If such a node is left empty, then incorrect PIR is generated:
> 
> "set $P, "
> 
> Note the missing second operand.

Actually, the problem isn't with the empty PAST::Stmts node but
rather with the parent node (e.g., an 'if' PAST::Op node) wanting
a result value from the PAST::Stmts node and getting an empty
string.

I can see two solutions:
(1) make the parent nodes such as PAST::Op 'if' a little smarter 
    so that they know what to do when the child node doesn't have
    a result value
(2) when an empty PAST::Stmts node is requested to provide a return
    value, have it generate a null PMC as the result

#1 will provide slightly more optimal code, because we won't be
generating null values that ultimately don't get used.  #2 will
cause things to "always work" as far as the PIR is concerned, but make 
it harder to produce the optimal code that #1 can generate.

Pm

Reply via email to