From: Peter Rabbitson Date: Wed, 4 May 2016 16:10:33 +0000 (+0200) Subject: In d009cb7d I stupidly created a "double around()" X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=1b12190d4ca817eac91f48db668d8fe5c1983495;p=dbsrgits%2FDBIx-Class.git In d009cb7d I stupidly created a "double around()" Consolidate all the logic in DBIC::Componentised instead --- diff --git a/lib/DBIx/Class.pm b/lib/DBIx/Class.pm index f1c80ae..e7c6126 100644 --- a/lib/DBIx/Class.pm +++ b/lib/DBIx/Class.pm @@ -39,18 +39,6 @@ BEGIN { sub component_base_class { 'DBIx::Class' } -my $mro_already_set; -sub inject_base { - - # only examine from $_[2] onwards - # C::C3::C already sets c3 on $_[1] and $_[0] is irrelevant - mro::set_mro( $_ => 'c3' ) for grep { - $mro_already_set->{$_} ? 0 : ( $mro_already_set->{$_} = 1 ) - } @_[2 .. $#_]; - - shift->next::method(@_); -} - sub MODIFY_CODE_ATTRIBUTES { my ($class,$code,@attrs) = @_; $class->mk_classaccessor('__attr_cache' => {}) diff --git a/lib/DBIx/Class/Componentised.pm b/lib/DBIx/Class/Componentised.pm index 0fb91ad..47797cc 100644 --- a/lib/DBIx/Class/Componentised.pm +++ b/lib/DBIx/Class/Componentised.pm @@ -12,6 +12,9 @@ use namespace::clean; # this warns of subtle bugs introduced by UTF8Columns hacky handling of store_column # if and only if it is placed before something overriding store_column +# +# and also enforces C3 mro on all components +my $mro_already_set; sub inject_base { my $class = shift; my ($target, @complist) = @_; @@ -72,6 +75,12 @@ sub inject_base { unshift @target_isa, $comp; } + # only examine from $_[2] onwards + # C::C3::C already sets c3 on $_[1] + mro::set_mro( $_ => 'c3' ) for grep { + $mro_already_set->{$_} ? 0 : ( $mro_already_set->{$_} = 1 ) + } @_[1 .. $#_]; + $class->next::method(@_); }