3 # This must be its own dist later
7 use if $] < '5.010', 'MRO::Compat';
13 my ($inv, @comp) = @_;
14 my $class = ref($inv) || $inv;
15 my $new_class = join('::', $class, $comp++);
16 require Class::C3::Componentised;
17 my @comp_classes = map +(/^\+(.+)$/ ? "${class}::$1" : $_), @comp;
18 Class::C3::Componentised->ensure_class_loaded($_) for @comp_classes;
19 Class::C3::Componentised->inject_base(
21 @comp_classes, $class,
23 return $new_class unless ref($inv);
24 return bless($inv, $new_class);
28 my ($inv, @roles) = @_;
29 my $class = ref($inv) || $inv;
31 my $new_class = Role::Tiny->create_class_with_roles($class,
32 map +(/^\+(.+)$/ ? "${class}::$1" : $_), @roles
34 return $new_class unless ref($inv);
35 return bless($inv, $new_class);