diff options
-rwxr-xr-x | t/op/eval.t | 11 | ||||
-rw-r--r-- | toke.c | 6 |
2 files changed, 13 insertions, 4 deletions
diff --git a/t/op/eval.t b/t/op/eval.t index 57e39dd928..2eb9b1e9ed 100755 --- a/t/op/eval.t +++ b/t/op/eval.t @@ -5,7 +5,7 @@ BEGIN { @INC = '../lib'; } -print "1..94\n"; +print "1..95\n"; eval 'print "ok 1\n";'; @@ -455,7 +455,14 @@ print "ok $test - eval and last\n"; $test++; local $@ = "foo"; eval undef; print "not " unless $@ eq ""; - print "ok $test # eval unef \n"; $test++; + print "ok $test # eval undef \n"; $test++; +} + +{ + no warnings; + eval "/ /a;"; + print "not " unless $@ =~ /^syntax error/; + print "ok $test # eval syntax error, no warnings \n"; $test++; } @@ -12540,8 +12540,10 @@ Perl_yyerror(pTHX_ const char *s) (int)PL_multi_open,(int)PL_multi_close,(IV)PL_multi_start); PL_multi_end = 0; } - if (PL_in_eval & EVAL_WARNONLY && ckWARN_d(WARN_SYNTAX)) - Perl_warner(aTHX_ packWARN(WARN_SYNTAX), "%"SVf, SVfARG(msg)); + if (PL_in_eval & EVAL_WARNONLY) { + if (ckWARN_d(WARN_SYNTAX)) + Perl_warner(aTHX_ packWARN(WARN_SYNTAX), "%"SVf, SVfARG(msg)); + } else qerror(msg); if (PL_error_count >= 10) { |