# New Ticket Created by Patrick R. Michaud
# Please include the string: [perl #59374]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=59374 >
Summary: pmc2c produces incorrect code for returning negative
integer constants, as in RETURN(INTVAL -1)
Longer description: In the set_readline_interactive method of the
ParrotIO PMC line 200 reads
RETURN(INTVAL -1);
This is supposed to return a value of -1 when the method is called
and the readline library is not present. However, when run this is
actually returning 1 (readline is not present in the example below):
$ cat z.pir
.sub main :main
.local pmc stdin
stdin = getstdin
$I0 = stdin.'set_readline_interactive'(1)
say $I0
.end
$ ./parrot z.pir
1
Looking at the code generated in src/pmc/parrotio.c (line 775 on my
system), we see:
/*BEGIN RETURN INTVAL -1 */
/*BEGIN GENERATED ACCESSORS */
#line 777 "./src/pmc/parrotio.pmc"
CTX_REG_INT(_ctx, 0) = 1;
I think somewhere the minus sign is being lost when the code is being
generated. This also occurs earlier in the method for a couple
of instances of RETURN(INTVAL -2):
/*BEGIN RETURN INTVAL -2 */
/*BEGIN GENERATED ACCESSORS */
#line 722 "./src/pmc/parrotio.pmc"
CTX_REG_INT(_ctx, 0) = 2;
Pm