]> git.vpit.fr Git - perl/modules/Sub-Op.git/commitdiff
Test and document caveats about defining a sub whose name is handled in the current...
authorVincent Pit <vince@profvince.com>
Fri, 8 Jan 2010 18:52:20 +0000 (19:52 +0100)
committerVincent Pit <vince@profvince.com>
Fri, 8 Jan 2010 18:52:20 +0000 (19:52 +0100)
lib/Sub/Op.pm
t/11-existing.t

index 6b421c4be5a17f3f6b3a9a2f91e63386c48f53b5..e44ebcaa8afa9635d934cb09c68cd52b0d586e0c 100644 (file)
@@ -435,6 +435,11 @@ BEGIN { _monkeypatch() }
 
 See the F<t/Sub-Op-LexicalSub> directory that implements a complete example.
 
+=head1 CAVEATS
+
+Preexistent definitions of a sub whose name is handled by L<Sub::Op> are restored at the end of the lexical scope in which the module is used.
+But if you define a sub in the scope of action of L<Sub::Op> with a name that is currently being replaced, the new declaration will be obliterated at the scope end.
+
 =head1 DEPENDENCIES
 
 L<perl> 5.10.
index 2e6c6ca11a424a372f23e54c249e309926e70ad0..6c2e9ba75664d61c3ce226eefbf8c8010cf97872 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 
 use blib 't/Sub-Op-LexicalSub';
 
-use Test::More tests => 2 * ((2 + 2) * 4 + (1 + 2) * 5) + (2 + 2) + 4;
+use Test::More tests => 2 * ((2 + 2) * 4 + (1 + 2) * 5) + 2 * (2 + 2) + 4;
 
 our $call_foo;
 sub foo { ok $call_foo, 'the preexistent foo was called' }
@@ -15,6 +15,9 @@ sub bar () { ok $call_bar, 'the preexistent bar was called' }
 
 sub X () { 1 }
 
+our $call_blech;
+sub blech { ok $call_blech, 'initial blech was called' };
+
 our $called;
 
 {
@@ -59,7 +62,7 @@ our $called;
   }
   $test .= "{\n$code\n}\n";
   $test .= "}\n";
-  for my $name (grep +{ map +($_, 1), qw/foo bar/ }->{ $_ }, @names) {
+  for my $name (grep +{ map +($_, 1), qw/foo bar blech/ }->{ $_ }, @names) {
    $test .= <<"   CHECK_SUB"
     {
      local \$call_$name = 1;
@@ -179,3 +182,11 @@ bar # () #
 is X, 2, 'constant overriding';
 ----
 X # 2 # [ ]
+####
+no warnings 'redefine';
+sub blech { fail 'redefined blech was called' }
+BEGIN { $call_blech = 0 }
+blech 7;
+BEGIN { $call_blech = 1 }
+----
+blech # () # [ 7 ]