On Wed Jul 16 16:56:20 2008, coke wrote:
> > I suspect that the merger/committer failed either to run 'perl
> > Configure.pl --test' or 'make buildtools_tests' prior to 'make'.
> 
> I can't remember the last time I ran these particular test targets, so
> that's easy (for me) to forgive.
> 

(Well, I *could* have written these tests such that they would be
included in 'make test' by default -- but lately it seems people are
more interested in taking tests out of 'make test' than putting them in.
;-) 

The point is that if we make certain tests non-default, then the Parrot
developers who are working on the files which those tests cover must run
the tests prior to commit.)

> [snip]
> 
> The problem appears to be that at some point explicit return
> statements were added here, presumably to help follow that perl critic
> policy. However, they are bare returns, and are not taking advantage
> of the implicit return value that was originally present. (e.g. in
> sort_ops in Parrot/Ops2pm/Utils.pm).

IIRC, in the spring of 2007 my fellow Cage Cleaner went down this
precise road, possibly with this very module.  I.e., he added bare
returns to subs that had quite well-defined final statements.  And he
got the same kind of test failures as we have here.

But when I refactored tools/build/ops2c.pl into
lib/Parrot/Ops2c/Utils.pm earlier that year, it was for the purpose of
refactoring spaghetti code without changing its functionality or calling
into questions the design decisions that, for better or worse, went in
to it.  So that meant that, yes, the final statement in >=1 sub was (a)
a statement that changed the internal state of some variable and (b) had
a return value that, while defined, was not very meaningful.

("Defined, but not very meaningful" -- Does that describe the lives of
anyone you know?)

So if you really think lib/Parrot/Ops2c/Utils.pm could be better
designed while achieving the same functionality, have a go at it!  But
just remember to run the buildtools_tests as you redesign it.  (And run
all the buildtools tests, because Parrot::Ops2pm::Utils depends on
Parrot::Ops2c::Utils.)

Thank you very much.
kid51

Reply via email to