Erps, macro.t had a slight bug. The included version of macro.t fixes it.
--Jeff
<[EMAIL PROTECTED]>
#! perl -w
use Parrot::Test tests => 7;
output_is( <<'CODE', <<OUTPUT, "macro, zero parameters" );
answer macro
print 42
print "\n"
endm
answer
end
CODE
42
OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one unused parameter, literal term" );
answer macro A
print 42
endm
answer 42
print "\n"
end
CODE
42
OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one unused parameter, register term" );
answer macro A
print 42
endm
set I0, 43
answer I0
print "\n"
end
CODE
42
OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one used parameter, literal" );
answer macro A
print A
endm
answer 42
print "\n"
end
CODE
42
OUTPUT
#
# Can't test because I can't capture errors
#
#output_is( <<'CODE', <<OUTPUT, "macro, one parameter in call, not in def" );
#answer macro
# print A
#endm
# answer 42
# print "\n"
#end
#CODE
#42
#OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one used parameter, register" );
answer macro A
print A
endm
set I0,42
answer I0
print "\n"
end
CODE
42
OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one used parameter, called twice" );
answer macro A
print A
print "\n"
inc A
endm
set I0,42
answer I0
answer I0
end
CODE
42
43
OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one used parameter, label" );
answer macro A
ne I0,42,$done
print A
print "\n"
$done:
endm
set I0,42
answer I0
end
CODE
42
OUTPUT
output_is( <<'CODE', <<OUTPUT, "macro, one used parameter run twice, label" );
answer macro A
ne I0,42,$done
print A
print "\n"
$done:
endm
set I0,42
answer I0
answer I0
end
CODE
42
42
OUTPUT