Type constraint messages are not distinct

[email protected] (Ernesto)
Newsgroups perl.moose
Message-ID <[email protected]>
Hi Stevan,

this is not really a bug report, it's more a demand of a feature to be
included in the long run, because it might force heavy changes inside
the handling of type constraint error messages. And it's not essential
for using Moose.

If defining subtypes as

# / (root) forbidden
# no umlauts, no special chars
#
subtype 'FilePathString'
  => as 'Str'
  => where   { $_ =~ m#^(/[a-zA-Z0-9_.-]+)+$#; }
  => message { "FilePath invalid ($_)" };

subtype 'FilePath'
  => as 'FilePathString'
  => where   { -e $_; }
  => message { "FilePath must exist ($_)" };

and using them as

package Foo;
has 'path' =>
(
  is       => 'ro',
  isa      => 'FilePath',
  required => 1,
);

I get as error message always 'FilePath must exist' instead of the
expected 'FilePath invalid', when I call

Foo->new ( path => '/' );

Do I miss something?

Please have a look at
http://dienstleistung-kultur.de/moose/05_type_message.t.txt

As said, I can live without special messages, but I love, when things
are complete ;-)

	Ernesto


P.S.: Re-reading this mail it comes to my mind, that I'm not shure about
the order of the type constraint processing.

Maybe I'm better off with something like

subtype 'FilePath'
  => as 'Str'
  => where
     {
         return undef      unless $_ =~ m#^(/[a-zA-Z0-9_.-]+)+$#;
         return undef      unless -e $_;
         return 1;
     };
     (using the default messages)

to be shure, that the wellformness of the path is checked before its
existence to avoid handing over malicious paths to the OS.
Comments?


P.P.S.: My environment:
Perl v5.8.8 on Debian 4.0 Etch
Moose 0.40 with Moose::Object 0.12 (!)
Class::MOP 0.54
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.