Checking in changes prior to tagging of version 0.88.
[gitmo/Mouse.git] / lib / Mouse / Util / TypeConstraints.pm
index bc32489..61810e5 100644 (file)
@@ -4,7 +4,8 @@ use Mouse::Util; # enables strict and warnings
 use Mouse::Meta::TypeConstraint;
 use Mouse::Exporter;
 
-use Carp ();
+use Carp         ();
+use Scalar::Util ();
 
 Mouse::Exporter->setup_import_methods(
     as_is => [qw(
@@ -211,7 +212,8 @@ sub role_type {
     return subtype $name => (
         as           => 'Object',
         optimized_as => sub {
-            return Mouse::Util::does_role($_[0], $role);
+            return Scalar::Util::blessed($_[0])
+                && Mouse::Util::does_role($_[0], $role);
         },
         role         => $role,
     );
@@ -288,8 +290,9 @@ sub _find_or_create_parameterized_type{
 }
 
 sub _find_or_create_union_type{
-    return if grep{ not defined } @_;
-    my @types = sort map{ $_->{type_constraints} ? @{$_->{type_constraints}} : $_ } @_;
+    return if grep{ not defined } @_; # all things must be defined
+    my @types = sort
+        map{ $_->{type_constraints} ? @{$_->{type_constraints}} : $_ } @_;
 
     my $name = join '|', @types;
 
@@ -429,7 +432,7 @@ Mouse::Util::TypeConstraints - Type constraint system for Mouse
 
 =head1 VERSION
 
-This document describes Mouse version 0.85
+This document describes Mouse version 0.88
 
 =head2 SYNOPSIS