Commit | Line | Data |
9bd5658a |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | |
5 | BEGIN { |
6 | eval 'use B::Compiling'; |
b0361eef |
7 | |
9bd5658a |
8 | $@ and plan 'skip_all' => $@ |
9 | or plan tests => 5; |
10 | } |
11 | |
12 | my @lines; |
13 | |
14 | |
15 | sub handle_fun { |
16 | my $pack = shift; |
17 | |
18 | push @lines, PL_compiling->line; |
19 | |
20 | my $offset = Devel::Declare::get_linestr_offset(); |
21 | $offset += Devel::Declare::toke_move_past_token($offset); |
22 | my $stripped = Devel::Declare::toke_skipspace($offset); |
23 | my $linestr = Devel::Declare::get_linestr(); |
24 | |
25 | push @lines, PL_compiling->line; |
26 | } |
27 | |
28 | |
29 | use Devel::Declare; |
30 | BEGIN { |
31 | sub fun(&) {} |
32 | |
33 | Devel::Declare->setup_for( |
34 | __PACKAGE__, |
35 | { fun => { const => \&handle_fun } } |
36 | ); |
37 | } |
38 | |
39 | |
40 | #line 100 |
b0361eef |
41 | fun |
9bd5658a |
42 | { }; |
43 | my $line = __LINE__; |
44 | my $line2 = __LINE__; |
45 | |
46 | # Reset the line number back to what it actually is |
47 | #line 48 |
48 | is(@lines, 2, "2 line numbers recorded"); |
49 | is $lines[0], 100, "fun starts on line 100"; |
2688337b |
50 | is $lines[1], 101, "fun stops on line 101"; |
51 | is $line, 102, "next statement on line 102"; |
52 | is $line2, 103, "next statement on line 103"; |