summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xt/op/eval.t11
-rw-r--r--toke.c6
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++;
}
diff --git a/toke.c b/toke.c
index e84e18cadd..ead6806bf0 100644
--- a/toke.c
+++ b/toke.c
@@ -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) {