The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use Data::Dumper;
use above 'UR';
use Test::More;

class Base {
    is => 'UR::Object',
    subclass_description_preprocessor => 'Base::_preprocess',
    subclassify_by => 'subclass_name',
};

package Base;
sub _preprocess {
    my ($class, $desc) = @_;
    my $count_prop = $desc->{has}{count};
    $desc->{has}{extra_property} = {
        is => 'Number',
        data_type => 'Number',
        property_name => 'extra_property',
        class_name => $count_prop->{class_name},
    };
    return $desc;
}

package main;

eval {
    class Derived {
        is => 'Base',
        has => [
            count => {
                is => 'Number',
            },
        ],
    };
};
ok($@, "specifying redundant/ambiguous properties via preprocessing is an error");

done_testing();