Commit Graph

121664 Commits

Author SHA1 Message Date
Dylan DPC
845b869050
Rollup merge of #73090 - marmeladema:resolver-outputs-local-def-id, r=petrochenkov
Use `LocalDefId` directly in `Resolver::export_map`

This is to avoid the final conversion from `NodeId` to `HirId`
during call to `(clone|into)_outputs`

This brings down the post-lowering uses of `NodeId` down to 2 calls to convert the `trait_map`.

cc #50928

r? @petrochenkov
2020-06-08 22:15:13 +02:00
Dylan DPC
033f6899f7
Rollup merge of #73008 - tshepang:patch-1, r=nikomatsakis
Update RELEASES.md

make catch_unwind line more readable
2020-06-08 22:15:12 +02:00
Dylan DPC
82fd390d67
Rollup merge of #72912 - GuillaumeGomez:add-e0755, r=estebank
Add new E0758 error code
2020-06-08 22:15:10 +02:00
Dylan DPC
98bd22bda3
Rollup merge of #71842 - tspiteri:doc-impl-const, r=GuillaumeGomez
doc: make impl block collapsible if it has an associated constant

Fixes #71822.
2020-06-08 22:15:08 +02:00
bors
fd4b177aab Auto merge of #72655 - jethrogb:sgx-lvi-hardening, r=petrochenkov
Enable LVI hardening for x86_64-fortanix-unknown-sgx

This implements mitigations for the Load Value Injection vulnerability (CVE-2020-0551) for the `x86_64-fortanix-unknown-sgx` target by enabling new LLVM passes. More information about LVI and mitigations may be found at https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection.

This PR unconditionally enables the mitigations for `x86_64-fortanix-unknown-sgx` since there is no available hardware that doesn't require the mitigations. This may be reconsidered in the future.

* [x] This depends on https://github.com/rust-lang/compiler-builtins/pull/359/
2020-06-08 20:10:07 +00:00
Eric Huss
ef4c4a570f Update books 2020-06-08 12:01:01 -07:00
bors
ff0993c5e9 Auto merge of #5692 - ebroto:5689_N_dotdot_N, r=yaahc
reversed_empty_ranges: avoid linting N..N except in for loop arguments

changelog: [`reversed_empty_ranges`]: avoid linting N..N except in for loop arguments

r? @yaahc
Fixes #5689
2020-06-08 17:15:45 +00:00
Alan Egerton
8cf85bc0dc Use shorthand linker strip arguments in order to support MacOS 2020-06-08 17:51:34 +01:00
bors
f947644f0d Auto merge of #5680 - ebroto:3792_let_return, r=Manishearth
let_and_return: avoid "does not live long enough" errors

EDIT: Add #3324 to the list of fixes

<details>
<summary>Description of old impl</summary>
<br>
Avoid suggesting turning the RHS expression of the last statement into the block tail expression if a temporary borrows from a local that would be destroyed before.

This is my first incursion into MIR so there's probably room for improvement!
</details>

Avoid linting if the return type of some method or function called in the last statement has a lifetime parameter.

changelog: Fix false positive in [`let_and_return`]

Fixes #3792
Fixes #3324
2020-06-08 16:47:22 +00:00
bors
bc10b68e79 Auto merge of #73115 - RalfJung:rollup-jecowhz, r=RalfJung
Rollup of 10 pull requests

Successful merges:

 - #72026 (Update annotate-snippets-rs to 0.8.0)
 - #72583 (impl AsRef<[T]> for vec::IntoIter<T>)
 - #72615 (Fix documentation example for gcov profiling)
 - #72761 (Added the documentation for the 'use' keyword)
 - #72799 (Add `-Z span-debug` to allow for easier debugging of proc macros)
 - #72811 (Liballoc impl)
 - #72963 (Cstring `from_raw` and `into_raw` safety precisions)
 - #73001 (Free `default()` forwarding to `Default::default()`)
 - #73075 (Add comments to `Resolve::get_module`)
 - #73092 (Clean up E0646)

Failed merges:

r? @ghost
2020-06-08 16:32:49 +00:00
Stanislav Tkach
54fdb578c6
Fix the typo (size of the size) 2020-06-08 19:13:46 +03:00
Nathan Corbyn
1c4fd22618 Strengthen cleanup to cleanup check 2020-06-08 16:04:41 +01:00
Nathan Corbyn
4158bb0f0b Relax cleanup to cleanup check 2020-06-08 16:00:09 +01:00
bors
08b84b3f76 Auto merge of #5378 - Centril:unnested-or-pats, r=flip1995,phansch
New lint: `unnested_or_patterns`

changelog: Adds a lint `unnested_or_patterns`, suggesting `Some(0 | 2)` as opposed to `Some(0) | Some(2)`. The lint only fires on compilers capable of using `#![feature(or_patterns)]`.

- The lint is primarily encoded as a pure algorithm which to unnest or-patterns in an `ast::Pat` (`fn unnest_or_patterns`) through a `MutVisitor`. After that is done, and assuming that any change was detected, then `pprust::pat_to_string` is used to simply convert the transformed pattern into a suggestion.

- The PR introduces a module `utils::ast_utils` with a bunch of functions for spanless & nodeless equality comparisons of ASTs.

cc https://github.com/rust-lang/rust/issues/54883
2020-06-08 13:49:29 +00:00
Nathan Corbyn
3aedfbecfd Enforce unwind invariants 2020-06-08 13:54:20 +01:00
Ayush Kumar Mishra
b7f25d512c Removed lifetime parameters from Explanation of E0207 #62144 2020-06-08 17:15:48 +05:30
Guillaume Gomez
f615582d65 Clean up E0647 explanation 2020-06-08 13:02:59 +02:00
Nathan Corbyn
a1eeaddf3f Resolve E0584 conflict 2020-06-08 12:00:12 +01:00
alamb
7b0906b2e9 Fix small typo in docs for std::mem::drop 2020-06-08 06:04:34 -04:00
Ralf Jung
7983e56f40
Rollup merge of #73092 - GuillaumeGomez:cleanup-e0646, r=Dylan-DPC
Clean up E0646

r? @Dylan-DPC
2020-06-08 09:55:35 +02:00
Ralf Jung
13f2838c04
Rollup merge of #73075 - jyn514:comment-module, r=Dylan-DPC
Add comments to `Resolve::get_module`

r? @Manishearth
2020-06-08 09:55:33 +02:00
Ralf Jung
244465dbb8
Rollup merge of #73001 - ilya-bobyr:master, r=dtolnay
Free `default()` forwarding to `Default::default()`

It feels a bit redundant to have to say `Default::default()` every time I need a new value of a type that has a `Default` instance.
Especially so, compared to Haskell, where the same functionality is called `def`.
Providing a free `default()` function that forwards to `Default::default()` seems to improve the situation.
The trait is still there, so if someone wants to be explicit and to say `Default::default()` - it still works, but if imported as `std::default::default;`, then the free function reduces typing and visual noise.
2020-06-08 09:55:31 +02:00
Ralf Jung
824ea6bf2d
Rollup merge of #72963 - poliorcetics:cstring-from-raw, r=dtolnay
Cstring `from_raw` and `into_raw` safety precisions

Fixes #48525.
Fixes #68456.

This issue had two points:

- The one about `from_raw` has been addressed (I hope).
- The other one, about `into_raw`, has only been partially fixed.

About `into_raw`: the idea was to:

> steer users away from using the pattern of CString::{into_raw,from_raw} when interfacing with C APIs that may change the effective length of the string by writing interior NULs or erasing the final NUL

I tried making a `Vec<c_char>` like suggested but my current solution feels very unsafe and *hacky* to me (most notably the type cast), I included it here to make it available for discussion:

```rust
fn main() {
    use std::os::raw::c_char;

    let v = String::from("abc")
        .bytes()
        // From u8 to i8,
        // I feel like it will be a problem for values of u8 > 255
        .map(|c| c as c_char)
        .collect::<Vec<_>>();

    dbg!(v);
}
```
2020-06-08 09:55:30 +02:00
Ralf Jung
13815e4b35
Rollup merge of #72811 - pickfire:liballoc-impl, r=Amanieu
Liballoc impl

Mainly code rearrangements
2020-06-08 09:55:28 +02:00
Ralf Jung
e135087868
Rollup merge of #72799 - Aaron1011:feature/span-debug, r=petrochenkov
Add `-Z span-debug` to allow for easier debugging of proc macros

Currently, the `Debug` impl for `proc_macro::Span` just prints out
the byte range. This can make debugging proc macros (either as a crate
author or as a compiler developer) very frustrating, since neither the
actual filename nor the `SyntaxContext` is displayed.

This commit adds a perma-unstable flag `-Z span-debug`. When enabled,
the `Debug` impl for `proc_macro::Span` simply forwards directly to
`rustc_span::Span`. Once #72618 is merged, this will start displaying
actual line numbers.

While `Debug` impls are not subject to Rust's normal stability
guarnatees, we probably shouldn't expose any additional information on
stable until `#![feature(proc_macro_span)]` is stabilized. Otherwise,
we would be providing a 'backdoor' way to access information that's
supposed be behind unstable APIs.
2020-06-08 09:55:26 +02:00
Ralf Jung
89d8979c9a
Rollup merge of #72761 - poliorcetics:use-keyword-doc, r=Dylan-DPC
Added the documentation for the 'use' keyword

This is a partial fix of #34601.

I heavily inspired myself from the Reference on the `use` keyword.

I checked the links when compiling the documentation, they should be ok.

I also added an example for the wildcard `*` in the case of types, because it's behaviour is not *import everything* like one might think at first.
2020-06-08 09:55:24 +02:00
Ralf Jung
e8bb4c7001
Rollup merge of #72615 - jschwe:fix-Zprofile-documentation, r=steveklabnik
Fix documentation example for gcov profiling

closes #72546
Improves the documentation for the unstable Rustflag `-Zprofile` by:
- stating that Incremental compilation must be turned off.
- Adding the other `RUSTFLAGS` that should/need to be turned on (taken from [grcov documentation](https://github.com/mozilla/grcov#example-how-to-generate-gcda-files-for-a-rust-project))
- Mentioning `RUSTC_WRAPPER` to prevent everything getting instrumented.

r? @steveklabnik
2020-06-08 09:55:22 +02:00
Ralf Jung
b0559bebd8
Rollup merge of #72583 - CAD97:vec-iter-asref-slice, r=dtolnay
impl AsRef<[T]> for vec::IntoIter<T>

Adds `impl<T> AsRef<[T]> for vec::IntoIter<T>`. This mirrors the same trait impl for [`slice::Iter`](https://doc.rust-lang.org/nightly/std/slice/struct.Iter.html). Both types already offer `fn as_slice(&self) -> &[T]`, this just adds the trait impl for `vec::IntoIter`.

If/when `fn as_slice(&self) -> &[T]` stabilizes for `vec::Drain` and `slice::IterMut`, they should get `AsRef<[T]>` impls as well. As thus, tangentially related to #58957.

My ultimate goal here: being able to use `for<T, I: Iterator<Item=T> + AsRef<[T]>> I` to refer to `vec::IntoIter`, `vec::Drain`, and eventually `array::IntoIter`, as an approximation of the set of by-value iterators that can be "previewed" as by-ref iterators. (Actually expressing that as a trait requires GAT.)
2020-06-08 09:55:20 +02:00
Ralf Jung
8484b9935c
Rollup merge of #72026 - botika:master, r=estebank
Update annotate-snippets-rs to 0.8.0

#59346
I made major changes to this library. In the previous version we worked with owned while in the current one with borrowed.

I have adapted it without changing the behavior.
I have modified the coverage since the previous one did not return correctly the index of the character in the line.
2020-06-08 09:55:18 +02:00
bors
7355816093 Auto merge of #73046 - marmeladema:save-analysis-fix-path, r=Xanewok
save_analysis: fix some ICEs

Fixes #73020
Fixes #73022
Fixes #73041
2020-06-08 03:54:52 +00:00
bors
6aa1d93c21 Auto merge of #72904 - shepmaster:reduce-abi-symbol-hash-churn, r=jonas-schievink,RalfJung
Order the Rust and C ABIs first to reduce test churn
2020-06-07 21:42:27 +00:00
marmeladema
e759222461 Use LocalDefId directly in Resolver::export_map and module_exports query
This is to avoid the final conversion from `NodeId` to `HirId`
during call to `Resolver::(clone|into)_outputs`.
2020-06-07 21:15:57 +01:00
flip1995
a9ca832b11
Fix rebase fallout 2020-06-07 21:37:55 +02:00
flip1995
ecabed67ec
Apply self-review by Centril 2020-06-07 21:16:05 +02:00
Mazdak Farrokhzad
d6136b92a2
split unnested_or_patterns test 2020-06-07 21:16:05 +02:00
Mazdak Farrokhzad
78f158e80e
dogfood unnested_or_patterns 2020-06-07 21:16:03 +02:00
Eduardo Broto
a664ce7789 Remove unnecessary lifetime parameter 2020-06-07 21:13:13 +02:00
Mazdak Farrokhzad
7b6dc7b33d
add unnested_or_patterns lint 2020-06-07 21:09:47 +02:00
Eduardo Broto
ebfc1da07d reversed_empty_ranges: don't lint N..N except in for loop arg 2020-06-07 21:03:08 +02:00
Eduardo Broto
dac8a3c1ca let_and_return: do not lint if last statement borrows 2020-06-07 20:53:38 +02:00
Eduardo Broto
9c205d7b1b Rename let_and_return test for consistency with the lint name 2020-06-07 20:53:38 +02:00
Eduardo Broto
dc13016ac2 Make let_and_return a late lint pass 2020-06-07 20:53:38 +02:00
bors
0262de554b Auto merge of #73099 - Dylan-DPC:rollup-7u8f3m4, r=Dylan-DPC
Rollup of 2 pull requests

Successful merges:

 - #72952 (run-make regression test for issue #70924.)
 - #72977 (Fix codegen tests for RISC-V)

Failed merges:

r? @ghost
2020-06-07 17:55:19 +00:00
Dylan DPC
4dd5d5d4d6
Rollup merge of #72977 - tblah:riscv-codegen-llvm10, r=nikomatsakis
Fix codegen tests for RISC-V

Some codegen tests didn't seem relevant (e.g. unsupported annotations).

The RISC-V abi tests were broken by LLVM 10, c872dcf fixes that (cc: @msizanoen1)

I'm not sure about skipping catch-unwind.rs and included that change here mostly as a request for comment - I can't tell if that's a bug.
2020-06-07 18:11:29 +02:00
Dylan DPC
b733368258
Rollup merge of #72952 - pnkfelix:regression-test-for-issue-70924, r=nikomatsakis
run-make regression test for issue #70924.

Sometime after my PR #72767 (to fix issue #70924) landed, I realized that I *could* make a local regression test, thanks to `rustc --print sysroot`: I can make a fresh "copy" (really mostly symlinks) of the sysroot, and then modify it to recreate the terms of this bug.
2020-06-07 18:11:27 +02:00
Joshua Nelson
1f11331894 Add Item::is_fake for rustdoc
I wasn't aware items _could_ be fake, so I think having a function
mentioning it could be helpful. Also, I'd need to make this change for
cross-crate intra-doc links anyway, so I figured it's better to make the
refactor separate.
2020-06-07 12:08:52 -04:00
bors
f9fdf642ba Auto merge of #73093 - Dylan-DPC:rollup-9gh5tyu, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #72764 (Be more careful around ty::Error in generators)
 - #72908 (rename FalseEdges -> FalseEdge)
 - #72970 (Properly handle feature-gated lints)
 - #72998 (Mention that some atomic operations may not be available on some platforms)
 - #73063 (Elide type on liballoc vec)

Failed merges:

r? @ghost
2020-06-07 14:14:34 +00:00
Mark Rousskov
6f015768c2 Try_run must only be used if toolstate is populated
Clippy's tests were failing the build, but that failure was ignored in favor of
checking toolstate. This is the correct behavior for toolstate-checked tools,
but Clippy no longer updates its toolstate status as it should always build.
2020-06-07 10:05:27 -04:00
Dylan DPC
a23b51ebea
Rollup merge of #73063 - pickfire:liballoc-elide, r=kennytm
Elide type on liballoc vec
2020-06-07 15:33:45 +02:00
Dylan DPC
de1941ab2a
Rollup merge of #72998 - poliorcetics:atomic-availability-doc, r=Amanieu
Mention that some atomic operations may not be available on some platforms

fixes #54250

This simply adds a line saying the type/function/method may not be available on some platforms, depending on said platform capabilities.

I *think* I got them all.
2020-06-07 15:33:44 +02:00