a subroutine is defined, even if the eval'd string has subsequent
syntax errors. This allows the debugger to single step into these
subroutines.
p4raw-id: //depot/perl@34986
} else {
/* We have already left the scope set up earler thanks to the LEAVE
in doeval(). */
- if (PERLDB_SAVESRC_INVALID) {
+ if (was != PL_breakable_sub_gen /* Some subs defined here. */
+ ? (PERLDB_LINE || PERLDB_SAVESRC)
+ : PERLDB_SAVESRC_INVALID) {
/* Retain the filegv we created. */
} else {
(void)hv_delete(PL_defstash, tmpbuf, len, G_DISCARD);
use strict;
-plan (tests => 57);
+plan (tests => 65);
$^P = 0xA;
is (eval "$name()", "This is $name", "Subroutine was compiled, despite error")
or diag $@;
- my @after = grep { /eval/ } keys %::;
-
- is (@after, 0 + keys %seen,
- "current behaviour is that errors in eval trump subroutine definitions");
-
+ check_retained_lines($prog,
+ 'eval that defines subroutine but has syntax error');
$name++;
}