From: Leopold Toetsch <[EMAIL PROTECTED]>
Date: Sat, 3 Dec 2005 13:40:31 +0100
On Dec 3, 2005, at 3:54, Bob Rogers wrote:
> In rev 10317, parrot segfaults if the sub named in ":outer" is not
> defined in the current compilation unit. The patch fixes the symptom,
> and adds a test. (But the error message could be improved.)
Thanks, applied - r10320
leo
Excellent; thank you -- and for the other fix especially. But now I
notice that this is what happens if you put the inner sub first:
[EMAIL PROTECTED]> ./parrot lexicals-30-rev.pir
Undefined :outer sub 'foo'.
[EMAIL PROTECTED]>
So, at present, lexical subs must be emitted in preorder. Is this a
bug, a TODO, or a conscious design decision? (I'm hoping for "bug,"
BTW, since it's not mentioned in PDD20 . . . )
Thanks again,
-- Bob
.sub anon :outer(foo)
.param pmc arg
$P0 = find_lex '$n'
# in practice we need copying the arg but as it is passed
# as native int, we already have a fresh pmc
$P0 += arg
.return ($P0)
.end
.sub foo
.param pmc arg
.local pmc n
.lex '$n', n
n = arg
.const .Sub anon = "anon"
$P0 = newclosure anon
.return ($P0)
.end