# HG changeset patch # User sergey # Date 1353274138 -14400 # Node ID 34a3f8668b58a89c3dcb06b37a8c27a202de90a8 # Parent 9f394b27dccfed3419ae7ecb82b1bbd32a587674 fixed IMPL::require IMPL::declare diff -r 9f394b27dccf -r 34a3f8668b58 Lib/IMPL/declare.pm --- a/Lib/IMPL/declare.pm Fri Nov 16 16:44:16 2012 +0400 +++ b/Lib/IMPL/declare.pm Mon Nov 19 01:28:58 2012 +0400 @@ -25,6 +25,7 @@ my $aliases = $args->{require} || {}; + $IMPL::require::PENDING{$caller} = 1; _trace("declare $caller"); $IMPL::require::level++; @@ -106,6 +107,7 @@ } $IMPL::require::level--; + delete $IMPL::require::PENDING{$caller}; } 1; diff -r 9f394b27dccf -r 34a3f8668b58 Lib/IMPL/require.pm --- a/Lib/IMPL/require.pm Fri Nov 16 16:44:16 2012 +0400 +++ b/Lib/IMPL/require.pm Mon Nov 19 01:28:58 2012 +0400 @@ -17,6 +17,8 @@ my $caller = caller; + $PENDING{$caller} = 1; + no strict 'refs'; while( my ($alias, $class) = each %$aliases ) { @@ -31,6 +33,8 @@ $level--; } + + delete $PENDING{$caller}; } sub _require { @@ -38,7 +42,7 @@ if ( not $class =~ s/^-// ) { ( my $file = $class ) =~ s/::|'/\//g; - _trace("already pending") and return + _trace("already pending") and return $class if $PENDING{$class}; $PENDING{$class} = 1; _trace("loading $file.pm");