mozilla/rust — pull request #8638 by pnkfelix (2013-08-20 08:53:13+00:00)
Title:  visitor trait rewrite step 5 (of 5).  non-mechanical

"non-mechanical" : there was lots more hacking than the other more-mechanical ports Felix did.

r? @huonw. (Or @nikomatsakis ; I just want someone to sanity-check this. Its not a thing of beauty.)

Followup to #8623. (See #8527, which was step 1 of 5, for the full outline. Part of #7081.)

Notes on the change follow.

There's also a strange pattern that I hacked in to accommodate the
Outer/Inner traversal structure of the existing code (which was
previously encoding this by untying the Y-combinator style knot of the
vtable, and then retying it but superimposing new methods that "stop
at items"). I hope either I or someone else can come back in the
future and replace this ugliness with something more natural.

Added boilerplate macro; all the OuterLint definitions are the same
(but must be abstracted over implementing struct, thus the macro).

Revised lint.rs use declarations to make ast references explicit.
Also removed unused imports.