Commit | Line | Data |
423ea917 |
1 | use strict; |
2 | use warnings; |
3 | |
4717d7fa |
4 | use Test::More tests => 5; |
532e6d2f |
5 | use Sub::Name 'subname'; |
e896822d |
6 | |
7 | BEGIN { |
f6532ad1 |
8 | $^P &= ~0x200; # Don't munge anonymous sub names |
e896822d |
9 | } |
423ea917 |
10 | |
4717d7fa |
11 | use Class::MOP; |
423ea917 |
12 | |
423ea917 |
13 | |
4717d7fa |
14 | sub code_name_is { |
15 | my ( $code, $stash, $name ) = @_; |
423ea917 |
16 | |
17 | is_deeply( |
18 | [ Class::MOP::get_code_info($code) ], |
19 | [ $stash, $name ], |
4717d7fa |
20 | "sub name is ${stash}::$name" |
423ea917 |
21 | ); |
22 | } |
23 | |
24 | code_name_is( sub {}, main => "__ANON__" ); |
25 | |
26 | code_name_is( subname("Foo::bar", sub {}), Foo => "bar" ); |
27 | |
28 | code_name_is( subname("", sub {}), "main" => "" ); |
29 | |
30 | require Class::MOP::Method; |
31 | code_name_is( \&Class::MOP::Method::name, "Class::MOP::Method", "name" ); |
32 | |
1b7e9bae |
33 | { |
34 | package Foo; |
35 | |
36 | sub MODIFY_CODE_ATTRIBUTES { |
37 | my ($class, $code) = @_; |
5a11a1da |
38 | my @info = Class::MOP::get_code_info($code); |
39 | ::is_deeply(\@info, [], "no name for a coderef that's still compiling"); |
1b7e9bae |
40 | return (); |
41 | } |
42 | |
43 | sub foo : Bar {} |
44 | } |