From 75e6988b5ef9fd1dd384d0bf3a74e50178683d17 Mon Sep 17 00:00:00 2001 From: Shawn M Moore Date: Wed, 26 Jan 2011 22:19:50 -0500 Subject: Add a line option for controlling that bit as well --- lib/Eval/Closure.pm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/Eval/Closure.pm b/lib/Eval/Closure.pm index 6a1f41e..0bb553e 100644 --- a/lib/Eval/Closure.pm +++ b/lib/Eval/Closure.pm @@ -83,6 +83,11 @@ parameter lets you override that to something more useful (for instance, L overrides the description for accessors to something like "accessor foo at MyClass.pm, line 123"). +=item line + +This lets you override the particular line number that appears in backtraces, +much like the description option. The default is "1". + =item terse_error Normally, this function appends the source code that failed to compile, and @@ -99,7 +104,7 @@ sub eval_closure { $args{source} = _canonicalize_source($args{source}); _validate_env($args{environment} ||= {}); - $args{source} = _line_directive($args{description}) . $args{source} + $args{source} = _line_directive(@args{qw(line description)}) . $args{source} if defined $args{description}; my ($code, $e) = _clean_eval_closure(@args{qw(source environment)}); @@ -157,9 +162,11 @@ sub _validate_env { } sub _line_directive { - my ($description) = @_; + my ($line, $description) = @_; + + $line = 1 if !defined($line); - return qq{#line 1 "$description"\n}; + return qq{#line $line "$description"\n}; } sub _clean_eval_closure { -- cgit v1.2.3-54-g00ecf