sigh, empty MANIFEST in the last release...
[p5sagit/Devel-Declare.git] / t / lines.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 BEGIN {
6   eval 'use B::Compiling';
7
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
41 fun
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";
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";