summaryrefslogtreecommitdiff
path: root/lib/NEXT
diff options
context:
space:
mode:
Diffstat (limited to 'lib/NEXT')
-rw-r--r--lib/NEXT/Changes4
-rw-r--r--lib/NEXT/README11
-rw-r--r--lib/NEXT/t/dynamically_scoped_regex_vars.t50
3 files changed, 54 insertions, 11 deletions
diff --git a/lib/NEXT/Changes b/lib/NEXT/Changes
index 6888015705..b691d25a28 100644
--- a/lib/NEXT/Changes
+++ b/lib/NEXT/Changes
@@ -1,5 +1,9 @@
Revision history for Perl extension NEXT.pm.
+0.64 Mon Jun 8 14:36:00 2009
+ - Fixed overwriting dynamically scoped regex vars (Norbert Buchmuller,
+ Closes RT#36956).
+
0.63 Fri Apr 10 16:52:44 2009
- Specify plans for all tests (Jarkko Hietaniemi). Merged from blead
perl (Florian Ragwitz).
diff --git a/lib/NEXT/README b/lib/NEXT/README
index a60aae0bc3..af8b5624ae 100644
--- a/lib/NEXT/README
+++ b/lib/NEXT/README
@@ -50,17 +50,6 @@ COPYRIGHT
==============================================================================
-CHANGES IN VERSION 0.60
-
-
- - Re-re-re-fixed NEXT::UNSEEN bug under diamond inheritance
- (Note to self: don't code whilst on vacation!)
-
- - Implemented and documented EVERY functionality
-
-
-==============================================================================
-
AVAILABILITY
NEXT has been uploaded to the CPAN
diff --git a/lib/NEXT/t/dynamically_scoped_regex_vars.t b/lib/NEXT/t/dynamically_scoped_regex_vars.t
new file mode 100644
index 0000000000..2d209e0e4c
--- /dev/null
+++ b/lib/NEXT/t/dynamically_scoped_regex_vars.t
@@ -0,0 +1,50 @@
+use Test::More tests => 7;
+
+BEGIN {
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = qw(../lib);
+ }
+}
+
+BEGIN { use_ok('NEXT') };
+
+package A;
+use base qw(B);
+use NEXT;
+sub test_next { shift->NEXT::test_next(@_); }
+sub test_next_distinct { shift->NEXT::DISTINCT::test_next_distinct(@_); }
+sub test_next_actual { shift->NEXT::ACTUAL::test_next_actual(@_); }
+sub test_next_actual_distinct { shift->NEXT::ACTUAL::DISTINCT::test_next_actual_distinct(@_); }
+sub test_every { shift->EVERY::test_every(@_); }
+sub test_every_last { shift->EVERY::LAST::test_every_last(@_); }
+
+package B;
+sub test_next { $_[1]; }
+sub test_next_distinct { $_[1]; }
+sub test_next_actual { $_[1]; }
+sub test_next_actual_distinct { $_[1]; }
+sub test_every { $_[1]; }
+sub test_every_last { $_[1]; }
+
+package main;
+
+my $foo = bless {}, 'A';
+
+"42" =~ /(.*)/;
+is($foo->test_next($&), $&, "The value of '\$&' was not overwritten in NEXT.");
+
+"42" =~ /(.*)/;
+is($foo->test_next_distinct($&), $&, "The value of '\$&' was not overwritten in NEXT::DISTINCT.");
+
+"42" =~ /(.*)/;
+is($foo->test_next_actual($&), $&, "The value of '\$&' was not overwritten in NEXT::ACTUAL.");
+
+"42" =~ /(.*)/;
+is($foo->test_next_actual_distinct($&), $&, "The value of '\$&' was not overwritten in NEXT::ACTUAL::DISTINCT.");
+
+"42" =~ /(.*)/;
+is($foo->test_every($&)->{'B::test_every'}, $&, "The value of '\$&' was not overwritten in EVERY.");
+
+"42" =~ /(.*)/;
+is($foo->test_every_last($&)->{'B::test_every_last'}, $&, "The value of '\$&' was not overwritten in EVERY::LAST.");