Commit Graph

50247 Commits

Author SHA1 Message Date
bors
f8fa6140fa Auto merge of #31397 - bradfirj:arc-docfix, r=steveklabnik
The documentation for the `make_mut` function on `Arc<T>` contains a somewhat impenetrable double-negative that I was only able to fully grasp by looking at the implementation. Here's a quick rewrite that reads a lot better.

The sentence "doesn't have one strong reference and no weak references." is a
hard to understand, and it can be much more easily explained. In particular, such a double-negative
could give English as a Second Language users even more trouble than native speakers.

r? @steveklabnik
2016-02-08 22:19:41 +00:00
Kamal Marhubi
6d2c866e22 driver: Disallow predicates in --cfg specs
A spec like `#[cfg(foo(bar))]` is not allowed as an attribute. This
makes the same spec be rejected by the compiler if passed in as a
`--cfg` argument.

Fixes #31495
2016-02-08 17:15:24 -05:00
Kamal Marhubi
4c4bb5ff5c driver: Extract handling of --explain to separate function 2016-02-08 17:15:24 -05:00
Kamal Marhubi
9951ac4be9 driver: Pass session options to CompilerCallbacks::early_callback() 2016-02-08 17:15:24 -05:00
Kamal Marhubi
601e04534f Add compile-fail test for invalid cfg predicate in attribute
Refs #31495
2016-02-08 17:15:24 -05:00
Steve Klabnik
5089b43b45 Fix up docs for String::from_utf8_lossy()
When I last did a pass through the string documentation, I focused on
consistency across similar functions. Unfortunately, I missed some
details. This example was _too_ consistent: it wasn't actually accurate!

This commit fixes the docs do both be more accurate and to explain why
the return type is a Cow<'a, str>.

First reported here:
https://www.reddit.com/r/rust/comments/44q9ms/stringfrom_utf8_lossy_doesnt_return_a_string/
2016-02-08 17:10:55 -05:00
Piotr Czarnecki
38fa06bc95 Cleanup based on review by @nagisa
* We don't have SEH-based unwinding yet.
  For this reason we don't need operand bundles in MIR trans.
* Refactored some uses of fcx.
* Refactored some calls to `with_block`.
2016-02-08 23:08:47 +01:00
Tomasz Miąsko
cecf83f592 Breaking tokens into pieces should behave similar to Parser::bump.
Previously when breaking tokens into smaller pieces, the replace_token
function have been used. It replaced current token and updated span
information, but it did not clear the list of expected tokens, neither
did it update remaining info about last token. This could lead to
incorrect error message, like one described in the issue #24780:

  expected one of ... `>` ...  found `>`
2016-02-08 21:26:48 +01:00
Kamal Marhubi
c5f73ed80c Implement fmt::Pointer for pointers to unsized types
This allows printing pointers to unsized types with the {:p} formatting
directive. The following impls are extended to unsized types:
 - impl<'a, T: ?Sized> Pointer for &'a T
 - impl<'a, T: ?Sized> Pointer for &'a mut T
 - impl<T: ?Sized> Pointer for *const T
 - impl<T: ?Sized> Pointer for *mut T
 - impl<T: ?Sized> fmt::Pointer for Box<T>
 - impl<T: ?Sized> fmt::Pointer for Rc<T>
 - impl<T: ?Sized> fmt::Pointer for Arc<T>
2016-02-08 14:08:19 -05:00
bors
efdde2479b Auto merge of #31324 - nagisa:mir-transforms, r=nikomatsakis
Having a `MirPass` provides literally no benefits over `MutVisitor`. Moreover using `MirPass` for
`EraseRegions` basically makes the programmer to fix breakage from changing repr twice – in the
visitor and eraseregions. Since `MutVisitor` implements all the “walking” inside the trait, that can
be reused for `EraseRegions` too, basically resulting in less code duplication.
2016-02-08 19:04:25 +00:00
Alex Crichton
d66f3948f5 rustc: Use llvm-ar for custom targets by default
The compiler currently vendors its own version of "llvm-ar" (not literally the
binary but rather the library support) and uses it for all major targets by
default (e.g. everything defined in `src/librustc_back/target`). All custom
target specs, however, still search for an `ar` tool by default. This commit
changes this default behavior to using the internally bundled llvm-ar with the
GNU format.

Currently all targets use the GNU format except for OSX which uses the BSD
format (surely makes sense, right?), and custom targets can change the format
via the `archive-format` key in custom target specs.

I suspect that we can outright remove support for invoking an external `ar`
utility, but I figure for now there may be some crazy target relying on that so
we should leave support in for now.
2016-02-08 10:27:03 -08:00
Kenneth Koski
f3014d1301 Fixing typo in prelude documentation 2016-02-08 12:07:55 -06:00
Alex Crichton
696a1da861 Remove old #[allow(trivial_casts)] annotations
These were added a long time ago but we long since switched the lint back to
allow-by-default, so these annotations shouldn't be necessary.
2016-02-08 09:35:09 -08:00
bors
26105b1a37 Auto merge of #31462 - thepowersgang:fix_29946, r=dotdash
Generates drop calls at the end of the Fn/FnMut -> FnOnce closure shim

Fix #29946
2016-02-08 17:05:21 +00:00
bors
04f12ef4f7 Auto merge of #31442 - pnkfelix:issue-30438-sidestep-dummy-node-during-expand-givens-dfs, r=nikomatsakis
Split dummy-idx node to fix expand_givens DFS

(Much more detail in commit comments.)

Fix #30438.
2016-02-08 14:56:24 +00:00
Benjamin Herr
cab8c2af8e std: _lock -> _guard in Mutex example
The comment in the next line was already talking about `_guard`, and the
scope guard a couple lines further down is also called `guard`, so I
assume that was just a typo.
2016-02-08 14:48:12 +01:00
Felix S. Klock II
77c8850e6f regression tests for issue #30438.
Fix #30438.
2016-02-08 13:49:06 +01:00
Felix S. Klock II
8801bdb6b0 Split dummy in region inference graph into distinct source and sink nodes.
Why do this: The RegionGraph representation previously conflated all
of the non-variable regions (i.e. the concrete regions such as
lifetime parameters to the current function) into a single dummy node.

A single dummy node leads DFS on a graph `'a -> '_#1 -> '_#0 -> 'b` to
claim that `'_#1` is reachable from `'_#0` (due to `'a` and `'b` being
conflated in the graph representation), which is incorrect (and can
lead to soundness bugs later on in compilation, see #30438).

Splitting the dummy node ensures that DFS will never introduce new
ancestor relationships between nodes for variable regions in the
graph.
2016-02-08 13:44:03 +01:00
Piotr Czarnecki
a9ab8096ba Refactor storage of LandingPads 2016-02-08 11:53:06 +01:00
Piotr Czarnecki
06266eb3bd Refactor the MIR translator to use LLVM Builder directly 2016-02-08 11:41:24 +01:00
Piotr Czarnecki
8b776834a4 Implement OwnedBuilder and BlockAndBuilder 2016-02-08 11:12:31 +01:00
bors
e06f6928cb Auto merge of #31468 - pitdicker:fs_tests_cleanup, r=alexcrichton
See #29412
2016-02-08 07:38:11 +00:00
Jeffrey Seyfried
3c62d90202 Reallow methods from traits that are shadowed by non-import items 2016-02-08 02:25:10 +00:00
Jeffrey Seyfried
d7734aebec Refactor away add_export and cleanup the end of resolve_single_import 2016-02-08 02:25:09 +00:00
Jeffrey Seyfried
7000e70825 Replace children and import_resolutions with a single NameResolution-valued map.
Refactor away resolve_name_in_module in resolve_imports.rs

Rewrite and improve the core name resolution procedure in NameResolution::result and Module::resolve_name

Refactor the duplicate checking code into NameResolution::try_define
2016-02-08 02:25:08 +00:00
Jeffrey Seyfried
d881eee608 Change try_define_child to return a Result instead of an Option 2016-02-08 02:25:07 +00:00
Jeffrey Seyfried
16e7ff1bff Write and use increment_outstanding_references_for and decrement_outstanding_references_for 2016-02-08 02:25:05 +00:00
Jeffrey Seyfried
96b4dc4b87 Refactor away the fields id and is_public of ImportResolution and rename ImportResolution to NameResolution 2016-02-08 02:25:03 +00:00
Jeffrey Seyfried
4428b1cfdf Refactor away separate tracking of used_public and used_reexport.
NameBinding now encodes these directly with binding.is_public() and (binding.is_public() && binding.is_import()) (respectively)
2016-02-08 02:25:00 +00:00
Jeffrey Seyfried
2e24c7410f Expand NameBinding to better represent bindings from imports 2016-02-08 02:24:53 +00:00
Jeffrey Seyfried
22e189ed57 Add and use an arena for NameBindings 2016-02-08 02:24:16 +00:00
Jeffrey Seyfried
7366d105cb Refactor away Target 2016-02-08 02:22:41 +00:00
Jeffrey Seyfried
661b7ce830 Make resolve_name_in_module solely responsible for tracking used crates in lib.rs 2016-02-08 02:21:36 +00:00
bors
7fce5037a9 Auto merge of #31470 - alexcrichton:lets-find-jemalloc, r=brson
Both of these targets have jemalloc disabled unconditionally right now, so using
`maybe_jemalloc` here isn't right. This fixes the case where a Linux compiler
(which is itself configured to use jemalloc) attempts to cross-compile to MinGW,
causing it to try to find an `alloc_jemalloc` crate (and failing).
2016-02-07 23:31:46 +00:00
Andrew Barchuk
422cf2d34a Clean up Error Handling case study examples
Remove unnecessary cloning and conversions. Expand tabs left in examples.
2016-02-07 23:08:46 +02:00
bors
73132caa0b Auto merge of #31469 - nagisa:mir-else-dest-fix, r=arielb1
r? @arielb1
2016-02-07 20:27:51 +00:00
Paul Dicker
d1bfe9bccf Ignore if we can't create a symlink in this test 2016-02-07 21:10:29 +01:00
Alex Crichton
79a6373573 rustc: Tweak exe allocator for MinGW/rumprun
Both of these targets have jemalloc disabled unconditionally right now, so using
`maybe_jemalloc` here isn't right. This fixes the case where a Linux compiler
(which is itself configured to use jemalloc) attempts to cross-compile to MinGW,
causing it to try to find an `alloc_jemalloc` crate (and failing).
2016-02-07 12:05:03 -08:00
Simonas Kazlauskas
ae151d3945 [MIR] Fix the destination of implicit else branch 2016-02-07 21:47:23 +02:00
Paul Dicker
d47036cbd1 Don't let remove_dir_all recursively remove a symlink
See #29412
2016-02-07 19:31:14 +01:00
Simonas Kazlauskas
7faaf0e2de Do not forget to drop the boxes on scope exits
Fixes #31463
2016-02-07 18:03:15 +02:00
John Hodge
f08626bc9b Emit destructor invocation in FnOnce shim for Fn/FnMut
- Fixes #29946
2016-02-07 21:33:30 +08:00
bors
f50fb159e9 Auto merge of #31433 - nagisa:fix-man-ur, r=brson
seems to not work on OS X (or requires label, which would make link repeat twice on non-OS X)

Fixes https://github.com/rust-lang/rust/issues/31432
2016-02-07 10:33:36 +00:00
bors
e548d6c08f Auto merge of #31450 - bluss:no-null-markers, r=Gankro
Document that Unique<T> and Shared<T> are non-null
2016-02-07 07:57:06 +00:00
bors
1678072ce8 Auto merge of #31445 - saurvs:master, r=brson
Similar to https://github.com/rust-lang/rust/issues/31432. Links do not show in OS X for the ```rustdoc``` man page.
2016-02-07 03:50:39 +00:00
bors
3623797ebb Auto merge of #31440 - reem:rwlock-map-fix, r=alexcrichton
Also update the instability reason to include a note about a possible
bad interaction with condition variables on systems that allow
waiting on a RwLock guard.
2016-02-07 00:16:58 +00:00
bors
8c604dc940 Auto merge of #30629 - brson:emscripten-upstream, r=alexcrichton
Here's another go at adding emscripten support. This needs to wait again on new [libc definitions](https://github.com/rust-lang-nursery/libc/pull/122) landing. To get the libc definitions right I had to add support for i686-unknown-linux-musl, which are very similar to emscripten's, which are derived from arm/musl.

This branch additionally removes the makefile dependency on the `EMSCRIPTEN` environment variable by not building the unused compiler-rt.

Again, this is not sufficient for actually compiling to asmjs since it needs additional LLVM patches.

r? @alexcrichton
2016-02-06 21:18:50 +00:00
Brian Anderson
7afb56f51e Add emscripten support to compiletest 2016-02-06 20:56:31 +00:00
Brian Anderson
bd3fe498e5 Add support for i686-unknown-linux-musl 2016-02-06 20:56:31 +00:00
Brian Anderson
81ba4a78b5 rustc: Add obj_is_bitcode to TargetOptions
This tells trans:🔙:write not to LLVM codegen to create .o
files but to put LLMV bitcode in .o files.

Emscripten's emcc supports .o in this format, and this is,
I think, slightly easier than making rlibs work without .o
files.
2016-02-06 20:56:31 +00:00