Toby Blake
unread,Aug 12, 2016, 6:00:02 AM8/12/16You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to mo...@perl.org
Hi,
We have a bit of code which has broken between 2.1005 and 2.1804 - it
was originally written somewhere around 0.85 and I don't think has
really changed much since then.
The code involves a trait which consumes another trait, and this seems
to be what's causing the problem. Hopefully some (cut-down) code will
explain this...
package Test::Meta::Role::Trait::CoreObject;
use Moose::Role;
has primaryAttribute => (
is => 'rw',
isa => 'Str');
Moose::Exporter->setup_import_methods(
with_caller => [ 'primaryKey' ],
also => 'Moose::Role',
);
sub primaryKey {
my $meta = shift;
$meta = Moose::Meta::Role->initialize($meta) if !ref($meta);
return $meta->primaryAttribute(@_);
}
no Moose::Role;
package Moose::Meta::Role::Custom::Trait::CoreObject;
sub register_implementation
{'Test::Meta::Role::Trait::CoreObject'};
1;
package Test::Meta::Role::Trait::LDAPObject;
use Moose::Role;
with 'Test::Meta::Role::Trait::CoreObject';
has oid => (
is => 'rw',
isa =>'Str',
);
Moose::Exporter->setup_import_methods(
with_caller => [ 'oid', 'primaryKey' ],
also => 'Moose::Role',
);
sub oid {
my $meta = Moose::Meta::Role->initialize(shift);
$meta->oid(shift);
}
no Moose::Role;
package Moose::Meta::Role::Custom::Trait::LDAPObject;
sub register_implementation
{'Test::Meta::Role::Trait::LDAPObject'};
1;
package Test::TestRole;
use Test::Meta::Role::Trait::LDAPObject;
se Moose::Role -traits => 'LDAPObject';
oid '1.3.6.1.4.1.4247.1.747.99.23';
no Moose::Role;
1;
$ perl -Ilib -MTest::TestRole
String found where operator expected at lib/Test/TestRole.pm line 5, near "oid '1.3.6.1.4.1.4247.1.747.99.23'"
(Do you need to predeclare oid?)
syntax error at lib/Test/TestRole.pm line 5, near "oid '1.3.6.1.4.1.4247.1.747.99.23'"
BEGIN not safe after errors--compilation aborted at lib/Test/TestRole.pm line 7.
Compilation failed in require.
BEGIN failed--compilation aborted.
$
The LDAPObject trait works fine when it doesn't consume the CoreObject
trait (and I remove primaryKey from setup_import_methods), so I
suspect we're using Moose::Exporter incorrectly, but I'm not too
familiar with this side of moose meta, in that I don't want to try and
jsut hack my way around it. Any assistance would be greatly
appreciated.
Cheers
Toby Blake
School of Informatics
University of Edinburgh
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.