use DBIx::Class::Carp;
use DBIx::Class::_Util qw( quote_sub perlstring );
-# FIXME - this souldn't be needed
-my $cu;
-BEGIN { $cu = \&carp_unique }
+# FIXME - this should go away
+# instead Carp::Skip should export usable keywords or something like that
+my $unique_carper;
+BEGIN { $unique_carper = \&carp_unique }
use namespace::clean;
{},
{ attributes => [
'DBIC_method_is_indirect_sugar',
+ ( keys( %{$rel_attrs||{}} )
+ ? 'DBIC_method_is_m2m_sugar_with_attrs'
+ : 'DBIC_method_is_m2m_sugar'
+ ),
] },
);
my @extra_meth_qsub_args = (
{
'$rel_attrs' => \{ alias => $f_rel, %{ $rel_attrs||{} } },
- '$carp_unique' => \$cu,
+ '$carp_unique' => \$unique_carper,
},
{ attributes => [
'DBIC_method_is_indirect_sugar',
+ ( keys( %{$rel_attrs||{}} )
+ ? 'DBIC_method_is_m2m_extra_sugar_with_attrs'
+ : 'DBIC_method_is_m2m_extra_sugar'
+ ),
] },
);
$guard->commit if $guard;
EOC
+
+ # the last method needs no captures - just kill it all with fire
+ $extra_meth_qsub_args[0] = {};
+
+
quote_sub "${class}::${remove_meth}", sprintf( <<'EOC', $remove_meth, $rel, $f_rel ), @extra_meth_qsub_args;
$_[0]->throw_exception("'%1$s' expects an object")