summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Eval/Closure.pm2
-rw-r--r--t/11-debugger.t23
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/Eval/Closure.pm b/lib/Eval/Closure.pm
index 01e1411..74b64a4 100644
--- a/lib/Eval/Closure.pm
+++ b/lib/Eval/Closure.pm
@@ -106,7 +106,7 @@ sub eval_closure {
$args{source} = _line_directive(@args{qw(line description)})
. $args{source}
- if defined $args{description};
+ if defined $args{description} && !($^P & 0x10);
my ($code, $e) = _clean_eval_closure(@args{qw(source environment)});
diff --git a/t/11-debugger.t b/t/11-debugger.t
new file mode 100644
index 0000000..7b97272
--- /dev/null
+++ b/t/11-debugger.t
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+use Test::Fatal;
+
+BEGIN { $^P |= 0x210 } # PERLDBf_SUBLINE
+
+use Eval::Closure;
+
+unlike(
+ exception {
+ eval_closure(
+ source => 'sub { $bar }',
+ description => 'foo',
+ )
+ },
+ qr/#line/,
+ "#line directive isn't added when debugger is active"
+);
+
+
+done_testing;