Refactor the unification code and rejuvenate the unit test
infrastructure that has been accidentally left out of the build
for a rather long time (it was still using `@DVec`!)
test: readd TMPDIR to LD_LIBRARY_PATH for run-make

It was accidentally removed in #15006 and that somehow got past the
build bots, causing `src/test/run-make/c-dynamic-dylib` to fail on at
least my linux system.

This resolves #15103 (thanks to @alexcrichton!).
Add regression test for ICE from issue 10846.
Allow trailing comma in `concat!`

(And in other extensions implemented with `get_exprs_from_tts` function).
Docs: tutorial: Remove a couple references to `~T`
auto merge of #15079 : nikomatsakis/rust/issue-5527-unify-refactor, r=pnkfelix

This is just a cleanup of the code. Doesn't really change anything deep about the way we operate. This is a prelude to implementing a good solution for one-way matching for #5527.

r? @pnkfelix (we were just crawling about this code, after all)
librustc: Feature gate lang items and intrinsics.

If you define lang items in your crate, add `#[feature(lang_items)]`.

If you define intrinsics (`extern "rust-intrinsic"`), add
`#[feature(intrinsics)]`.

Closes #12858.

[breaking-change]
auto merge of #15066 : pcwalton/rust/lang-and-intrinsic-feature-gate, r=alexcrichton

If you define lang items in your crate, add `#[feature(lang_items)]`.

If you define intrinsics (`extern "rust-intrinsic"`), add
`#[feature(intrinsics)]`.

Closes #12858.

[breaking-change]

r? @brson
Added Mipsel architecture support
auto merge of #15107 : ipetkov/rust/tutorial-update, r=alexcrichton
auto merge of #15113 : pnkfelix/rust/fsk-add-regression-test-for-ice-from-10846, r=alexcrichton

Includes a bit more comments than usual for a regression test; I felt like documenting Niko's diagnosis of the original problem here. 

Fix #15111 

r? anyone.
librustc: Remove outdated reference to `~` and `@`

Fix #15052
auto merge of #14963 : w3ln4/rust/master, r=alexcrichton

The aim of these changes is not working out a generic bi-endianness architectures support but to allow people develop for little endian MIPS machines (issue #7190).
auto merge of #15071 : tomjakubowski/rust/fix-15052, r=alexcrichton

Fix #15052
auto merge of #15114 : ben0x539/rust/run-make-libpath, r=alexcrichton

It was accidentally removed in #15006 and that somehow got past the
build bots, causing `src/test/run-make/c-dynamic-dylib` to fail on at
least my linux system.

This resolves #15103 (thanks to @alexcrichton!).
Move lint.rs out of middle

We're going to have more modules under lint, and the paths get unwieldy. We
also plan to have lints run at multiple points in the compilation pipeline.
Move lint infrastructure and individual lints into separate files
Rename lint::Lint to lint::LintId
Convert lints to a trait-based infrastructure

The immediate benefits are

* moving the state specific to a single lint out of Context, and
* replacing the soup of function calls in the Visitor impl with
  more structured control flow

But this is also a step towards loadable lints.
Replace enum LintId with an extensible alternative