Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • UNIVERSAL::can() is a method. Calling methods as if they were functions does not work reliably. O::IO's use of the function reference is a bug.

  • If you're using Object::InsideOut, Test::MockObject, and UNIVERSAL::isa, you've just stepped into the middle of several vicious pedant wars (Google should turn up some goodies). I would suggest not using one or more of these modules.

    • Well, that's an easy decision. I'd stop using Object::InsideOut on the basis that inside-out objects are a fad.

      The thing is to file a a bug report on OIO, but I can't straight away see how to fix the problem.

      • After skimming the code, I wonder if OIO could stop monkeysquatting UNIVERSAL::isa and UNIVERSAL::can, perhaps by installing its own methods as methods in OIO-created classes (unless they already exist).

  • Despite being better than it was, UNIVERSAL::isa/can still aren't suitably complete.

    Last time I checked, I think they still didn't support re-entrancy.

    That is, if you have a custom ->isa that itself calls another ->isa, the second one doesn't work properly.

    • Last time I checked, I think they still didn't support re-entrancy.

      I fixed those bugs per your test cases last year sometime. I'm sure I asked if you could reproduce any problems in the ticket.

  • With thanks to TheNomad's for his prodding me on this issue, I have "fixed" OIO to have "proper" implementations for ->can() and ->isa() that do not rely on cached references to UNIVERSAL::can() and UNIVERSAL::isa().

    With this reimplementation, OIO should now play well with Test::MockObject and the chromatic's CPAN versions of UNIVERSAL::can and UNIVERSAL::isa, and, hopefully, should eliminate the possibility of further conflicts of this nature.