Parse and reserve typeof keyword. #3228
Emit a better error for attempted unsafe-pointer-self. Close #8306.
Consolidate local_data implementations, and cleanup

This moves all local_data stuff into the `local_data` module and only that
module alone. It also removes a fair amount of "super-unsafe" code in favor of
just vanilla code generated by the compiler at the same time.

Closes #8113
Add tests for ref in closure parameter list, closes #5239
auto merge of #8447 : alexcrichton/rust/local-data-merge, r=brson

This moves all local_data stuff into the `local_data` module and only that
module alone. It also removes a fair amount of "super-unsafe" code in favor of
just vanilla code generated by the compiler at the same time.

Closes #8113
rust-mode: Default rust-indent-offset to 4, not default-tab-width

default-tab-width is standardly 8, but most programmers and style
guides prefer an indentation width smaller than that.  Rust itself
uses 4 space indents.  Most other Emacs modes define the indentation
width as 4 or 2 spaces, independently of the width of a Tab character.
Depending on default-tab-width makes especially little sense for
rust-mode because it sets indent-tabs-mode to nil.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
auto merge of #8718 : bblum/rust/typeof, r=pcwalton

r? anybody
Fix compilation issues with libuv on OSX

It turns out that gyp (libuv's new build system) wants x64 for a 64-bit x86
architecture and ia32 for a 32-bit architecture, so this performs the relevant
mapping and then invokes libuv's configure script with the appropriate target
architecture.

This can be verified by running make with VERBOSE=1 and seeing that beforehand
on a 64-bit build libuv was passed "-arch i386" and now it's passed
"-arch x86_64"

Closes #8826
auto merge of #8832 : alexcrichton/rust/fix-libuv-build, r=pcwalton

It turns out that gyp (libuv's new build system) wants x64 for a 64-bit x86
architecture and ia32 for a 32-bit architecture, so this performs the relevant
mapping and then invokes libuv's configure script with the appropriate target
architecture.

This can be verified by running make with VERBOSE=1 and seeing that beforehand
on a 64-bit build libuv was passed "-arch i386" and now it's passed
"-arch x86_64"

Closes #8826
Make the unit-test framework check RUST_TEST_TASKS over RUST_THREADS.

Fixes #7335.
Revert "auto merge of #8695 : thestinger/rust/build, r=pcwalton"

This reverts commit 2c0f9bd35493def5e23f0f43ddeba54da9d788b4, reversing
changes made to f8c4f0ea9c96218dbc81081799e77875fbb071de.

Conflicts:
	src/rustllvm/RustWrapper.cpp
auto merge of #8800 : fhahn/rust/ticket_5239, r=alexcrichton

I've added a test for the second example mentioned in #5239. The first example does not compile with a reasonable error message. Should I add a compile-fail test for that example as well?

    /rust/src/test/run-pass/issue-5239.rs:15:45: 15:51 error: binary operation + cannot be applied to type `&int`
    rust/src/test/run-pass/issue-5239.rs:15     let _f = |ref x: int| { x += 1};
                                                                                         ^~~~~~

    error: aborting due to previous error
Update libuv to rebase on top of joyent/master

Closes #8829
Enable segmented stacks for llvm on mingw-64

cc #8488
auto merge of #8830 : andersk/rust/indent-4, r=catamorphism

`default-tab-width` is standardly 8, but most programmers and style guides prefer an indentation width smaller than that.  Rust itself uses 4 space indents.  Most other Emacs modes define the indentation width as 4 or 2 spaces, independently of the width of a Tab character.  Depending on `default-tab-width` makes especially little sense for rust-mode because it sets `indent-tabs-mode` to `nil`.
auto merge of #8823 : huonw/rust/6233, r=brson

Fixes #7335.
auto merge of #8838 : brson/rust/rvfpelim, r=alexcrichton

This reverts commit 2c0f9bd35493def5e23f0f43ddeba54da9d788b4, reversing
changes made to f8c4f0ea9c96218dbc81081799e77875fbb071de.

Conflicts:
	src/rustllvm/RustWrapper.cpp

Fixes #8833
auto merge of #8840 : alexcrichton/rust/update-vendors, r=cmr

The LLVM update includes patches from #8488 by @klutzy to build llvm on mingw-64 and also to enable segmented stacks on that platform.

The libuv patch is a rebase on the now-current joyent/master in order to fix #8829
rustc: Change a stray error! statement to debug!
std: Add a file-renaming function to std::os