fglock / Perlito

"Perlito" Perl programming language compiler
http://fglock.github.io/Perlito/
Other
414 stars 47 forks source link

Perlito java dies with Not an ARRAY reference at perlito5.pl line 14819. #38

Closed potyl closed 8 years ago

potyl commented 8 years ago

If I run the following command:

perl perlito5.pl -Isrc5/lib -Cjava sample.pl  > sample.java

Perlito dies with:

Not an ARRAY reference at perlito5.pl line 14819.

That line of code is

                    package Perlito5::AST::Call;
                    {
                        sub Perlito5::AST::Call::get_captures {
                            my $self = shift;
                            my @var;
                            ref($self->{'method'}) && push(@var, $self->{'method'}->get_captures());
                            push(@var, $self->{'invocant'}->get_captures());
                            $self->{'arguments'} && push(@var, map {
                                $_->get_captures()  # <--- *** HERE ***
                            } @{$self->{'arguments'}});
                            return @var
                        }
                    }

Sample input file:

package foo;

sub parse {

    my ($var) = (
        {  'Booking Android Apps Universal' => [ 1 ] }
    );

    return $var->{'Booking Android Apps Universal'}[0];
}

1;
potyl commented 8 years ago

I find out that the following workaround doesn't give a compilation error:

package foo;

sub parse {

    my ($var) = (
        {  'Booking Android Apps Universal' => [ 1 ] }
    );

    my %var = $var;
    return $var{'Booking Android Apps Universal'}[0];
}

1;