Re: class-mop bool test

[email protected] ("Carl Franks")
Newsgroups perl.moose
Message-ID <[email protected]>
On 23/11/06, Stevan Little <[email protected]> wrote:
> Carl,
>
> On Nov 23, 2006, at 11:29 AM, Carl Franks wrote:
> > I'm working on a project using Moose, with an object which uses
> > overloading.
> > I came across a situation where the subroutine for 'bool' overloading
> > was being unexpectedly called.
> > I tracked it down to Class::MOP::Attribute, line 125. If I change
> > this:
> > if ($instance && $self->is_default_a_coderef) {
> >
> > to this:
> > if (defined $instance && $self->is_default_a_coderef) {
> >
> > it fixes my problem, and the bool overload subroutine is no longer
> > called.
> > Is this a suitable fix, or does it suggest I'm using Moose attributes
> > in a wrong way?
>
> No, you are likely using them just fine, the defined test should be
> fine, so I have applied your change in svn HEAD. I will have to test
> this against Moose as well too, but I don't expect any test failures.
>
> > The reason it was causing me a problem, was because the overload
> > subroutine was calling methods on $self, when construction hadn't
> > completed yet, and I was relying on attributes that were supposed to
> > be set by BUILD subs.
>
> Moose has not been well tested with overloads (I don't use them much
> anymore myself), so you may very well find some issues. If you would
> be so inclined, I would love some tests which combine Moose +
> overload :)

That's cool.
Here's a test file which demonstrates the bug - all tests pass only
with the patched Class/MOP

Cheers,
Carl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.