tagged release 0.6.4
[parrot.git] / t / compilers / pct / post.t
blobb4b5d20c91712198e0b38b9b310de1dbcb8c3876
1 #! perl
3 # Copyright (C) 2006-2008, The Perl Foundation.
4 # $Id$
6 use strict;
7 use warnings;
8 use lib qw(t . lib ../lib ../../lib ../../../lib);
9 use Parrot::Test tests => 6;
11 foreach my $name (qw(Op Ops Sub Label)) {
12     my $module = "POST::$name";
13     my $code   = <<'CODE'
14 .sub _main
15     load_bytecode 'PCT.pbc'
16     load_bytecode 'library/dumper.pbc'
17     .local pmc node
18     .local pmc node2
19 CODE
20         ;
22     $code .= "    node = new '$module'\n";
23     $code .= "    node2 = new '$module'\n";
24     $code .= <<'CODE'
25     node.'init'('name' => 'foo')
26     node2.'init'('name' => 'bar')
27     node.'push'(node2)
29     $P1 = node.'name'()
30     say $P1
31     "_dumper"(node, "ost")
32     .return ()
33 .end
34 CODE
35         ;
37     pir_output_is( $code, <<"OUT", "set attributes for $module via method" );
38 foo
39 "ost" => PMC '$module'  {
40     <name> => "foo"
41     [0] => PMC '$module'  {
42         <name> => "bar"
43     }
45 OUT
49 pir_output_is( <<'CODE', <<'OUT', 'dump POST::Op node in visual format' );
50 .sub _main
51     load_bytecode 'PCT.pbc'
52     load_bytecode 'library/dumper.pbc'
53     .local pmc node
54     node = new 'POST::Op'
55     node.'pirop'('add')
56     node.'result'('$P1')
57     node.'inline'('%r=1')
58     "_dumper"(node, "ost")
59     .return ()
60 .end
61 CODE
62 "ost" => PMC 'POST::Op'  {
63     <pirop> => "add"
64     <result> => "$P1"
65     <inline> => "%r=1"
67 OUT
69 pir_output_is( <<'CODE', <<'OUT', 'dump POST::Label node in visual format' );
70 .sub _main
71     load_bytecode 'PCT.pbc'
72     load_bytecode 'library/dumper.pbc'
73     .local pmc node
74     node = new 'POST::Label'
75     node.'name'('labeler')
76     "_dumper"(node, "ost")
77     .return ()
78 .end
79 CODE
80 "ost" => PMC 'POST::Label'  {
81     <name> => "labeler"
83 OUT
85 # Local Variables:
86 #   mode: cperl
87 #   cperl-indent-level: 4
88 #   fill-column: 100
89 # End:
90 # vim: expandtab shiftwidth=4: