Skip Menu |

This queue is for tickets about the Object-InsideOut CPAN distribution.

Report information
The Basics
Id: 47910
Status: rejected
Priority: 0/
Queue: Object-InsideOut

People
Owner: Nobody in particular
Requestors: alex [...] framexpeditions.com
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in:
  • 3.54
  • 3.55
Fixed in: (no value)



Subject: 2 members with Type(list)
Hi Jerry We are quite fan of your Object::InsideOut module (In fact, I pushed most of our dev team to use when it comes to the perl part of our projects). Indeed, I discovered a little problem which is embarassing... See OIMod.pm attached: if If have 2 member with :type(List) I get a rather antipathetic message CHECK failed--call queue aborted. I tested on two machines: macOSX perl 5.8.8 3.54 & 3.55 linux box perl 5.10.0 3.54 bon courage! I had not the courage to dive into Object::InsideOut code in fact... thanks a lot for your modules anyway Alex
Subject: OIMod.pm
package OIMod; use strict; use warnings; { use Object::InsideOut ; my @ref : Field : Type(list) : Accessor(ref); my @pubmedIds : Field : Type(list) : Accessor(pubmedIds); sub init : Init { my ( $self, $args ) = @_; } } 1;
Subject: oimod.pl
use strict; use warnings; use OIMod; warn "OK";
ALEXMASS wrote: Show quoted text
> We are quite fan of your Object::InsideOut module (In > fact, I pushed most of our dev team to use when it comes > to the perl part of our projects).
Thanks. Glad you found it useful. Show quoted text
> CHECK failed--call queue aborted.
This comes from trying to create an accessor called 'ref'. 'ref' is a core Perl function, and it is a very bad practice to name methods the same as core functions unless you're deliberately trying to override their function. In your case, the accessor 'ref' is created in the OIMod namespace. Then when trying to create the second accessor, the OIO code calls 'ref' as part of the creation process, but instead of getting the core 'ref' function, the OIMod::ref accessor is called which obviously is fatal. This isn't something I can fix, nor should I try. You need to change the accessor name to something else - for instance 'referral' or 'reference'. Again, thanks for using OIO.
Subject: Re: [rt.cpan.org #47910] 2 members with Type(list)
Date: Wed, 15 Jul 2009 18:02:44 +0200
To: bug-Object-InsideOut [...] rt.cpan.org
From: Alexandre Masselot <alexandre.masselot [...] genebio.com>
Hi Jerry everything is clear!!!! I was pretty sure to have used more than once multiple members with TYpe(list) so I couldn't understand the problem.. And in only If had sticked to use xemacs as an IDE, 'ref' would have appeared colored and it would have rang the bell! anyway, this is a stupid mistake and I change that right awayy thanks a lot for you super fast answer cheers Alex On Jul 15, 2009, at 5:46 PM, Jerry D. Hedden via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=47910 > > > ALEXMASS wrote:
>> We are quite fan of your Object::InsideOut module (In >> fact, I pushed most of our dev team to use when it comes >> to the perl part of our projects).
> > Thanks. Glad you found it useful. >
>> CHECK failed--call queue aborted.
> > This comes from trying to create an accessor called 'ref'. > 'ref' is a core Perl function, and it is a very bad practice > to name methods the same as core functions unless you're > deliberately trying to override their function. > > In your case, the accessor 'ref' is created in the OIMod > namespace. Then when trying to create the second accessor, > the OIO code calls 'ref' as part of the creation process, > but instead of getting the core 'ref' function, the > OIMod::ref accessor is called which obviously is fatal. > > This isn't something I can fix, nor should I try. You need > to change the accessor name to something else - for instance > 'referral' or 'reference'. > > Again, thanks for using OIO. >