63355 Commits

Author SHA1 Message Date
bors
ba377982a3 Auto merge of #41153 - petrochenkov:umove, r=pnkfelix
Fix move checking for nested union fields

Fixes https://github.com/rust-lang/rust/issues/41126
r? @arielb1
2017-04-14 16:28:14 +00:00
Robin Kruppe
e9c74bc42d Use associated constants in core::num::dec2flt 2017-04-14 17:31:33 +02:00
Aidan Hobson Sayers
bb843582ca Add a comment for disabling errexit 2017-04-14 15:30:01 +01:00
bors
5637ed7566 Auto merge of #41122 - palango:mod-desc-floats, r=frewsxcv
Improve module description for std::f32 and std::f64

Fixes #29353, see discussion there.
2017-04-14 13:24:27 +00:00
Evgeny Safronov
3ae20deac7 fix: add missing link in SUMMARY.md 2017-04-14 09:46:43 +03:00
Evgeny Safronov
4cea3f7403 docs: track newly introduced unstable feature 2017-04-14 09:46:03 +03:00
Evgeny Safronov
0eecd5150d refactor: add reason string 2017-04-14 09:46:03 +03:00
Evgeny Safronov
4cb9de48fb fix: add feature to doc tests 2017-04-14 09:46:03 +03:00
Evgeny Safronov
5a09d7c3de Add as_bytes() for FromUtf8Error.
This change allows to obtain an underlying invalid UTF-8 bytes
without `FromUtf8Error` destruction. Such method may be useful
for example in a library that attempts to save both valid and
invalid UTF-8 strings in some struct and to be able to provide
immutable access to it without destruction.
2017-04-14 09:46:03 +03:00
A.J. Gardner
a35c4e354a Comply with windows symbol name conventions 2017-04-13 23:41:03 -05:00
bors
4f32e0dfb2 Auto merge of #41294 - frewsxcv:rollup, r=frewsxcv
Rollup of 4 pull requests

- Successful merges: #41279, #41281, #41287, #41292
- Failed merges:
2017-04-14 02:02:13 +00:00
Corey Farwell
c04ae0f0cf Rollup merge of #41292 - est31:master, r=BurntSushi
Avoid to use floating point match

Its going to be forbidden, see issue #41255.
2017-04-13 22:01:28 -04:00
Corey Farwell
adc2b10399 Rollup merge of #41287 - nikomatsakis:incr-comp-refactor-trans, r=eddyb
Miscellneous refactorings of trans

This doesn't achieve any particular goal yet, but it's a collection of refactorings with the common goal of turning `SharedCrateContext` etc into stuff that we can use with on-demand and actually expect to hash in a stable fashion for incremental. Not there yet, clearly.

r? @eddyb
cc @michaelwoerister
2017-04-13 22:01:27 -04:00
Corey Farwell
017e3e94d0 Rollup merge of #41281 - steveklabnik:update-submodules2, r=guillaumegomez
bump book repos

Not ready to merge yet; I'd like to see what tidy says.
2017-04-13 22:01:26 -04:00
Corey Farwell
187f339c91 Rollup merge of #41279 - arielb1:adjustment-composition, r=nikomatsakis
rustc_typeck: consolidate adjustment composition

Instead of having `write_adjustment` overwrite the previous adjustment, have `apply_adjustment` compose a new adjustment on top of the previous one. This is important because `NeverToAny` adjustments can be present on expressions during coercion.

Fixes #41213.

r? @nikomatsakis
2017-04-13 22:01:25 -04:00
est31
baeec7b8eb Avoid to use floating point match
Its going to be forbidden, see issue 41255.
2017-04-14 03:39:03 +02:00
Niko Matsakis
07fb93e65a make write_metadata take tcx intead of SharedCrateContext 2017-04-13 18:38:23 -04:00
Niko Matsakis
f2487b8152 refactor metadata_symbol_name 2017-04-13 18:37:47 -04:00
Niko Matsakis
8e26983c86 pull stats out of SharedCrateContext
shared mutable state is bad
2017-04-13 18:37:47 -04:00
Niko Matsakis
f227187cb8 remove LinkMeta from SharedCrateContext
A number of things were using `crate_hash` that really ought to be using
`crate_disambiguator` (e.g., to create the plugin symbol names). They
have been updated.

It is important to remove `LinkMeta` from `SharedCrateContext` since it
contains a hash of the entire crate, and hence it will change
whenever **anything** changes (which would then require
rebuilding **everything**).
2017-04-13 18:37:47 -04:00
Niko Matsakis
c22fdf9a3a use tcx.crate_name(LOCAL_CRATE) rather than LinkMeta::crate_name 2017-04-13 18:37:47 -04:00
Niko Matsakis
3f59079f8a kill CrateContextList as a thing 2017-04-13 18:33:09 -04:00
Niko Matsakis
863927c712 rewrite post-processing routines not to require a CrateContext
These do some low-level munging on the LLVM data structures. Unclear
that they need to operate as a "second pass" but leave it for now.
2017-04-13 18:33:09 -04:00
Niko Matsakis
bc79f01a58 create ModuleTranslation all in one big loop 2017-04-13 18:33:09 -04:00
Niko Matsakis
6cb516ad7b move assert_module_sources call down below 2017-04-13 18:33:09 -04:00
Niko Matsakis
fe78b546ed merge the "predeclare" and "declare" phases so we run them per-CGU 2017-04-13 18:33:09 -04:00
Niko Matsakis
33875055f0 redirect exported_symbols through shared 2017-04-13 18:33:09 -04:00
Niko Matsakis
7b429242a5 remove unused link_meta 2017-04-13 18:33:09 -04:00
Niko Matsakis
b078ecefcd rewrite to pass a ref, not slice + index 2017-04-13 18:33:09 -04:00
Niko Matsakis
15507bcb64 remove metadata_* from SharedCrateContext
No good reason for them to be in there.
2017-04-13 18:33:09 -04:00
steveklabnik
537eb45b9d Update various bookshelf repositories.
The book and the reference have both had changes lately; this integrates
them upstream.
2017-04-13 18:15:40 -04:00
lukaramu
89ac8654e1 Various consistency and phrasing fixes in std::collections' docs
* Changed btree_map's and hash_map's Entry (etc.) docs to be consistent
* Changed VecDeque's type and module summary sentences to be consistent
  with each other as well as with other summary sentences in the module
* Changed HashMap's and HashSet's summary sentences to be less redundantly
  phrased and also more consistant with the other summary sentences in the
  module
* Also, added an example to Bound
2017-04-13 22:51:05 +02:00
lukaramu
d688c4d806 Various fixes throughout std::collections' docs
* Added links where possible (limited because of facading)
* Changed references to methods from `foo()` to `foo` in module docs
* Changed references to methods from `HashMap::foo` to just `foo` in
  top-level docs for `HashMap` and the `default` doc for `DefaultHasher`
* Various small other fixes
2017-04-13 22:51:05 +02:00
lukaramu
d64de94efa Update std::collections' docs to use iterator (etc.) boilerplate
This greatly improves consistency.
2017-04-13 22:51:05 +02:00
bors
28a7429977 Auto merge of #41227 - alexcrichton:compiletest, r=aturon
rustbuild: Fix recompilation of stage0 tools dir

This commit knocks out a longstanding FIXME in rustbuild which should correctly
recompile stage0 compiletest and such whenever libstd itself changes. The
solution implemented here was to implement a notion of "order only" dependencies
and then add a new dependency stage for clearing out the tools dir, using
order-only deps to ensure that it happens correctly.

The dependency drawing for tools is a bit wonky now but I think this'll get the
job done.

Closes #39396
2017-04-13 20:21:12 +00:00
Ariel Ben-Yehuda
03b0d99556 rustc_typeck: consolidate adjustment composition
Fixes #41213.
2017-04-13 21:27:35 +03:00
bors
ea376822a1 Auto merge of #41277 - frewsxcv:rollup, r=frewsxcv
Rollup of 3 pull requests

- Successful merges: #41240, #41250, #41266
- Failed merges:
2017-04-13 17:32:22 +00:00
Corey Farwell
6afb2c48d9 Rollup merge of #41266 - projektir:weak_docs_rc, r=alexcrichton
Updating docs for std::rc::Rc

The same changes as PR [#41240 ](https://github.com/rust-lang/rust/pull/41240), but for [`std::rc::Weak`](https://doc.rust-lang.org/std/rc/struct.Weak.html). At least, as far as I am aware, the Weak pointer is the same for both, and they're basically the same, just one is thread-safe and the other is not.

r? @alexcrichton
2017-04-13 13:04:16 -04:00
Corey Farwell
6dfd8f6e12 Rollup merge of #41250 - kennytm:fix-41228, r=nikomatsakis
Fix invalid 128-bit division on 32-bit target (#41228)

The bug of #41228 is a typo, this line: 1dca19ae3f/src/libcompiler_builtins/lib.rs (L183)

```rust
            // 1 <= sr <= u64::bits() - 1
            q = n.wrapping_shl(64u32.wrapping_sub(sr));
```

The **64** should be **128**.

(Compare with 280d19f112/src/int/udiv.rs (L213-L214):

```rust
            // 1 <= sr <= <hty!($ty)>::bits() - 1
            q = n << (<$ty>::bits() - sr);
```

Or compare with the C implementation https://github.com/llvm-mirror/compiler-rt/blob/master/lib/builtins/udivmodti4.c#L113-L116

```c
        /* 1 <= sr <= n_udword_bits - 1 */
        /* q.all = n.all << (n_utword_bits - sr); */
        q.s.low = 0;
        q.s.high = n.s.low << (n_udword_bits - sr);
```
)

Added a bunch of randomly generated division test cases to try to cover every described branch of `udivmodti4`.
2017-04-13 13:04:15 -04:00
Corey Farwell
9eb3468e2f Rollup merge of #41240 - projektir:weak_docs, r=alexcrichton
Updating docs for std::sync::Weak #29377

I will duplicate these changes for [`std::rc::Weak`] if they are approved.

[`std::rc::Weak`]: https://doc.rust-lang.org/std/rc/struct.Weak.html

r? @jonathandturner
2017-04-13 13:04:14 -04:00
Alex Crichton
2a33559207 rustbuild: Fix recompilation of stage0 tools dir
This commit knocks out a longstanding FIXME in rustbuild which should correctly
recompile stage0 compiletest and such whenever libstd itself changes. The
solution implemented here was to implement a notion of "order only" dependencies
and then add a new dependency stage for clearing out the tools dir, using
order-only deps to ensure that it happens correctly.

The dependency drawing for tools is a bit wonky now but I think this'll get the
job done.

Closes #39396
2017-04-13 09:47:00 -07:00
Jon Gjengset
368d56010a
Rename compiler_barrier to compiler_fence
This addresses concerns raised following the merge of #41092.
Specifically:

> The naming of these seems surprising: the multithreaded functions (and
> both the single and multithreaded intrinsics themselves) are fences,
> but this is a barrier. It's not incorrect, but the latter is both
> inconsistent with the existing functions and slightly confusing with
> another type in std (e.g., `Barrier`).

`compiler_fence` carries the same semantic implication that this is a
compiler-only operation, while being more in line with the fence/barrier
concepts already in use in `std`.
2017-04-13 10:27:52 -04:00
alexey zabelin
14eac29753
Address the PR review 2017-04-13 09:53:22 -04:00
bors
43ef63d5b4 Auto merge of #40367 - eddyb:naked-cruft, r=nagisa
Improve the LLVM IR we generate for trivial functions, especially #[naked] ones.

These two small changes fix edef1c/libfringe#68:
* Don't emit ZST allocas, such as when returning `()`
* Don't emit a branch from LLVM's entry block to MIR's `START_BLOCK` unless needed
  * That is, if a loop branches back to it, although I'm not sure that's even valid MIR
2017-04-13 11:47:33 +00:00
bors
1f59c7ebb1 Auto merge of #41267 - alexcrichton:fix-analysis-dist, r=alexcrichton
travis: Enable rust-analysis package for more targets

This commit enables the `rust-analysis` package to be produced for all targets
that are part of the `dist-*` suite of docker images on Travis. Currently
these packages are showing up with `available = false` in the
`channel-rust-nightly.toml` manifest where we'd prefer to have them show up for
all targets.

Unfortunately rustup isn't handling the `available = false` section well right
now, so this should also inadvertently fix the nightly regression.
2017-04-13 09:16:11 +00:00
bors
6c03efd8f3 Auto merge of #41009 - scottmcm:toowned-clone-into, r=alexcrichton
Add a resource-reusing method to `ToOwned`

`ToOwned::to_owned` generalizes `Clone::clone`, but `ToOwned` doesn't have an equivalent to `Clone::clone_from`.  This PR adds such a method as `clone_into` under a new unstable feature `toowned_clone_into`.

Analogous to `clone_from`, this has the obvious default implementation in terms of `to_owned`.  I've updated the `libcollections` impls: for `T:Clone` it uses `clone_from`, for `[T]` I moved the code from `Vec::clone_from` and implemented that in terms of this, and for `str` it's a predictable implementation in terms of `[u8]`.

Used it in `Cow::clone_from` to reuse resources when both are `Cow::Owned`, and added a test that `Cow<str>` thus keeps capacity in `clone_from` in that situation.

The obvious question: is this the right place for the method?
- It's here so it lives next to `to_owned`, making the default implementation reasonable, and avoiding another trait.  But allowing method syntax forces a name like `clone_into`, rather than something more consistent like `owned_from`.
- Another trait would allow `owned_from` and could support multiple owning types per borrow type.  But it'd be another single-method trait that generalizes `Clone`, and I don't know how to give it a default impl in terms of `ToOwned::to_owned`, since a blanket would mean overlapping impls problems.

I did it this way as it's simpler and many of the `Borrow`s/`AsRef`s don't make sense with `owned_from` anyway (`[T;1]:Borrow<[T]>`, `Arc<T>:Borrow<T>`, `String:AsRef<OsStr>`...).  I'd be happy to re-do it the other way, though, if someone has a good solution for the default handling.

(I can also update with `CStr`, `OsStr`, and `Path` once a direction is decided.)
2017-04-13 06:46:29 +00:00
A.J. Gardner
63a074791e Make simple_global_asm even simpler
Windows builder croaked. This change tries to fix that by actually
calling the global_asm-defined function so the symbol doesn't get
optimized away, if that is in fact what was happening.

Additionally, we provide an empty main() for non-x86 arches.
2017-04-13 00:49:13 -05:00
Alex Crichton
cdedecb7ba travis: Enable rust-analysis package for more targets
This commit enables the `rust-analysis` package to be produced for all targets
that are part of the `dist-*` suite of docker images on Travis. Currently
these packages are showing up with `available = false` in the
`channel-rust-nightly.toml` manifest where we'd prefer to have them show up for
all targets.

Unfortunately rustup isn't handling the `available = false` section well right
now, so this should also inadvertently fix the nightly regression.
2017-04-12 20:48:18 -07:00
projektir
f84cc0c0d0 Updating docs for std::rc::Rc 2017-04-12 22:57:49 -04:00
alexey zabelin
a50737051a
Fix old docs
#41158
2017-04-12 20:46:44 -04:00