Throw a more useful error when users try to use a parameterized type,
[gitmo/Mouse.git] / lib / Mouse / Util / TypeConstraints.pm
index 885788a..e811ad5 100644 (file)
@@ -161,7 +161,19 @@ sub typecast_constraints {
     return $value;
 }
 
+my $serial_enum = 0;
 sub enum {
+    # enum ['small', 'medium', 'large']
+    if (ref($_[0]) eq 'ARRAY') {
+        my @elements = @{ shift @_ };
+
+        my $name = 'Mouse::Util::TypeConstaints::Enum::Serial::'
+                 . ++$serial_enum;
+        enum($name, @elements);
+        return $name;
+    }
+
+    # enum size => 'small', 'medium', 'large'
     my $name = shift;
     my %is_valid = map { $_ => 1 } @_;