Revert C3-fication d009cb7d and fixups 7f068248 and 983f766d
authorPeter Rabbitson <ribasushi@cpan.org>
Wed, 13 Jul 2016 13:45:37 +0000 (15:45 +0200)
committerPeter Rabbitson <ribasushi@cpan.org>
Mon, 25 Jul 2016 12:37:34 +0000 (14:37 +0200)
commit7648acb5dd1f2f281ca84e2152efe314bcbf2c70
treef3c24144751423c5ccec261d2a892f34d9b47788
parentd46eac43287ebe244e4f622fb77fa2efa16402a9
Revert C3-fication d009cb7d and fixups 7f068248 and 983f766d

While on its surface this was a good idea, it actually hides problems even
more: by the time we arrive at a useful hook-point to check the current MRO,
something likely already changed it from under us, and the old effects are
all masked away for good.

So instead scale back as much as possible, and set 'c3' where needed as
lazily as practical. In order to satisfy the mro requirements imposed by
5e0eea35 we do the "flip" during the ->source() stage.

Additionally we record the original setting any time we switch the mro on
foreign classes (two such spots in the codebase). A later commit will use
this information to add the final bit of sanity to this clusterfuck.
12 files changed:
lib/DBIx/Class/AccessorGroup.pm
lib/DBIx/Class/Componentised.pm
lib/DBIx/Class/MethodAttributes.pm
lib/DBIx/Class/ResultSet.pm
lib/DBIx/Class/ResultSource.pm
lib/DBIx/Class/ResultSource/RowParser.pm
lib/DBIx/Class/ResultSource/Table.pm
lib/DBIx/Class/ResultSource/View.pm
lib/DBIx/Class/ResultSourceProxy.pm
lib/DBIx/Class/Schema.pm
lib/DBIx/Class/Storage/DBI.pm
xt/extra/c3_mro.t