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