Commit Graph

85359 Commits

Author SHA1 Message Date
kennytm
0cf957db39
Rollup merge of #55473 - ljedrz:transitive/elaborate_bounds_impl_iterator, r=estebank
Take advantage of impl Iterator in (transitive/elaborate)_bounds

Other than for `debug!`ging purposes, `bounds` are only iterated over, so they don't need to be collected into vectors.
2018-10-30 18:55:30 +08:00
kennytm
dc04aaf777
Rollup merge of #55472 - ljedrz:use_option_take, r=cramertj
Use opt.take() instead of mem::replace(opt, None)

It's easier to read.
2018-10-30 18:55:29 +08:00
kennytm
64417a70fc
Rollup merge of #55459 - memoryruins:issue-49296, r=oli-obk
Add UI test for #49296

Closes #49296

r? @oli-obk
2018-10-30 18:55:28 +08:00
kennytm
8c8581703e
Rollup merge of #55450 - japaric:msp430, r=alexcrichton
msp430: remove the whole Atomic* API

PR #51953 enabled the Atomic*.{load,store} API on MSP430. Unfortunately,
the LLVM backend doesn't currently support those atomic operations, so this
commit removes the API and leaves instructions on how and when to enable it
in the future.

the second fixes compiling liballoc for msp430

closes #54511
r? @alexcrichton
cc @chernomor @awygle @cr1901 @pftbest
2018-10-30 18:55:27 +08:00
kennytm
62f4316b01
Rollup merge of #55205 - ljedrz:faster_fxhashmap/set_population, r=estebank
Improve a few cases of collecting to an FxHash(Map/Set)

Either use `collect` or procure specified capacity when possible.
2018-10-30 18:55:26 +08:00
kennytm
df511e94a0
Rollup merge of #54885 - llogiq:fix-54704, r=nikomatsakis
Don't lint 'unused_parens` on `if (break _) { .. }`

This fixes #54704
2018-10-30 18:55:25 +08:00
bors
b1ca3907e0 Auto merge of #55221 - matthewjasper:fewer-duplicate-migrate-messages, r=pnkfelix
Don't emit cannot move errors twice in migrate mode

Closes #55154
cc #53004

r? @pnkfelix
2018-10-30 03:57:53 +00:00
bors
fb2446ad58 Auto merge of #55190 - dlavati:51574_rename_codemap_filemap, r=petrochenkov
Rename other occs of (Code/File)Map to Source(Map/File) #51574

Additional renamings for #51574.
2018-10-30 01:02:40 +00:00
David Lavati
6c9f6a1afd Rename other occs of (Code/File)Map to Source(Map/File) #51574 2018-10-29 21:26:13 +01:00
Matthew Jasper
42a541e0f1 Don't emit cannot move errors twice in migrate mode 2018-10-29 20:22:01 +00:00
ljedrz
40079ac42d Take advantage of impl Iterator in (transitive/elaborate)_bounds 2018-10-29 14:56:24 +01:00
ljedrz
2203ec38cb Use opt.take() instead of mem::replace(opt, None) 2018-10-29 13:48:26 +01:00
Andre Bogus
1a37575ade don't lint unused_parens on if (break _) 2018-10-29 12:41:56 +01:00
bors
d586d5d2f5 Auto merge of #55462 - pietroalbini:rollup, r=pietroalbini
Rollup of 9 pull requests

Successful merges:

 - #54965 (update tcp stream documentation)
 - #55269 (fix typos in various places)
 - #55384 (Avoid unnecessary allocations in `float_lit` and `integer_lit`.)
 - #55423 (back out bogus `Ok`-wrapping suggestion on `?` arm type mismatch)
 - #55426 (Make a bunch of trivial methods of NonNull be `#[inline]`)
 - #55438 (Avoid directly catching BaseException in bootstrap configure script)
 - #55439 (Remove unused sys import from generate-deriving-span-tests)
 - #55440 (Remove unreachable code in hasClass function in Rustdoc)
 - #55447 (Fix invalid path in generate-deriving-span-tests.py.)

Failed merges:

r? @ghost
2018-10-29 10:19:17 +00:00
Pietro Albini
eb00b4792c
Rollup merge of #55447 - frewsxcv:frewsxcv-rename, r=Mark-Simulacrum
Fix invalid path in generate-deriving-span-tests.py.

This script broke after #53196 – the tests were moved.
2018-10-29 09:47:52 +01:00
Pietro Albini
9786d98056
Rollup merge of #55440 - xfix:patch-11, r=GuillaumeGomez
Remove unreachable code in hasClass function in Rustdoc
2018-10-29 09:47:51 +01:00
Pietro Albini
a733a56e6c
Rollup merge of #55439 - xfix:patch-10, r=frewsxcv
Remove unused sys import from generate-deriving-span-tests
2018-10-29 09:47:50 +01:00
Pietro Albini
9d999a53b0
Rollup merge of #55438 - xfix:patch-9, r=frewsxcv
Avoid directly catching BaseException in bootstrap configure script

It includes stuff like pressing CTRL+C, which likely isn't intended.
2018-10-29 09:47:49 +01:00
Pietro Albini
06d0540e8c
Rollup merge of #55426 - fitzgen:nonnull-inline, r=SimonSapin
Make a bunch of trivial methods of NonNull be `#[inline]`

I was seeing super trivial methods not getting inlined in some of my builds, so I went ahead and just marked all the methods inline where it seemed appropriate.

r? @SimonSapin
2018-10-29 09:47:48 +01:00
Pietro Albini
e5d9da76f2
Rollup merge of #55423 - zackmdavis:back_out_bogus_ok_wrapping_suggestion, r=estebank
back out bogus `Ok`-wrapping suggestion on `?` arm type mismatch

This suggestion was introduced in #51938 / 6cc78bf8d7 (while introducing different language for type errors coming from `?` rather than a `match`), but it has a lot of false-positives, and incorrect suggestions carry more badness than marginal good suggestions do goodness. I regret not doing this earlier. 😞

Resolves #52537, resolves #54578.

r? @estebank
2018-10-29 09:47:46 +01:00
Pietro Albini
97ff2d6ab1
Rollup merge of #55384 - nnethercote:better-integer_lit-float_lit, r=michaelwoerister
Avoid unnecessary allocations in `float_lit` and `integer_lit`.

This commit avoids an allocation when parsing any float and integer
literals that don't involved underscores.

This reduces the number of allocations done for the `tuple-stress`
benchmark by 10%, reducing its instruction count by just under 1%.
2018-10-29 09:47:45 +01:00
ljedrz
73d4eec186 Improve a few cases of collecting to an FxHash(Map/Set) 2018-10-29 09:45:19 +01:00
memoryruins
fc2aa3fe0e Add UI test for #49296 2018-10-29 00:09:32 -04:00
bors
4e88b7363b Auto merge of #55270 - RalfJung:stacked-borrows-ng, r=oli-obk
miri engine: Stacked Borrows NG

For more refined tracking in miri, we do return untagged pointers from the memory abstraction after allocations and let the caller decide how to tag these.

Also refactor the `tag_(de)reference` hooks so they can be more easily called in the ref-to-place and place-to-ref methods, and reorder things in validation: validation calls ref-to-place which (when running in miri) triggers some checks, so we want to run it rather late and catch other problems first. We also do not need to redundantly check the ref to be allocated any more, the checks miri does anyway imply thath.

r? @oli-obk
2018-10-29 03:28:31 +00:00
bors
bcb05a0ab2 Auto merge of #55043 - oliver-giersch:unchecked_thread_spawning, r=alexcrichton
Unchecked thread spawning

# Summary

Add an unsafe interface for spawning lifetime-unrestricted threads for
library authors to build less-contrived, less-hacky safe abstractions
on.

# Motivation

So a few years back scoped threads were entirely removed from the Rust
stdlib, the reason being that it was possible to leak the scoped thread's
join guards without resorting to unsafe code, which meant the concept
was not completely safe, either.
Only a maximally-restrictive safe API for thread spawning was kept in the
stdlib, that requires `'static` lifetime bounds on both the thread closure
and its return type.
A number of 3rd party libraries sprung up to offer their implementations
for safe scoped threads implementations.
These work by essentially hiding the join guards from the user, thus
forcing them to join at the end of an (internal) function scope.

However, since these libraries have to use the maximally restrictive
thread spawning API, they have to resort to some very contrived manipulations
and subversions of Rust's type system to basically achieve what this commit does
with some minimal restructuring of the current code and exposing a new unsafe
function signature for spawning threads without lifetime restrictions.
Obviously this is unsafe, but its main use would be to allow library authors
to write safe abstractions with and around it.
To further illustrate my point, here's a quick summary of the hoops that,
for instance `crossbeam`, has to jump through to spawn a lifetime unrestricted
thread, all of which would not be necessary if an unsafe API existed as part
of the stdlib:

1. Allocate an `Arc<Option<T>>` on the heap where the result with type
`T: 'a` will go (in practice requires `Mutex` or `UnsafeCell` as well).

2. Wrap the desired thread closure with lifetime bound `'a` into another
closure (also `..: 'a`) that returns `()`, executes the inner closure and
writes its result into the pre-allocated `Option<T>`.

3. Box the wrapping closure, cast it to a trait object (`FnBox`) and
(unsafely) transmute its lifetime bound from `'a` to `'static`.

So while this new `spawn_unchecked` function is certainly not very relevant
for general use, since scoped threads are so common I think it makes sense
to expose an interface for libraries implementing these to build on.
The changes implemented are also very minimal: The current `spawn` function
(which internally contains unsafe code) is moved into an unsafe `spawn_unchecked`
function, which the safe function then wraps around.

# Issues

- ~~so far, no documentation for the new function (yet)~~
- the name of the function might be controversial, as `*_unchecked` more commonly
indicates that some sort of runtime check is omitted (`unrestricted` may be
more fitting)
- if accepted, it might make sense to add a freestanding `thread::spawn_unchecked`
function similar to the current `thread::spawn` for convenience.
2018-10-28 21:34:12 +00:00
bors
96064eb61d Auto merge of #54487 - RalfJung:ctfe-backtrace, r=oli-obk
Delayed CTFE backtraces

This renames the env var that controls CTFE backtraces from `MIRI_BACKTRACE` to `RUST_CTFE_BACKTRACE` so that we can use `MIRI_BACKTRACE` in the miri tool to only show backtraces of the main miri execution.

It also makes `RUST_CTFE_BACKTRACE` only show backtraces that actually get rendered as errors, instead of showing them eagerly when the `Err` happens. The current behavior is near useless in miri because it shows about one gazillion backtraces for errors that we later catch and do not care about. However, @oli-obk likes the current behavior for rustc CTFE work so it is still available via `RUST_CTFE_BACKTRACE=immediate`.

NOTE: This is based on top of https://github.com/rust-lang/rust/pull/53821. Only [the last three commits](https://github.com/oli-obk/rust/compare/sanity_query...RalfJung:ctfe-backtrace) are new.

Fixes https://github.com/rust-lang/rust/issues/53355
2018-10-28 18:49:46 +00:00
Jorge Aparicio
f67b4e07d8 msp430: fix compilation of liballoc 2018-10-28 19:08:13 +01:00
Jorge Aparicio
8255671ac8 msp430: remove the whole Atomic* API
PR #51953 enabled the Atomic*.{load,store} API on MSP430. Unfortunately, the
LLVM backend doesn't currently support those atomic operations, so this commit
removes the API and leaves instructions on how and when to enable it in the
future.
2018-10-28 19:03:45 +01:00
Corey Farwell
ea026b865a Fix invalid path in generate-deriving-span-tests.py.
This script broke after #53196 after the tests were moved.
2018-10-28 12:12:00 -04:00
bors
d492c6792c Auto merge of #55433 - kennytm:rollup, r=kennytm
Rollup of 11 pull requests

Successful merges:

 - #55148 (Implement FromStr for PathBuf)
 - #55185 (path suggestions in Rust 2018 should point out the change in semantics)
 - #55191 (Fix sub-variant doc display)
 - #55199 (Impl items have generics)
 - #55244 (Don't rerun MIR passes when inlining)
 - #55252 (Add MaybeUninit::new)
 - #55257 (Allow extern statics with an extern type)
 - #55389 (Remove unnecessary mut in iterator.find_map documentation example, R…)
 - #55406 (Update string.rs)
 - #55412 (Fix an ICE in the min_const_fn analysis)
 - #55421 (Add ManuallyDrop::take)
2018-10-28 16:00:00 +00:00
kennytm
db4e77ce91
Rollup merge of #55199 - oli-obk:instance_printing, r=davidtwco
Impl items have generics
2018-10-28 21:38:53 +08:00
kennytm
abf7243066
Rollup merge of #55257 - mjbshaw:static, r=oli-obk
Allow extern statics with an extern type

Fixes #55239
2018-10-28 21:38:12 +08:00
kennytm
aaa20c61d6
Rollup merge of #55185 - davidtwco:issue-55130, r=nikomatsakis
path suggestions in Rust 2018 should point out the change in semantics

Fixes #55130.

This commit extends existing path suggestions to link to documentation
on the changed semantics of `use` in Rust 2018.
2018-10-28 21:37:26 +08:00
kennytm
360f32abf4
Rollup merge of #55421 - CAD97:patch-1, r=kennytm
Add ManuallyDrop::take

Tracking issue: #55422

Proposed in this form in https://internals.rust-lang.org/t/mini-rfc-manuallydrop-take/8679,
see that thread for some history.

A small convenience wrapper for `ManuallyDrop` that makes a pattern (taking ownership of the contained data in drop) more obvious.
2018-10-28 21:32:03 +08:00
kennytm
b565e5d575
Rollup merge of #55412 - oli-obk:min_const_fn_ice, r=estebank
Fix an ICE in the min_const_fn analysis

fixes https://github.com/rust-lang/rust/issues/55395

cc @Centril
2018-10-28 21:23:41 +08:00
kennytm
7a95c285f7
Rollup merge of #55406 - rick68:patch-16, r=varkor
Update string.rs

remove unused variable i in example String::with_capacity()
2018-10-28 21:23:38 +08:00
kennytm
316a4432be
Rollup merge of #55389 - meven:master, r=shepmaster
Remove unnecessary mut in iterator.find_map documentation example, R…

Relates to #49098

Removes a mut that could induce newcomers to put a mut in their code that the compiler would comply about.

https://github.com/rust-lang/rust/pull/49098/files#r227422388
2018-10-28 21:23:34 +08:00
bors
4f5cfa611d Auto merge of #55192 - cramertj:nested-mod, r=petrochenkov
Fix ordering of nested modules in non-mod.rs mods

Flatten relative offset into directory path before adding inline
(mod x { ... }) module names to the current directory path.

Fix #55094
2018-10-28 13:13:55 +00:00
Konrad Borowski
b7c2b471cf
Remove unreachable code in hasClass function in Rustdoc 2018-10-28 12:12:29 +01:00
Konrad Borowski
613f9f2013
Remove unused sys import from generate-deriving-span-tests 2018-10-28 12:06:28 +01:00
Konrad Borowski
695ddbfbd5
Avoid directly catching BaseException in bootstrap configure script
It includes stuff like pressing CTRL+C, which likely isn't intended.
2018-10-28 12:03:29 +01:00
Ralf Jung
95b19bbb6f don't be too perf-greedy 2018-10-28 11:49:02 +01:00
Ralf Jung
b2612cbaf7 don't tag new memory inside memory.rs; add machine hook to tag new memory 2018-10-28 11:49:02 +01:00
Ralf Jung
5903fdb281 always print backtrace when CTFE_BACKTRACE is set
No point in making the user also enable RUST_LOG
2018-10-28 11:33:33 +01:00
Ralf Jung
aaa505af02 remove some unused CTFE error variants 2018-10-28 11:33:33 +01:00
Ralf Jung
02a42382f6 rename env var to control ctfe backtraces, and make it usually show the backtrace delayed
The env var is now RUST_CTFE_BACKTRACE.  Similar to RUST_BACKTRACE, it usually
only prints a backtrace when the error actually surfaces, not when it happens.
This makes a difference when we catch errors.

As per @oli-obk's request, one can set RUST_CTFE_BACKTRACE=immediate to get the
backtrace shown immediately.
2018-10-28 11:33:27 +01:00
Ralf Jung
ff3b29fc54 make memory private; that's what we have memory_mut for 2018-10-28 11:21:41 +01:00
Ralf Jung
f5e8830278 validity in non-const mode relies on ref_to_mplace checking bounds; (de)reference hooks work on places 2018-10-28 11:21:41 +01:00
Ralf Jung
048900c5b6 make (de)reference hooks more consistent 2018-10-28 11:21:41 +01:00
kennytm
a79b91231e
Rollup merge of #55252 - SimonSapin:maybeuninit-new, r=bluss
Add MaybeUninit::new

Sometimes it *is* initialized!
2018-10-28 16:38:48 +08:00