# Because Mouse::Util is loaded first in all the Mouse sub-modules,
# XS loader is placed here, not in Mouse.pm.
- our $VERSION = '0.40';
+ our $VERSION = '0.40_01';
my $need_pp = !!$ENV{MOUSE_PUREPERL};
if(!$need_pp && !exists $INC{'Mouse/PurePerl.pm'}){
local $@;
- $need_pp = !eval{
+
+ # XXX: XSLoader tries to get the object path from caller's file name
+ # $hack_mouse_file fools its mechanism
+
+ (my $hack_mouse_file = __FILE__) =~ s/.Util//; # .../Mouse/Util.pm -> .../Mouse.pm
+ $need_pp = !eval sprintf("#line %d %s\n", __LINE__, $hack_mouse_file) . q{
require XSLoader;
XSLoader::load('Mouse', $VERSION);
};
- warn $@ if $@; # for DEBUGGING
+ #warn $@ if $@;
}
if($need_pp){
}
-use Carp qw(confess);
-use Scalar::Util qw(blessed);
+use Carp ();
+use Scalar::Util ();
use constant _MOUSE_VERBOSE => !!$ENV{MOUSE_VERBOSE};
get_code_info
get_code_package
+ get_code_ref
not_supported
}
# not found
- confess join(
+ Carp::confess join(
"\n",
map {
sprintf( "Could not load class (%s) because : %s",
unless ( is_valid_class_name($class) ) {
my $display = defined($class) ? $class : 'undef';
- confess "Invalid class name ($display)";
+ Carp::confess "Invalid class name ($display)";
}
return undef if $is_class_loaded_cache{$class} ||= is_class_loaded($class);
sub load_class {
my $class = shift;
my $e = _try_load_one_class($class);
- confess "Could not load class ($class) because : $e" if $e;
+ Carp::confess "Could not load class ($class) because : $e" if $e;
return 1;
}
sub apply_all_roles {
- my $applicant = blessed($_[0]) ? shift : Mouse::Meta::Class->initialize(shift);
+ my $applicant = Scalar::Util::blessed($_[0])
+ ? shift # instance
+ : Mouse::Meta::Class->initialize(shift); # class or role name
my @roles;
my $role_name = $roles[-1][0];
load_class($role_name);
- my $metarole = get_metaclass_by_name($role_name);
- ( $metarole && $metarole->isa('Mouse::Meta::Role') )
+ Mouse::Util::TypeConstraints::_is_a_metarole( get_metaclass_by_name($role_name) )
|| $applicant->meta->throw_error("You can only consume roles, $role_name(".$role_name->meta.") is not a Mouse role");
}
=head1 VERSION
-This document describes Mouse version 0.40
+This document describes Mouse version 0.40_01
=head1 IMPLEMENTATIONS FOR