bors [Wed, 17 Oct 2018 23:16:10 +0000 (23:16 +0000)]
Auto merge of #55134 - davidtwco:issue-55118, r=pnkfelix
NLL: change compare-mode=nll to use borrowck=migrate
Fixes #55118.
This PR is split into two parts:
The first commit is a minor change that fixes a flaw in the existing `borrowck=migrate` implementation whereby a lint that was promoted to an error in the AST borrow checker would result in the same lint from the NLL borrow checker being downgraded to a warning in migrate mode. This PR fixes this by ensuring lints are exempt from buffering in the NLL borrow checker.
The second commit updates `compiletest` to make the NLL compare mode use `-Z borrowck=migrate` rather than `-Z borrowck=mir`. The third commit shows all the test output changes that result from this.
bors [Wed, 17 Oct 2018 11:47:53 +0000 (11:47 +0000)]
Auto merge of #54946 - estebank:iterator, r=varkor
Add filtering option to `rustc_on_unimplemented` and reword `Iterator` E0277 errors
- Add more targetting filters for arrays to `rustc_on_unimplemented` (Fix #53766)
- Detect one element array of `Range` type, which is potentially a typo:
`for _ in [0..10] {}` where iterating between `0` and `10` was intended.
(Fix #23141)
- Suggest `.bytes()` and `.chars()` for `String`.
- Suggest borrowing or `.iter()` on arrays (Fix #36391)
- Suggest using range literal when iterating on integers (Fix #34353)
- Do not suggest `.iter()` by default (Fix #50773, fix #46806)
- Add regression test (Fix #22872)
bors [Wed, 17 Oct 2018 01:59:28 +0000 (01:59 +0000)]
Auto merge of #54671 - petrochenkov:extpre2015, r=nikomatsakis
resolve: Scale back hard-coded extern prelude additions on 2015 edition
https://github.com/rust-lang/rust/pull/54404 stabilized `feature(extern_prelude)` on 2015 edition, including the hard-coded parts not passed with `--extern`.
First of all, I'd want to confirm that this is intended stabilization, rather than a part of the "extended beta" scheme that's going to be reverted before releasing stable.
(EDIT: to clarify - this is a question, I'm \*asking\* for confirmation, rather than give it.)
Second, on 2015 edition extern prelude is not so fundamentally tied to imports and is a mere convenience, so this PR scales them back to the uncontroversial subset.
The "uncontroversial subset" means that if libcore is injected it brings `core` into prelude, if libstd is injected it brings `std` and `core` into prelude.
On 2015 edition this can be implemented through the library prelude (rather than hard-coding in the compiler) right now, I'll do it in a follow-up PR.
UPDATE: The change is done for both 2015 and 2018 editions now as discussed below.
bors [Tue, 16 Oct 2018 23:27:43 +0000 (23:27 +0000)]
Auto merge of #55093 - nikomatsakis:nll-issue-54574-multisegment-path, r=pnkfelix
nll type annotations in multisegment path
This turned out to be sort of tricky. The problem is that if you have a path like
```
<Foo<&'static u32>>::bar
```
and it comes from an impl like `impl<T> Foo<T>` then the self-type the user gave doesn't *directly* map to the substitutions that the impl wants. To handle this, then, we have to preserve not just the "user-given substs" we used to do, but also a "user-given self-ty", which we have to apply later. This PR makes those changes.
It also removes the code from NLL relate-ops that handled canonical variables and moves to use normal inference variables instead. This simplifies a few things and gives us a bit more flexibility (for example, I predict we are going to have to start normalizing at some point, and it would be easy now).
r? @matthewjasper -- you were just touching this code, do you feel comfortable reviewing this?
David Wood [Tue, 16 Oct 2018 22:57:32 +0000 (00:57 +0200)]
Update output for borrowck=migrate compare mode.
This commit updates the test output for the updated NLL compare mode
that uses `-Z borrowck=migrate` rather than `-Z borrowck=mir`. The
previous commit changes `compiletest` and this commit only updates
`.nll.stderr` files.
David Wood [Tue, 16 Oct 2018 22:51:05 +0000 (00:51 +0200)]
Change NLL compare mode to borrowck=migrate.
This commit changes the NLL compare mode to pass `-Z borrowck=migrate`
rather than `-Z borrowck=nll` to better test what will be deployed. It
does not include the test output updates, as separation of these commits
makes reviewing simpler.
David Wood [Tue, 16 Oct 2018 22:47:28 +0000 (00:47 +0200)]
Don't buffer lints.
When lints are emitted from the AST borrow checker, they do not signal
an error as it is not known at that time whether, due to attributes,
that lint will error or warn. This means that when lints are buffered
in the MIR they will always be downgraded, as the AST borrowck will not
have been marked as having errored, even if a lint was upgraded to
an error after being emitted from the AST borrowck. The simple solution
to this is to not buffer any lints from the MIR borrowck.
Don't complain re missing `mut` on attempt to partially initialize an uninitialized struct.
Under the semantics of #54986 (our short term plan), the partial
initialization itself will signal an error. We don't need to add noise
to the output by also complaining about `mut`. (In particular, the
user may well revise their code in a way that does not require `mut`.)
Cleanup `fn is_mutable` by removing some unnecessary control-flow breaks.
(This makes it a little easier to add instrumentation of the entry and
exit by adding `debug!` at the beginning and end, though note that the
function body *does* use the `?` operator...)
bors [Tue, 16 Oct 2018 02:06:26 +0000 (02:06 +0000)]
Auto merge of #55023 - euclio:llvm-error-handler, r=cuviper
Exit with code 101 on fatal codegen errors
Fixes #54992.
This PR installs a custom fatal error handler that prints the error from LLVM and exits with 101. There should be no visible change in the output from LLVM. This allows distinguishing a fatal LLVM error with a compilation error by exit code.
This PR also modifies the LLVM codegen backend to ICE instead of emitting a fatal error when encountering a LLVM worker thread panic for the same reason.
Niko Matsakis [Wed, 10 Oct 2018 18:56:24 +0000 (14:56 -0400)]
make `TypeRelating` take an infcx again
At some point, I had thought to use this code to handle equality
comparisons for the `IfEq` verify bounds; at that point, we might not
have had an infcx to talk about. But we wound up doing "SCC
representatives" instead, so that's fine.
Rollup merge of #55081 - sinkuu:dedup_test, r=Manishearth
Deduplicate tests
* [`ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-4`](https://github.com/rust-lang/rust/blob/0c665e20db6c61de8f741bca3ca7660e679885c0/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-4.rs)
and [`ex3-both-anon-regions-both-are-structs-3`](https://github.com/rust-lang/rust/blob/0c665e20db6c61de8f741bca3ca7660e679885c0/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs)
* [`ui/lint/lint-group-style`](https://github.com/rust-lang/rust/blob/0c665e20db6c61de8f741bca3ca7660e679885c0/src/test/ui/lint/lint-group-style.rs) and [`lint-group-nonstandard-style`](https://github.com/rust-lang/rust/blob/0c665e20db6c61de8f741bca3ca7660e679885c0/src/test/ui/lint/lint-group-nonstandard-style.rs)
Rollup merge of #55060 - jannic:patch-1, r=joshtriplett
clarify pointer add/sub function safety concerns
Ralf Jung made the same changes to the offset functions' documentation
in commit fb089156. As add/sub just call offset, the same limitation
applies here, as well.
I did not copy the whole explanation ("In particular, the resulting pointer may *not* be used to access a different allocated object [...]") because I'd consider that as being too repetitive. The documentation of add/sub already refers to the offset function, so people interested in the details can look it up, there.
But changing 'an object' to 'the same object' is a small change which improves clarity a lot.
Rollup merge of #55025 - ehuss:missing-lifetime-err-msg, r=petrochenkov
Add missing lifetime fragment specifier to error message.
A very minor issue, `lifetime` was missing from the error list.
I left `literal` in the list, even though it is unstable. It looks like it may stabilize soon anyways.
Rollup merge of #54963 - ljedrz:cleanup_rustc_session, r=varkor
Cleanup rustc/session
- improve allocations
- improve common patterns
- use `to_owned` when no string conversion is needed
- move `const`s up to improve readability
- whitespace & formatting improvements
````
fix for rustc master
mem_forget: fix syntax error in code sample
explicit_counter_loop fix #3308 false positive
new_ret_no_self test remove tool lints cfg flag
Added new_ret_no_self exception to clippy to pass dogfood tests
Removed new_ret_no_self tests from method.rs
new_ret_no_self correctly lint impl return
Removed unused variables
new_ret_no_self fix false positive for impl trait return with associated type self
new_ret_no_self corrected panic and added test stderr
new_ret_no_self added positive test cases
Fix some more `stutter` warnings
unused unit lint
Install Windows SDK 10.0 on travis
cmp_owned refactor
cmp_owned correct error message if rhs is deref
Add a comment reminding to update README if the default changes
Specify which categories are enabled by default
Only run markdown linter on linux
Move Travis Windows build to allowed failures
Add Travis windows build
Fix `doc_markdown` lints
Fix `stutter` lints
Fix `similar_names` warnings
cmp_owned current suggestion for multiple deref
cmp_owned add test for multiple dereference
Corrected single-character string constant used as pattern found in dogfood test
Fixes 3289, cmp_owned wording and false positive
````
bors [Mon, 15 Oct 2018 06:36:23 +0000 (06:36 +0000)]
Auto merge of #55064 - RalfJung:miri-update, r=oli-obk
update miri
This pulls in the changes in miri to actually enable validation. So, the rustc test suite will let us know if anything we cover regresses in that regard. :)
````
fix for rustc master
mem_forget: fix syntax error in code sample
explicit_counter_loop fix #3308 false positive
new_ret_no_self test remove tool lints cfg flag
Added new_ret_no_self exception to clippy to pass dogfood tests
Removed new_ret_no_self tests from method.rs
new_ret_no_self correctly lint impl return
Removed unused variables
new_ret_no_self fix false positive for impl trait return with associated type self
new_ret_no_self corrected panic and added test stderr
new_ret_no_self added positive test cases
Fix some more `stutter` warnings
unused unit lint
Install Windows SDK 10.0 on travis
cmp_owned refactor
cmp_owned correct error message if rhs is deref
Add a comment reminding to update README if the default changes
Specify which categories are enabled by default
Only run markdown linter on linux
Move Travis Windows build to allowed failures
Add Travis windows build
Fix `doc_markdown` lints
Fix `stutter` lints
Fix `similar_names` warnings
cmp_owned current suggestion for multiple deref
cmp_owned add test for multiple dereference
Corrected single-character string constant used as pattern found in dogfood test
Fixes 3289, cmp_owned wording and false positive
````
bors [Mon, 15 Oct 2018 02:48:24 +0000 (02:48 +0000)]
Auto merge of #55024 - alexcrichton:wasm-simd-by-val, r=estebank
rustc: Allow targets to specify SIMD args are by-val
The upcoming SIMD support in the wasm target is unique from the other
platforms where it's either unconditionally available or not available,
there's no halfway where a subsection of the program can use it but no
other parts of the program can use it. In this world it's valid for wasm
SIMD args to always be passed by value and there's no need to pass them
by reference.
This commit adds a new custom target specification option
`simd_types_indirect` which defaults to `true`, but the wasm backend
disables this and sets it to `false`.
Shotaro Yamada [Mon, 15 Oct 2018 00:29:17 +0000 (09:29 +0900)]
Deduplicate tests
* `ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-4`
and `ex3-both-anon-regions-both-are-structs-3`
* `ui/lint/lint-group-style` and `lint-group-nonstandard-style`
bors [Mon, 15 Oct 2018 00:18:27 +0000 (00:18 +0000)]
Auto merge of #55008 - ljedrz:cleanup_rustc_driver, r=estebank
Cleanup rustc/driver
- improve/remove allocations
- simplify `profile::trace::cons*`
- don't sort `base` if it only has one element
- use `Cow<str>` where applicable
- use `unwrap_or_else` with function calls
- remove an explicit `return`, add an explicit `None`
- remove lifetimes from `const`s
- improve common patterns
- improve macro calls
- whitespace & formatting fixes
Jan Niehusmann [Sun, 14 Oct 2018 20:23:33 +0000 (20:23 +0000)]
remove unnecessary emphasis in doc comment
During review of the previous commit, @joshtriplett noticed that
the emphasis on 'the same' is unnecessary. For consistency, remove it
on the offset() functions, as well.
Jan Niehusmann [Sun, 14 Oct 2018 08:06:36 +0000 (08:06 +0000)]
clarify pointer add/sub function safety concerns
Ralf Jung made the same changes to the offset functions' documentation
in commit fb089156. As add/sub just call offset, the same limitation
applies here, as well.
Removed emphasis on review request by @joshtriplett
bors [Sun, 14 Oct 2018 14:24:19 +0000 (14:24 +0000)]
Auto merge of #55055 - matthiaskrgr:bump_beta, r=Mark-Simulacrum
bump bootstrap compiler to rustc beta 2018-10-13
beta was switched to bootstrap from stable 1.29.2 since 1.29.2 got the aliasing bug workaround.
For extra sanity we should probably bootstrap from a beta that was built with these fixed applied in the host compiler.