The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

BEGIN {
    use FindBin qw($Bin);
    require "$Bin/test.pl";
    plan(tests => 11);
}

use Regexp::Fields;

#
# compile a simple regex
#

$rx = eval 'qr/(?<x> .)/';

ok $rx, "compiled qr/$rx/";
is ref($rx), 'Regexp', 'ref($rx) eq "Regexp"';
like "x", qr/$rx/, '"x" =~ /$rx/';


#
# recognize a broken one
#

foreach (qw{ (?<x) (?<x> (?<x->.) }) {
    fail_ok qq{ qr/$_/ }, "qr/$_/ fails";
}

{
    use warnings;
    my $warning;
    local $SIG{__WARN__} = sub { $warning = shift };
    ok qr/(?<x>) $rx/, 'rx with duplicates compiles';
    ok $warning, 'but generates a warning';
}

#
# handle /x
#

$rx = eval "qr/(?<x> # diddle\n x)/x";

ok $rx,          'compile extended pattern with comment/newline';
ok "x" =~ /$rx/, '"x" =~ /$rx/';
is $1, 'x',      '$1 eq "x"';