moose/Moose-Autobox — pull request #1 by kentfredric (2014-12-28 06:19:13+00:00)
Title: Replace Moose::Role everywhere with Role::Tiny

I've done a minimum first pass just for interests sake. However, the limitations I've hit are as follows:

### SERIOUS : using Role::Tiny's method composition may in effect break every existing extension

That is, everyone who actually uses `sub mixin_additional_role {` and a Moose based Role will have their code broken by the fact `Role::Tiny` presently fails when this is called on a non-Role::Tiny role.

```perl
Role::Tiny->apply_roles_to_package('Moose::Autobox::' . $type, $role);
```

Which is unacceptable and needs a workaround. This was exposed by the tests failing which I didn't initially convert `Moose::Role` based tests.

There is only one such known victim: http://grep.cpan.me/?q=mixin_additional_role

### Needs discussion: Handling of `>5.21.2`'s `redundant` warning.

`Moose::Autobox` presently warns on blead about `Redundant argument in sprintf at /home/kent/perl/forks/Moose-Autobox/lib/Moose/Autobox/Array.pm line 53`

And because warnings are lexical, there is no way for a user to suppress that warning, even though the warning is intended for consumers of Moose::Autobox, not really intended for Moose::Autobox itself.

And because `Role::Tiny` applies `use warnings FATAL => q[all]`, this adjustment causes sprintf to fatalize , and was also exposed as such by a test.

The easy obvious work-around is to simply suppress that warning lexically, which I have done, but it feels icky as the warning aught to be propagated, but the user's warnings should indicate how it propagates, not Moose::Autobox'es.

We could simply ignore that fact of course, but then we're effectively hiding a potential bug the user has committed that perl itself would have warned them about, which I consider to be a regression.