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 Test::More;

use mop;

class FooMeta extends mop::class {
    method foo { 'FOO' }
}

class BarMeta extends mop::class {
    method bar { 'BAR' }
}

class Foo meta FooMeta { }

class Bar extends Foo meta BarMeta { }

{
    my $BarMeta = mop::meta('Bar');
    is($BarMeta->foo, 'FOO');
    is($BarMeta->bar, 'BAR');
}

class BazMeta extends mop::class {
    method foo { 'BAZ' }
}

eval "class Baz extends Foo meta BazMeta { }";
like($@, qr/Can't fix metaclass compatibility between Foo \(FooMeta\) and Baz \(BazMeta\)/);

done_testing;