This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl.h doesn't need special cases for x2p, as x2p doesn't include it.
[perl5.git] / t / op / eval.t
index bceffcc..5cd7f4c 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan(tests => 119);
+plan(tests => 125);
 
 eval 'pass();';
 
@@ -25,6 +25,11 @@ like($@, qr/line 2/);
 print eval '$foo = /'; # this tests for a call through fatal()
 like($@, qr/Search/);
 
+is scalar(eval '++'), undef, 'eval syntax error in scalar context';
+is scalar(eval 'die'), undef, 'eval run-time error in scalar context';
+is +()=eval '++', 0, 'eval syntax error in list context';
+is +()=eval 'die', 0, 'eval run-time error in list context';
+
 is(eval '"ok 7\n";', "ok 7\n");
 
 $foo = 5;
@@ -568,6 +573,7 @@ for my $k (!0) {
     "string eval leaves readonly lexicals readonly [perl #19135]";
 }
 
+# [perl #68750]
 fresh_perl_is(<<'EOP', "ok\nok\nok\n", undef, 'eval clears %^H');
   BEGIN {
     require re; re->import('/x'); # should only affect surrounding scope
@@ -579,3 +585,14 @@ fresh_perl_is(<<'EOP', "ok\nok\nok\n", undef, 'eval clears %^H');
   }
   print "ab" =~ /a b/ ? "ok\n" : "nokay\n";
 EOP
+
+# [perl #70151]
+{
+    BEGIN { eval 'require re; import re "/x"' }
+    ok "ab" =~ /a b/, 'eval does not localise %^H at run time';
+}
+
+# The fix for perl #70151 caused an assertion failure that broke
+# SNMP::Trapinfo, when toke.c finds no syntax errors but perly.y fails.
+eval(q|""!=!~//|);
+pass("phew! dodged the assertion after a parsing (not lexing) error");