added test for method arg hygiene
change if/else to match
test harness cleanup
remove unused fn, make SELF_KEYWORD_NAME public
preserve context in parsing of `self` varref
get rid of keyword idents, replace with names

should prevent future bugs
replace idents with names
self arg macro test case
introducing let-syntax

The let-syntax expander is different in that it doesn't apply
a mark to its token trees before expansion. This is used
for macro_rules, and it's because macro_rules is essentially
MTWT's let-syntax. You don't want to mark before expand sees
let-syntax, because there's no "after" syntax to mark again.

In some sense, the cleaner approach might be to introduce a new
AST node that macro_rules expands into; this would make it clearer
that the expansion of a macro is distinct from the addition of a
new macro binding.

This should work for now, though...
test case for expansion of method macro
implement hygiene for method args
remove outdated comment

I believe this comment is now irrelevant, as a result of
commit 6757053cffb585249105fbd76f
comments
make macros non-capturing
macro literals should be compared by name only
carry self ident forward through re-parsing

formerly, the self identifier was being discarded during parsing, which
stymies hygiene. The best fix here seems to be to attach a self identifier
to ExplicitSelf_, a change that rippled through the rest of the compiler,
but without any obvious damage.
fix hygiene for test case
auto merge of #15537 : jbclements/rust/hygiene-for-methods, r=pcwalton

This patch adds hygiene for methods. This one was more difficult than the others, due principally to issues surrounding `self`. Specifically, there were a whole bunch of places in the code that assumed that a `self` identifier could be discarded and then made up again later, causing the discard of contexts and hygiene breakage.