PPI 1.117 released. Perl::Critic hopefully now less broken

Alias on 2006-09-02T07:16:05

I've just uploaded PPI 1.117 to the CPAN.

This release contains a fixes for a number of things I broke in 1.116, but which did not have test cases (and so I didn't notice I had broken).

In particular, trivial compound statements should work again, so that something like...

LABEL: { print "Hello World!"; }

... is not seen as two statements.

As PPI's biggest "client" (by user count at least) I probably need to get into the habit of installing Perl::Critic on the new release to make sure it still works.

That said, Perl::Critic seems to still be broken with 1.117, but the failures don't look obvious, and so my hope is that the critic guys can release a new version shortly which adapts to the PPI changes/fixes, or that they'll commit more test cases I haven't covered.

Either way, I apologise for the short period of instability to Perl::Critic, hopefully we'll get this stuff cleaned up shortly.


Thanks

ChrisDolan on 2006-09-03T05:23:41

On behalf of all the Perl::Critic committers I say thanks, Adam. I just committed a fix to Perl::Critic that makes it pass tests with PPI SVN head.

An anecdote: Perl parses "-t" aggressively. Consider the following code:
    3-t(); # syntax error
    3-test(); # Undefined subroutine &main::test

PPI doesn't treat the first case the same way Perl does, but it's a syntax error so does it really matter?

Re:Thanks

Alias on 2006-09-03T07:48:24

My standard for that is based on how stable Perl's interpretation is.

Perl's intepretation changes over time (each version has slight differences here and there). Witness how selfgol only works on a few particular versions of Perl.

PPI doesn't try to maintain bug for bug compatibility, because it simply can't. It has to be somewhat compatible with all versions.

So the general direction is that BOTH of $Perl{perl} and $Perl{PPI} trends towards $Perl{Larry}. On the way, $Perl{PPI} also tries to get as close as it can to $Perl{perl} but without compromising its compatibility to $Perl{Larry}.

In the above case, it might matter enough to make it worth it, if not in that case, then maybe in a few other cases.

It depends on if it is considered a bug or not, one could thing of the above as

3 -t scalar()

It is nonsensical, but tentatively legal in some cases.

If in doubt, I'm inclined to just leave things as they are until something comes up that matters.

Re:Thanks

ChrisDolan on 2006-09-03T19:55:08

Sorry, I was unclear. I didn't mean that "3-t();" anecdote as a criticism of PPI. I just thought I'd mention it here as an oddity that I came across in my testing rather than ignore it. It's just a curiosity.

Re:Thanks

Alias on 2006-09-03T22:07:59

And I didn't take it as a criticism, I was just pointing out I know there's lots of stuff like that, and there are certain conditions under which I fix them, even if illogical.