Skip to content

Commit

Permalink
Perlito5 - parser - scope fix
Browse files Browse the repository at this point in the history
  • Loading branch information
fglock committed Jun 30, 2015
1 parent 0c08bbc commit 0628f61
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
4 changes: 2 additions & 2 deletions perlito5.pl
Expand Up @@ -4379,14 +4379,14 @@ sub Perlito5::Grammar::Scope::lookup_variable {
$var->{'namespace'} && return $var;
$var->{'_decl'} && return $var;
$var->{'sigil'} eq '&' && return $var;
my $look = lookup_variable_inner($var, $scope);
$look && return $look;
my $c = substr($var->{'name'}, 0, 1);
if ($Special_var{$var->{'name'}} || $c lt 'A' || ($c gt 'Z' && $c lt 'a') || $c gt 'z') {
$var->{'_decl'} = 'our';
$var->{'_namespace'} = 'main';
return $var
}
my $look = lookup_variable_inner($var, $scope);
$look && return $look;
if ($var->{'sigil'} eq '$' && ($var->{'name'} eq 'a' || $var->{'name'} eq 'b')) {
$var->{'_decl'} = 'our';
$var->{'_namespace'} = $Perlito5::PKG_NAME;
Expand Down
6 changes: 3 additions & 3 deletions src5/lib/Perlito5/Grammar/Scope.pm
Expand Up @@ -42,6 +42,9 @@ sub lookup_variable {
return $var if $var->{_decl}; # predeclared variable
return $var if $var->{sigil} eq '&'; # &sub - TODO

my $look = lookup_variable_inner($var, $scope);
return $look if $look;

my $c = substr($var->{name}, 0, 1);
if ( $Special_var{ $var->{name} } || $c lt 'A' || ($c gt 'Z' && $c lt 'a') || $c gt 'z') {
# special variable
Expand All @@ -50,9 +53,6 @@ sub lookup_variable {
return $var;
}

my $look = lookup_variable_inner($var, $scope);
return $look if $look;

if ( $var->{sigil} eq '$' && ( $var->{name} eq 'a' || $var->{name} eq 'b' ) ) {
# special variables $a and $b
$var->{_decl} = 'our';
Expand Down

0 comments on commit 0628f61

Please sign in to comment.