use strict;
use warnings;
-use Carp qw(confess);
+use Carp ();
my %SPEC;
my $strict_bits;
BEGIN{ $strict_bits = strict::bits(qw(subs refs vars)); }
+my $warnings_extra_bits;
+BEGIN{ $warnings_extra_bits = warnings::bits(FATAL => 'recursion') }
+
# it must be "require", because Mouse::Util depends on Mouse::Exporter,
# which depends on Mouse::Util::import()
require Mouse::Util;
sub import{
- $^H |= $strict_bits; # strict->import;
- ${^WARNING_BITS} |= $warnings::Bits{all}; # warnings->import;
+ # strict->import;
+ $^H |= $strict_bits;
+ # warnings->import('all', FATAL => 'recursion');
+ ${^WARNING_BITS} |= $warnings::Bits{all};
+ ${^WARNING_BITS} |= $warnings_extra_bits;
return;
}
}
sub build_import_methods{
- my($class, %args) = @_;
+ my($self, %args) = @_;
my $exporting_package = $args{exporting_package} ||= caller();
$args{EXPORTS} = \%exports;
$args{REMOVABLES} = \@removables;
- $args{groups}{all} ||= \@all;
+ $args{groups}{all} ||= \@all;
if(my $default_list = $args{groups}{default}){
my %default;
foreach my $keyword(@{$default_list}){
$default{$keyword} = $exports{$keyword}
- || confess(qq{The $exporting_package package does not export "$keyword"});
+ || Carp::confess(qq{The $exporting_package package does not export "$keyword"});
}
$args{DEFAULT} = \%default;
}
return (\&do_import, \&do_unimport);
}
-
# the entity of general import()
sub do_import {
my($package, @args) = @_;
my $spec = $SPEC{$package}
- || confess("The package $package package does not use Mouse::Exporter");
+ || Carp::confess("The package $package package does not use Mouse::Exporter");
my $into = _get_caller_package(ref($args[0]) ? shift @args : undef);
}
elsif($arg =~ s/^://){
my $group = $spec->{groups}{$arg}
- || confess(qq{The $package package does not export the group "$arg"});
+ || Carp::confess(qq{The $package package does not export the group "$arg"});
push @exports, @{$group};
}
else{
}
}
- $^H |= $strict_bits; # strict->import;
- ${^WARNING_BITS} |= $warnings::Bits{all}; # warnings->import;
+ # strict->import;
+ $^H |= $strict_bits;
+ # warnings->import('all', FATAL => 'recursion');
+ ${^WARNING_BITS} |= $warnings::Bits{all};
+ ${^WARNING_BITS} |= $warnings_extra_bits;
if($spec->{INIT_META}){
my $meta;
if(@traits){
my $type = (split /::/, ref $meta)[-1]; # e.g. "Class" for "My::Meta::Class"
- @traits =
- map{
- ref($_) ? $_
- : Mouse::Util::resolve_metaclass_alias($type => $_, trait => 1)
- } @traits;
+ @traits = map{
+ ref($_)
+ ? $_
+ : Mouse::Util::resolve_metaclass_alias($type => $_, trait => 1)
+ } @traits;
require Mouse::Util::MetaRole;
Mouse::Util::MetaRole::apply_metaroles(
foreach my $keyword(@exports){
push @export_table,
$keyword => ($spec->{EXPORTS}{$keyword}
- || confess(qq{The $package package does not export "$keyword"})
+ || Carp::confess(qq{The $package package does not export "$keyword"})
);
}
Mouse::Util::install_subroutines($into, @export_table);
my($package, $arg) = @_;
my $spec = $SPEC{$package}
- || confess("The package $package does not use Mouse::Exporter");
+ || Carp::confess("The package $package does not use Mouse::Exporter");
my $from = _get_caller_package($arg);
=head1 VERSION
-This document describes Mouse version 0.50_03
+This document describes Mouse version 0.88
=head1 SYNOPSIS
use Mouse::Exporter;
Mouse::Exporter->setup_import_methods(
- as_is => [ 'has_rw', 'other_sugar', \&Some::Random::thing ],
- also => 'Mouse',
+ as_is => [ 'has_rw', 'other_sugar', \&Some::Random::thing ],
+ also => 'Mouse',
);
sub has_rw {