in what case is a numeric comparison called for? I cannot think of one. Is this the...
Peter Karman [Fri, 15 Jan 2010 06:35:30 +0000 (06:35 +0000)]
lib/Catalyst/Component.pm
t/aggregate/unit_core_component.t

index fe0ef6f..b0bb7b5 100644 (file)
@@ -84,7 +84,7 @@ sub BUILDARGS {
         } elsif (Class::MOP::is_class_loaded($_[0]) &&
                 $_[0]->isa('Catalyst') && ref($_[1]) eq 'HASH') {
             $args = $_[1];
-        } elsif ($_[0] == $_[1]) {
+        } elsif ($_[0] eq $_[1]) {
             $args = $_[1];
         } else {
             $args = +{ @_ };
index 69ac6c0..9fb578a 100644 (file)
@@ -1,4 +1,4 @@
-use Test::More tests => 22;
+use Test::More tests => 23;
 use strict;
 use warnings;
 
@@ -91,3 +91,18 @@ is_deeply([ MyApp->comp('Foo') ], \@complist, 'Fallthrough return ok');
     is_deeply($args, [qw/foo3 bar3/], 'args passed to ACCEPT_CONTEXT ok');
 }
 
+# BUILDARGS logic
+{
+    {
+        package MyController;
+        @MyController::ISA = ('Catalyst::Controller');
+    }
+    my $warning;
+    local $SIG{__WARN__} = sub {
+        $warning = shift;
+        diag($warning);
+    };
+    my $controller = MyController->new('MyApp', undef);
+    like( $warning, qr/uninitialized value in string eq/, "no warning for == comparison");
+
+}