diff options
author | Shawn M Moore <sartak@bestpractical.com> | 2011-01-26 22:19:50 -0500 |
---|---|---|
committer | Shawn M Moore <sartak@bestpractical.com> | 2011-01-26 22:21:05 -0500 |
commit | 75e6988b5ef9fd1dd384d0bf3a74e50178683d17 (patch) | |
tree | 2e51c0bcd943c2e0213712653551f3df917722b0 /lib | |
parent | 5617e9667fce453ffa66029ebc10c972a3066725 (diff) | |
download | eval-closure-75e6988b5ef9fd1dd384d0bf3a74e50178683d17.tar.gz eval-closure-75e6988b5ef9fd1dd384d0bf3a74e50178683d17.zip |
Add a line option for controlling that bit as well
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Eval/Closure.pm | 13 |
1 files changed, 10 insertions, 3 deletions
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<Moose> 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 { |