better error message for macros with MOD_SEPs
simplified msg (TMI on old one)
added test case for macros with separators error message
Add test for issue #4448
De-implicit-self libcore
Update region inference for traits so that a method with
explicit self doesn't incorrectly cause the entire trait to
be tagged as being region-parameterized.

Fixes #5224.
auto merge of #5225 : nikomatsakis/rust/issue-5224, r=nikomatsakis

Update region inference for traits so that a method with explicit self doesn't incorrectly cause the entire trait to be tagged as being region-parameterized.

Fixes #5224.

r? @pcwalton
trie: fix each_reverse
trie: fix breaking out of the iterators early
auto merge of #5237 : thestinger/rust/iter, r=nikomatsakis
auto merge of #5233 : bstrie/rust/deimpselfcore, r=graydon
auto merge of #5231 : jbclements/rust/better-macro-error-message, r=graydon

Macro invocations with path separators (e.g. foo::bar!()) now produce a sensible error message, rather than an assertion failure. Also added compile-fail test case.

Fixes #5218 ?
libsyntax: Separate multiple inherited traits with `+`
librustc: Fix silly bug in AST conversion for const vstores. rs=bugfix

Means that we'll need another snapshot to rid the language of `[const T]`.
libcore: Implement an `Equiv` trait and use it on hashmaps.

7.3x speedup in string map search speed on a microbenchmark of pure hashmap
searching against a constant string, due to the lack of allocations.

I ran into a few snags.

1. The way the coherence check is set up, I can't implement `Equiv<@str>` and
   `Equiv<~str>` for `&str` simultaneously.

2. I wanted to implement `Equiv<T>` for all `T:Eq` (i.e. every type can be
   compared to itself if it implements `Eq`), but the coherence check didn't
   like that either.

3. I couldn't add this to the `Map` trait because `LinearMap` needs special
   handling for its `Q` type parameter: it must not only implement `Equiv<T>`
   but also `Hash` and `Eq`.

4. `find_equiv(&&"foo")` doesn't parse, because of the double ampersand. It has
   to be written `find_equiv(& &"foo")`. We can probably just fix this.

Nevertheless, this is a huge win; it should address a major source of
performance problems, including the one here:

http://maniagnosis.crsr.net/2013/02/creating-letterpress-cheating-program.html
auto merge of #5232 : bstrie/rust/issue4448, r=nikomatsakis
auto merge of #5234 : pcwalton/rust/equiv, r=pcwalton

r? @nikomatsakis