X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK.pm;fp=lib%2FDBIx%2FClass%2FPK.pm;h=0ef470b336af96abd656b776cb5c391733e4e4b8;hp=9bda5cac47b48bc5e57aa578c35a830a082159ca;hb=97940e368df996e1fe6111fb14f560594dc4c0b2;hpb=c5340bfac7aff784999be6ab4fa803fd9440043f diff --git a/lib/DBIx/Class/PK.pm b/lib/DBIx/Class/PK.pm index 9bda5ca..0ef470b 100644 --- a/lib/DBIx/Class/PK.pm +++ b/lib/DBIx/Class/PK.pm @@ -5,6 +5,9 @@ use warnings; use base qw/DBIx::Class::Row/; +use DBIx::Class::_Util 'fail_on_internal_call'; +use namespace::clean; + =head1 NAME DBIx::Class::PK - Primary Key class @@ -27,12 +30,16 @@ a class method. =cut -sub id { - my ($self) = @_; - $self->throw_exception( "Can't call id() as a class method" ) - unless ref $self; - my @id_vals = $self->_ident_values; - return (wantarray ? @id_vals : $id_vals[0]); +sub id :DBIC_method_is_indirect_sugar { + DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call; + + $_[0]->throw_exception( "Can't call id() as a class method" ) + unless ref $_[0]; + + wantarray + ? $_[0]->_ident_values + : ($_[0]->_ident_values)[0] # FIXME - horrible horrible legacy crap + ; } sub _ident_values {