use _composite_name from new Role::Tiny to generate class names
Graham Knop [Tue, 27 Aug 2013 18:23:14 +0000 (14:23 -0400)]
This will abbreviate package names that are too long for perl, and
allows the name generation to be changed in the future.

Changes
Makefile.PL
lib/Moo/Role.pm

diff --git a/Changes b/Changes
index 9e6c1bf..63fe0f6 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,5 @@
+  - abbreviate class names from created by create_class_with_roles if they are
+    too long for perl to handle (RT#83248)
   - prevent destructors from failing in global destruction for certain
     combinations of Moo and Moose classes subclassing each other (RT#87810)
   - clarify in docs that Sub::Quote's captured variables are copies, not aliases
index 1ac927a..b594635 100644 (file)
@@ -21,7 +21,7 @@ my %RUN_DEPS = (
   'Class::Method::Modifiers' => 1.10, # or RT#80194
   'strictures' => 1.004003,
   'Module::Runtime' => 0.012, # for RT#74789
-  'Role::Tiny' => 1.003000,
+  'Role::Tiny' => 1.003002,
   'Devel::GlobalDestruction' => 0.11, # for RT#78617
   'Dist::CheckConflicts' => 0.02,
 );
index edbbdc8..1c42d74 100644 (file)
@@ -240,9 +240,7 @@ sub apply_single_role_to_package {
 sub create_class_with_roles {
   my ($me, $superclass, @roles) = @_;
 
-  my $new_name = join(
-    '__WITH__', $superclass, my $compose_name = join '__AND__', @roles
-  );
+  my ($new_name, $compose_name) = $me->_composite_name($superclass, @roles);
 
   return $new_name if $Role::Tiny::COMPOSED{class}{$new_name};