From 15d628a5806c01848d0a1cb0dd7fe75d1f6b443e Mon Sep 17 00:00:00 2001 From: Steve Nolte Date: Tue, 20 Aug 2013 11:50:27 -0500 Subject: [PATCH] Add deprecation warning for $rs->new instead of new_result --- lib/DBIx/Class/ResultSet.pm | 6 +++++- t/resultset/deprecated_new.t | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 t/resultset/deprecated_new.t diff --git a/lib/DBIx/Class/ResultSet.pm b/lib/DBIx/Class/ResultSet.pm index 5d7c7c99d..98bc30c11 100644 --- a/lib/DBIx/Class/ResultSet.pm +++ b/lib/DBIx/Class/ResultSet.pm @@ -239,7 +239,11 @@ creation B. See also warning pertaining to L. sub new { my $class = shift; - return $class->new_result(@_) if ref $class; + + if (ref $class) { + carp_unique 'Calling $rs->new usually indicates a mistake - you either wanted $rs->new_result or $rs->search'; + return $class->new_result(@_); + } my ($source, $attrs) = @_; $source = $source->resolve diff --git a/t/resultset/deprecated_new.t b/t/resultset/deprecated_new.t new file mode 100644 index 000000000..e0f843772 --- /dev/null +++ b/t/resultset/deprecated_new.t @@ -0,0 +1,18 @@ +use strict; +use warnings; + +use Test::More; +use Test::Warn; +use lib qw(t/lib); +use DBICTest; + +my $schema = DBICTest->init_schema(); + +my $cd_rs = $schema->resultset("CD"); + +warnings_exist( sub { + my $cd = $cd_rs->new({}); +}, qr/Calling \$rs->new usually indicates a mistake/, +'deprecation warning when calling new instead of new_result'); + +done_testing;