r19251 - in /trunk/libclass-mop-perl: Changes META.yml Makefile.PL README debian/changelog lib/Class/MOP.pm lib/Class/MOP/Class.pm t/200_Class_C3_compatibility.t
eloy at users.alioth.debian.org
eloy at users.alioth.debian.org
Wed Apr 30 09:26:51 UTC 2008
Author: eloy
Date: Wed Apr 30 09:26:50 2008
New Revision: 19251
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=19251
Log:
new upstream version
Modified:
trunk/libclass-mop-perl/Changes
trunk/libclass-mop-perl/META.yml
trunk/libclass-mop-perl/Makefile.PL
trunk/libclass-mop-perl/README
trunk/libclass-mop-perl/debian/changelog
trunk/libclass-mop-perl/lib/Class/MOP.pm
trunk/libclass-mop-perl/lib/Class/MOP/Class.pm
trunk/libclass-mop-perl/t/200_Class_C3_compatibility.t
Modified: trunk/libclass-mop-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/Changes?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/Changes (original)
+++ trunk/libclass-mop-perl/Changes Wed Apr 30 09:26:50 2008
@@ -1,4 +1,19 @@
Revision history for Perl extension Class-MOP.
+
+0.55 Mon. April 28, 2008
+ - All classes now have proper C3 MRO support
+ - added MRO::Compat as a dependency to allow
+ for the C3 MRO support to Just Work in all
+ perl versions
+
+ * Class::MOP::Class
+ - rebless_instance now returns the instance
+ it has just blessed, this is mostly to
+ facilitate chaining
+ - set the attr correctly in rebless_instance
+ when it has no init_arg
+ - tweaked &linear_isa and &class_precedence_list
+ to support c3 classes.
0.54 Fri. March, 14, 2008
* Class::MOP
Modified: trunk/libclass-mop-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/META.yml?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/META.yml (original)
+++ trunk/libclass-mop-perl/META.yml Wed Apr 30 09:26:50 2008
@@ -20,13 +20,13 @@
provides:
Class::MOP:
file: lib/Class/MOP.pm
- version: 0.54
+ version: 0.55
Class::MOP::Attribute:
file: lib/Class/MOP/Attribute.pm
version: 0.24
Class::MOP::Class:
file: lib/Class/MOP/Class.pm
- version: 0.29
+ version: 0.30
Class::MOP::Immutable:
file: lib/Class/MOP/Immutable.pm
version: 0.05
@@ -62,6 +62,7 @@
version: 0.05
requires:
Carp: 0
+ MRO::Compat: 0.05
Scalar::Util: 1.18
Sub::Name: 0.02
-version: 0.54
+version: 0.55
Modified: trunk/libclass-mop-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/Makefile.PL?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/Makefile.PL (original)
+++ trunk/libclass-mop-perl/Makefile.PL Wed Apr 30 09:26:50 2008
@@ -8,6 +8,7 @@
requires 'Scalar::Util' => '1.18';
requires 'Sub::Name' => '0.02';
+requires 'MRO::Compat' => '0.05';
requires 'Carp' => '0';
build_requires 'Test::More' => '0.62';
Modified: trunk/libclass-mop-perl/README
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/README?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/README (original)
+++ trunk/libclass-mop-perl/README Wed Apr 30 09:26:50 2008
@@ -1,4 +1,4 @@
-Class::MOP version 0.54
+Class::MOP version 0.55
===========================
See the individual module documentation for more information
Modified: trunk/libclass-mop-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/debian/changelog?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/debian/changelog (original)
+++ trunk/libclass-mop-perl/debian/changelog Wed Apr 30 09:26:50 2008
@@ -1,3 +1,9 @@
+libclass-mop-perl (0.55-1) UNRELEASED; urgency=low
+
+ * (NOT RELEASED YET) New upstream release
+
+ -- Krzysztof Krzyżaniak (eloy) <eloy at debian.org> Wed, 30 Apr 2008 11:11:32 +0200
+
libclass-mop-perl (0.54-1) unstable; urgency=low
* New upstream release.
Modified: trunk/libclass-mop-perl/lib/Class/MOP.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/lib/Class/MOP.pm?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/lib/Class/MOP.pm (original)
+++ trunk/libclass-mop-perl/lib/Class/MOP.pm Wed Apr 30 09:26:50 2008
@@ -3,6 +3,8 @@
use strict;
use warnings;
+
+use MRO::Compat;
use Carp 'confess';
use Scalar::Util 'weaken';
@@ -14,7 +16,7 @@
use Class::MOP::Immutable;
BEGIN {
- our $VERSION = '0.54';
+ our $VERSION = '0.55';
our $AUTHORITY = 'cpan:STEVAN';
use XSLoader;
Modified: trunk/libclass-mop-perl/lib/Class/MOP/Class.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/lib/Class/MOP/Class.pm?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/lib/Class/MOP/Class.pm (original)
+++ trunk/libclass-mop-perl/lib/Class/MOP/Class.pm Wed Apr 30 09:26:50 2008
@@ -12,7 +12,7 @@
use Scalar::Util 'blessed', 'reftype', 'weaken';
use Sub::Name 'subname';
-our $VERSION = '0.29';
+our $VERSION = '0.30';
our $AUTHORITY = 'cpan:STEVAN';
use base 'Class::MOP::Module';
@@ -431,7 +431,7 @@
unless exists $params{$init_arg};
}
else {
- $attr->set_value($instance);
+ $attr->set_value($instance, $attr->get_value($instance));
}
}
}
@@ -439,6 +439,8 @@
foreach my $attr ($self->compute_all_applicable_attributes) {
$attr->initialize_instance_slot($meta_instance, $instance, \%params);
}
+
+ $instance;
}
# Inheritance
@@ -505,17 +507,12 @@
sub linearized_isa {
- if (Class::MOP::IS_RUNNING_ON_5_10()) {
- return @{ mro::get_linear_isa( (shift)->name ) };
- }
- else {
- my %seen;
- return grep { !($seen{$_}++) } (shift)->class_precedence_list;
- }
+ return @{ mro::get_linear_isa( (shift)->name ) };
}
sub class_precedence_list {
my $self = shift;
+ my $name = $self->name;
unless (Class::MOP::IS_RUNNING_ON_5_10()) {
# NOTE:
@@ -525,15 +522,26 @@
# blow up otherwise. Yes, it's an ugly hack, better
# suggestions are welcome.
# - SL
- ($self->name || return)->isa('This is a test for circular inheritance')
- }
-
- (
- $self->name,
- map {
- $self->initialize($_)->class_precedence_list()
- } $self->superclasses()
- );
+ ($name || return)->isa('This is a test for circular inheritance')
+ }
+
+ # if our mro is c3, we can
+ # just grab the linear_isa
+ if (mro::get_mro($name) eq 'c3') {
+ return @{ mro::get_linear_isa($name) }
+ }
+ else {
+ # NOTE:
+ # we can't grab the linear_isa for dfs
+ # since it has all the duplicates
+ # already removed.
+ return (
+ $name,
+ map {
+ $self->initialize($_)->class_precedence_list()
+ } $self->superclasses()
+ );
+ }
}
## Methods
Modified: trunk/libclass-mop-perl/t/200_Class_C3_compatibility.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libclass-mop-perl/t/200_Class_C3_compatibility.t?rev=19251&op=diff
==============================================================================
--- trunk/libclass-mop-perl/t/200_Class_C3_compatibility.t (original)
+++ trunk/libclass-mop-perl/t/200_Class_C3_compatibility.t Wed Apr 30 09:26:50 2008
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use Test::More;
+use Test::More tests => 8;
=pod
@@ -14,34 +14,32 @@
=cut
BEGIN {
- eval "use Class::C3";
- plan skip_all => "Class::C3 required for this test" if $@;
- plan tests => 7;
+ use_ok('Class::MOP');
}
{
package Diamond_A;
- Class::C3->import;
+ use mro 'c3';
use metaclass; # everyone will just inherit this now :)
sub hello { 'Diamond_A::hello' }
}
{
package Diamond_B;
+ use mro 'c3';
use base 'Diamond_A';
- Class::C3->import;
}
{
package Diamond_C;
- Class::C3->import;
+ use mro 'c3';
use base 'Diamond_A';
sub hello { 'Diamond_C::hello' }
}
{
package Diamond_D;
+ use mro 'c3';
use base ('Diamond_B', 'Diamond_C');
- Class::C3->import;
}
# we have to manually initialize
@@ -50,7 +48,8 @@
Class::C3::initialize();
is_deeply(
- [ Class::C3::calculateMRO('Diamond_D') ],
+# [ Class::C3::calculateMRO('Diamond_D') ],
+ [ Diamond_D->meta->class_precedence_list ],
[ qw(Diamond_D Diamond_B Diamond_C Diamond_A) ],
'... got the right MRO for Diamond_D');
More information about the Pkg-perl-cvs-commits
mailing list