Commit graph

21482 commits

Author SHA1 Message Date
bors
576b640a02 Auto merge of #54262 - matthewjasper:explain-in-typeck, r=nikomatsakis
[NLL] Record more infomation on free region constraints in typeck

Changes:

* Makes the span of the MIR return place point to the return type
* Don't try to use a path to a type alias as a path to the adt it aliases (fixes an ICE)
* Don't claim that `self` is declared outside of the function. [see this test](f2995d5b1a (diff-0c9e6b1b204f42129b481df9ce459d44))
* Remove boring/interesting distinction and instead add a `ConstraintCategory` to the constraint.
* Add categories for implicit `Sized` and `Copy` requirements, for closure bounds, for user type annotations and `impl Trait`.
* Don't use the span of the first statement for Locations::All bounds (even if it happens to work on the tests we have)

Future work:

* Fine tuning the heuristic used to choose the place the report the error.
* Reporting multiple places (behind a flag)
* Better closure bounds reporting. This probably requires some discussion.

r? @nikomatsakis
2018-09-23 01:39:54 +00:00
bors
c6e3d7fa31 Auto merge of #53508 - japaric:maybe-uninit, r=RalfJung
Implement `MaybeUninit`

This PR:

- Adds `MaybeUninit` (see #53491) to `{core,std}::mem`.
- Makes `mem::{uninitialized,zeroed}` panic when they are used to instantiate an uninhabited type.
- Does *not* deprecate `mem::{uninitialized,zeroed}` just yet. As per https://github.com/rust-lang/rust/issues/53491#issuecomment-414147666, we should not deprecate them until `MaybeUninit` is stabilized.
- It replaces uses of `mem::{uninitialized,zeroed}` in core and alloc with `MaybeUninit`.

There are still several instances of `mem::{uninitialized,zeroed}` in `std` that *this* PR doesn't address.

r? @RalfJung
cc @eddyb you may want to look at the new panicking logic
2018-09-22 23:08:03 +00:00
Jorge Aparicio
1cdbad2022 allow dead_code 2018-09-23 00:37:08 +02:00
bors
4591a245c7 Auto merge of #54188 - lqd:fallout-53695, r=nikomatsakis
NLL: disallow creation of immediately unusable variables

Fix #53695

Original description follows

----

This WIP PR is for discussing the impact of fixing #53695 by injecting a fake read in let patterns.

(Travis will fail, at least the `mir-opt` suite is failing in its current state)
2018-09-22 20:38:19 +00:00
Jorge Aparicio
d266722a59 the test requires unwinding so we don't run it on the wasm32-bare target 2018-09-22 21:01:21 +02:00
Jorge Aparicio
41b242eeec add codegen test 2018-09-22 21:01:21 +02:00
Jorge Aparicio
7fea7f4912 make the nil-enum test work again 2018-09-22 21:01:21 +02:00
Jorge Aparicio
758ce16b3d add empty enum to the test cases 2018-09-22 21:01:21 +02:00
Jorge Aparicio
d864edc349 improve the run-pass test 2018-09-22 21:01:21 +02:00
Jorge Aparicio
96572cb5f8 panic when instantiating an uninhabited type via mem::{uninitialized,zeroed} 2018-09-22 21:01:21 +02:00
bors
af50e3822c Auto merge of #54457 - pietroalbini:rollup, r=pietroalbini
Rollup of 16 pull requests

Successful merges:

 - #53652 (define copy_within on slices)
 - #54261 (Make `dyn` a keyword in the 2018 edition)
 - #54280 (remove (more) CAS API from Atomic* types where not natively supported)
 - #54323 (rustbuild: drop color handling)
 - #54350 (Support specifying edition in doc test)
 - #54370 (Improve handling of type bounds in `bit_set.rs`.)
 - #54371 (add -Zui-testing to rustdoc)
 - #54374 (Make 'proc_macro::MultiSpan' public.)
 - #54402 (Use no_default_libraries for all NetBSD flavors)
 - #54409 (Detect `for _ in in bar {}` typo)
 - #54412 (add applicability to span_suggestion call)
 - #54413 (Add UI test for deref recursion limit printing twice)
 - #54415 (parser: Tweak function parameter parsing to avoid rollback on succesfull path)
 - #54420 (Compress `Liveness` data some more.)
 - #54422 (Simplify slice's first(_mut) and last(_mut) with get)
 - #54446 (Unify christianpoveda's emails)

Failed merges:

 - #54058 (Introduce the partition_dedup/by/by_key methods for slices)

r? @ghost
2018-09-22 14:26:15 +00:00
bors
e7b5ba8661 Auto merge of #54265 - arielb1:civilize-proc-macros, r=alexcrichton
avoid leaking host details in proc macro metadata decoding

proc macro crates are essentially implemented as dynamic libraries using
a dlopen-based ABI. They are also Rust crates, so they have 2 worlds -
the "host" world in which they are defined, and the "target" world in
which they are used.

For all the "target" world knows, the proc macro crate might not even
be implemented in Rust, so leaks of details from the host to the target
must be avoided for correctness.

Because the "host" DefId space is different from the "target" DefId
space, any leak involving a DefId will have a nonsensical or
out-of-bounds DefKey, and will cause all sorts of crashes.

This PR fixes all leaks I have found in `decoder`. In particular, #54059
was caused by host native libraries leaking into the target, which feels
like it might even be a correctness issue if it doesn't cause an ICE.

Fixes #54059
2018-09-22 11:56:08 +00:00
Pietro Albini
0bf52b3a5b
Rollup merge of #54413 - memoryruins:deref-error-twice, r=estebank
Add UI test for deref recursion limit printing twice

Closes #38940

Does ``NOTE`` in the test need to be changed to ``HELP`` if its in the stderr?
``help: consider adding a `#![recursion_limit="20"]` attribute to your crate``

It doesn't appear to complaining locally that the line isn't set to ``HELP`` in the test, and the guide says
 > HELP and SUGGESTION*
> * Note: SUGGESTION must follow immediately after HELP.

yet there's no concrete suggestion emitted.

r? @estebank
2018-09-22 09:56:39 +02:00
Pietro Albini
1eee532eff
Rollup merge of #54409 - estebank:remove-in, r=pnkfelix
Detect `for _ in in bar {}` typo

Fix #36611, #52964, without modifying the parsing of emplacement `in` to avoid further problems like #50832.
2018-09-22 09:56:37 +02:00
Pietro Albini
7248b79082
Rollup merge of #54371 - QuietMisdreavus:rustdoc-ui-testing, r=GuillaumeGomez
add -Zui-testing to rustdoc

Before we depend on the `rustdoc-ui` tests some more, let's make rustdoc act the same as the compiler when they're actually being executed.
2018-09-22 09:56:33 +02:00
Pietro Albini
23636e3f99
Rollup merge of #54350 - Munksgaard:support-edition-in-doc-test, r=steveklabnik
Support specifying edition in doc test

Fixes #52623

r? @QuietMisdreavus
2018-09-22 09:56:30 +02:00
Pietro Albini
822c51121e
Rollup merge of #54261 - varkor:dyn-keyword-2018, r=petrochenkov
Make `dyn` a keyword in the 2018 edition

Proposed in https://github.com/rust-lang/rust/issues/44662#issuecomment-421596088.
2018-09-22 09:56:27 +02:00
Eduard-Mihai Burtescu
fa2c246384 Stabilize crate_in_paths, extern_absolute_paths and extern_prelude on all editions. 2018-09-22 09:26:40 +03:00
Alex Crichton
1b938068b6 Ignore new test on Windows 2018-09-21 10:05:23 -07:00
Felix S. Klock II
a79db050c8 Allow unused_imports lint on test where lint only fires on non-linux targets... 2018-09-21 16:21:40 +02:00
Felix S. Klock II
3b585f1955 Allow dead_code lint on some tests where the lint only fires on non-x86 targets... 2018-09-21 16:21:40 +02:00
Felix S. Klock II
9e33d57517 Added expected (compile-time) outputs.
* In the case of `derive-same-struct`, it seemed cleaner to add the
  output than to try to modify the macro itself (which is where the
  output is coming from).

* In the case of `custom-derive-partial-eq`, it was just easier to add
  the output than to attempt to port the test to use a procedural
  macro.
2018-09-21 16:21:40 +02:00
Felix S. Klock II
3a44115a72 Add Rustc prefixes to derive(Decodable, Encodable).
As a bit of a hack, make `rustc_serialize` an alias of the private
`serialize` crate, just so the new derive continues working.

Fix #54287.
2018-09-21 16:21:39 +02:00
Felix S. Klock II
43061d3a78 Allow various lints in src/test/run-pass-fulldeps/ so that it can continue under ui test mode.
(One of them led me to file rust-lang/rust#54288.)
2018-09-21 16:21:39 +02:00
Felix S. Klock II
2664db235c Run the newly ui-ified run-pass tests under compare-mode=nll as well.
Fix #53764.
2018-09-21 16:21:38 +02:00
Felix S. Klock II
6219448af6 Add expected output for compiler to tests of optimization-fuel-{0,1}.rs. 2018-09-21 16:21:38 +02:00
Felix S. Klock II
5def991033 Ignore the output itself on rustc-rust-log.rs (added in rust-lang/rust#42737). 2018-09-21 16:21:38 +02:00
Felix S. Klock II
371fffdbed Workaround rust-lang/rust#54222 by just ignoring the warning about the linker flag. 2018-09-21 16:21:37 +02:00
Felix S. Klock II
c9f2c2de92 Allow various lints as part of ui-ifying src/test/run-pass suite. 2018-09-21 16:21:37 +02:00
Esteban Küber
06d577d8b2 Detect for _ in in bar {} typo 2018-09-20 22:40:44 -07:00
memoryruins
70da203259 Remove incidental notes 2018-09-20 22:07:57 -04:00
memoryruins
d341b177ae Add test for deref recursion limit printing twice 2018-09-20 21:14:05 -04:00
bors
2fa1390f6c Auto merge of #54389 - kennytm:rollup, r=kennytm
Rollup of 15 pull requests

Successful merges:

 - #52813 (Duration div mul extras)
 - #53470 (Warn about metadata loader errors)
 - #54233 (Remove LLVM 3.9 workaround.)
 - #54257 (Switch wasm math symbols to their original names)
 - #54258 (Enable fatal warnings for the wasm32 linker)
 - #54266 (Update LLVM to fix "bool" arguments on PPC32)
 - #54290 (Switch linker for aarch64-pc-windows-msvc from LLD to MSVC)
 - #54292 (Suggest array indexing when tuple indexing on an array)
 - #54295 (A few cleanups and minor improvements to rustc/traits)
 - #54298 (miri: correctly compute expected alignment for field)
 - #54333 (Update The Book to latest)
 - #54337 (Remove unneeded clone() from tests in librustdoc)
 - #54346 (rustc: future-proof error reporting for polymorphic constants in types.)
 - #54362 (Pass --batch to gdb)
 - #54367 (Add regression test for thread local static mut borrows)
2018-09-20 22:47:34 +00:00
Rémy Rakic
3bdba74ed3 Disable rustfix temporarily on extern-const.rs
`src/test/ui/extern/extern-const.rs` seems to have an inconsistent behaviour across build configurations, possibly non-deterministically. This is tracked in issue 54388.

For this PR, disable running rustfix on it because it failed on CI, until that issue is fixed.
2018-09-20 23:22:42 +02:00
kennytm
ec085962c6
Rollup merge of #54367 - spastorino:add-thread-local-static-borrow-test, r=pnkfelix
Add regression test for thread local static mut borrows

FIXME(#54366) - We probably shouldn't allow `#[thread_local] static mut` to get a `'static` lifetime, but for now, we should at least test the behavior that `rustc` currently has.
2018-09-20 23:28:08 +08:00
bors
3bc2ca7e4f Auto merge of #53162 - QuietMisdreavus:crouching-impl-hidden-trait, r=GuillaumeGomez
rustdoc: collect trait impls as an early pass

Fixes https://github.com/rust-lang/rust/issues/52545, fixes https://github.com/rust-lang/rust/issues/41480, fixes https://github.com/rust-lang/rust/issues/36922

Right now, rustdoc pulls all its impl information by scanning a crate's HIR for any items it finds. However, it doesn't recurse into anything other than modules, preventing it from seeing trait impls that may be inside things like functions or consts. Thanks to https://github.com/rust-lang/rust/pull/53002, now these items actually *exist* for rustdoc to see, but they still weren't getting collected for display.

But there was a secret. Whenever we pull in an item from another crate, we don't have any of its impls in the local HIR, so instead we ask the compiler for *everything* and filter out after the fact. This process is only triggered if there's a cross-crate re-export in the crate being documented, which can sometimes leave this info out of the docs. This PR instead moves this collection into an early pass, which occurs immediately after crate cleaning, so that that collection occurs regardless. In addition, by including the HIR's own `trait_impls` in addition to the existing `all_trait_implementations` calls, we can collect all these tricky trait impls without having to scan for them!
2018-09-20 14:32:26 +00:00
kennytm
cf06e03506
Rollup merge of #54292 - memoryruins:issue-53712, r=estebank
Suggest array indexing when tuple indexing on an array

Closes #53712

r? @varkor
cc @estebank
2018-09-20 21:36:26 +08:00
QuietMisdreavus
1106577116 fix intra-links for trait impls 2018-09-20 05:54:31 -05:00
QuietMisdreavus
e854d39929 don't index trait impls if the trait isn't also documented 2018-09-20 05:42:36 -05:00
QuietMisdreavus
7e70fee0c7 add more tests for traits-in-non-module-scope 2018-09-20 05:42:35 -05:00
QuietMisdreavus
e79780f18f don't check visibility when inlining local impls
those get handled properly in strip-hidden anyway
2018-09-20 05:42:33 -05:00
QuietMisdreavus
457efc111a ignore rustdoc/doc-proc-macro on stage1 2018-09-20 05:42:22 -05:00
QuietMisdreavus
02bea3c581 rustdoc: collect trait impls as an early pass 2018-09-20 05:42:20 -05:00
bors
f7f4c500b4 Auto merge of #54255 - spastorino:use-of-moved-value-error, r=nikomatsakis
Inspect parents paths when checking for moves

Closes #52669
2018-09-20 09:02:46 +00:00
Philip Munksgaard
ac8d8d71fa Add test for doctest edition support 2018-09-20 08:36:07 +02:00
QuietMisdreavus
93321671ca add -Zui-testing to rustdoc 2018-09-19 18:39:39 -05:00
Santiago Pastorino
ae42e537db
Add regression test for thread local static mut borrows 2018-09-19 17:54:24 -03:00
Matthew Jasper
bd0895d7d0 Update ui tests 2018-09-19 20:50:09 +01:00
Matthew Jasper
6e425219f1 Don't claim that locals in a function are declared outside of the
function body
2018-09-19 19:52:55 +01:00
Matthew Jasper
fcd0cd0ade Don't try to use a path to a type alias as a path to the adt it aliases 2018-09-19 19:52:55 +01:00