add assert_eq! macro

the assert_eq! macro compares its arguments and fails if they're not
equal. It's more informative than fail_unless!, because it explicitly
writes the given and expected arguments on failure.
change some uses of fail_unless to assert_eq
Make typechecker compositional

The typechecker previously passed around a boolean return flag to
indicate whether it saw something with type _|_ (that is, something
it knows at compile-time will definitely diverge) and also had some
manual checks for the `ty_err` pseudo-type that represents a previous
type error. This was because the typing rules implemented by the
typechecker didn't properly propagate _|_ and ty_err. I fixed it.

This also required changing expected error messages in a few tests,
as now we're printing out fewer derived errors -- in fact, at this
point we should print out no derived errors, so report any that
you see (ones that include "[type error]") as bugs.
rt: Increase C_STACK_SIZE to 2MB to get JIT/rusti working again (dlopen segfaults)
librustc: Fix path-qualified and cross-crate constants in match patterns.
Test for cross-crate const in match pattern.
auto merge of #5464 : luqmana/rust/const-pat, r=pcwalton

r? @pcwalton
librustc: Forbid access to cross-crate private static methods
auto merge of #5457 : pcwalton/rust/xcpsm, r=pcwalton

r? @catamorphism
rustc: Comments only - explain the invariant about ty_err and ty_bot a little
auto merge of #5461 : catamorphism/rust/flagless, r=nikomatsakis

r? @nikomatsakis The typechecker previously passed around a boolean return flag to
indicate whether it saw something with type _|_ (that is, something
it knows at compile-time will definitely diverge) and also had some
manual checks for the `ty_err` pseudo-type that represents a previous
type error. This was because the typing rules implemented by the
typechecker didn't properly propagate _|_ and ty_err. I fixed it.

This also required changing expected error messages in a few tests,
as now we're printing out fewer derived errors -- in fact, at this
point we should print out no derived errors, so report any that
you see (ones that include "[type error]") as bugs.
auto merge of #5468 : z0w0/rust/iluvdatjit, r=pcwalton
Tutorial: make struct section more coherent

In struct section of tutorial, make everything more coherent and
clear by always using "struct Point". Also, do not prematurely
introduce pointers and arrays. Fixes #5240

Signed-off-by: Luca Bruno <lucab@debian.org>
trie: make impl pub
replace the core-map benchmark

* Closes #4603
Switched over substr and trim functions in str to be non-allocating, temporary renamed them to better track use-sites
Un-renamed trim and substr functions.
auto merge of #5407 : jbclements/rust/add-assert-eq-macro, r=jbclements

Adds an assert_eq! macro that asserts that its two arguments are equal. Error messages can therefore be somewhat more informative than a simple assert, because the error message includes "expected" and "given" values.
auto merge of #5476 : thestinger/rust/bench, r=graydon

The old string benchmarks weren't very useful because the strings weren't long enough, so I just threw those out for now. I left out benchmarks of `oldmap` because it's clear that it's 30-40% slower and it doesn't implement the `Map` trait.

This also cleanly divides up `insert`, `search` and `remove`.
auto merge of #5441 : lucab/rust/lucab/tutorial/struct, r=z0w0

In struct section of tutorial, make everything more coherent and
clear by always using "struct Point".
Also, do not prematurely introduce pointers and arrays.
Fixes #5240