]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoTweak "non-primitive cast" error
Esteban Küber [Mon, 15 Jun 2020 04:36:25 +0000 (21:36 -0700)]
Tweak "non-primitive cast" error

- Suggest borrowing expression if it would allow cast to work.
- Suggest using `<Type>::from(<expr>)` when appropriate.
- Minor tweak to `;` typo suggestion.

Partily address #47136.

4 years agoAuto merge of #73190 - Dylan-DPC:rollup-9wbyh4y, r=Dylan-DPC
bors [Wed, 10 Jun 2020 00:48:35 +0000 (00:48 +0000)]
Auto merge of #73190 - Dylan-DPC:rollup-9wbyh4y, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #72417 (Remove `RawVec::reserve_in_place`.)
 - #73098 (Add Item::is_fake for rustdoc)
 - #73122 (Resolve E0584 conflict)
 - #73123 (Clean up E0647 explanation)
 - #73133 (Enforce unwind invariants)
 - #73148 (Fix a typo (size of the size))
 - #73149 (typo: awailable -> available)
 - #73161 (Add mailmap entry)

Failed merges:

r? @ghost

4 years agoRollup merge of #73161 - tspiteri:mailmap, r=nikomatsakis
Dylan DPC [Tue, 9 Jun 2020 23:06:35 +0000 (01:06 +0200)]
Rollup merge of #73161 - tspiteri:mailmap, r=nikomatsakis

Add mailmap entry

4 years agoRollup merge of #73149 - cuviper:awailable, r=steveklabnik
Dylan DPC [Tue, 9 Jun 2020 23:06:34 +0000 (01:06 +0200)]
Rollup merge of #73149 - cuviper:awailable, r=steveklabnik

typo: awailable -> available

4 years agoRollup merge of #73148 - DarkEld3r:patch-1, r=jonas-schievink
Dylan DPC [Tue, 9 Jun 2020 23:06:32 +0000 (01:06 +0200)]
Rollup merge of #73148 - DarkEld3r:patch-1, r=jonas-schievink

Fix a typo (size of the size)

4 years agoRollup merge of #73133 - doctorn:unwind-mir-validation, r=jonas-schievink
Dylan DPC [Tue, 9 Jun 2020 23:06:30 +0000 (01:06 +0200)]
Rollup merge of #73133 - doctorn:unwind-mir-validation, r=jonas-schievink

Enforce unwind invariants

I had a quick look at #72959. The failure message probably needs to be more detailed but I just wanted to check I got the right idea. I have no idea how to right a test for this either...

r? @jonas-schievink

Resolves #72959 (hypothetically)

4 years agoRollup merge of #73123 - GuillaumeGomez:cleanup-e0647, r=Dylan-DPC
Dylan DPC [Tue, 9 Jun 2020 23:06:29 +0000 (01:06 +0200)]
Rollup merge of #73123 - GuillaumeGomez:cleanup-e0647, r=Dylan-DPC

Clean up E0647 explanation

r? @Dylan-DPC

4 years agoRollup merge of #73122 - doctorn:issue-73116, r=varkor
Dylan DPC [Tue, 9 Jun 2020 23:06:27 +0000 (01:06 +0200)]
Rollup merge of #73122 - doctorn:issue-73116, r=varkor

Resolve E0584 conflict

Adds a new error code (`E0761`) to indicate ambiguity in module file names and an accompanying expanded description to resolve a conflict over `E0584`.

Resolves #73116

4 years agoRollup merge of #73098 - jyn514:rustdoc-is-fake, r=GuillaumeGomez
Dylan DPC [Tue, 9 Jun 2020 23:06:25 +0000 (01:06 +0200)]
Rollup merge of #73098 - jyn514:rustdoc-is-fake, r=GuillaumeGomez

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.

4 years agoRollup merge of #72417 - nnethercote:rm-RawVec-reserve_in_place, r=Amanieu
Dylan DPC [Tue, 9 Jun 2020 23:06:23 +0000 (01:06 +0200)]
Rollup merge of #72417 - nnethercote:rm-RawVec-reserve_in_place, r=Amanieu

Remove `RawVec::reserve_in_place`.

And some related clean-ups.

r? @oli-obk

4 years agoAuto merge of #72972 - lzutao:clippy, r=Manishearth
bors [Tue, 9 Jun 2020 20:56:54 +0000 (20:56 +0000)]
Auto merge of #72972 - lzutao:clippy, r=Manishearth

Pull changes from rust-lang/rust-clippy

4 years agoMerge commit 'ff0993c5e9162ddaea78e83d0f0161e68bd4ea73' into clippy
Lzu Tao [Tue, 9 Jun 2020 14:36:01 +0000 (14:36 +0000)]
Merge commit 'ff0993c5e9162ddaea78e83d0f0161e68bd4ea73' into clippy

4 years agoAddress comments
Nathan Corbyn [Tue, 9 Jun 2020 10:21:36 +0000 (11:21 +0100)]
Address comments

4 years agoUpdate comments
Nathan Corbyn [Tue, 9 Jun 2020 10:14:41 +0000 (11:14 +0100)]
Update comments

4 years agoAuto merge of #72114 - anyska:vtable-rename, r=nikomatsakis
bors [Tue, 9 Jun 2020 09:14:49 +0000 (09:14 +0000)]
Auto merge of #72114 - anyska:vtable-rename, r=nikomatsakis

Rename traits::Vtable to ImplSource.

Originally suggested by @eddyb.

r? @nikomatsakis

4 years agoAdd mailmap entry
Trevor Spiteri [Tue, 9 Jun 2020 08:51:15 +0000 (10:51 +0200)]
Add mailmap entry

4 years agoAuto merge of #73153 - ecstatic-morse:revert-71956, r=tmandry
bors [Tue, 9 Jun 2020 03:41:43 +0000 (03:41 +0000)]
Auto merge of #73153 - ecstatic-morse:revert-71956, r=tmandry

Revert #71956

...since it caused unsoundness in #73137. Also adds a reduced version of #73137 to the test suite. The addition of the `MaybeInitializedLocals` dataflow analysis has not been reverted, but it is no longer used.

Presumably there is a more targeted fix, but I'm worried that other bugs may be lurking. I'm not yet sure what the root cause of #73137 is.

This will need to get backported to beta.

r? @tmandry

4 years agoAuto merge of #73147 - Dylan-DPC:rollup-9saqhj5, r=Dylan-DPC
bors [Mon, 8 Jun 2020 23:52:04 +0000 (23:52 +0000)]
Auto merge of #73147 - Dylan-DPC:rollup-9saqhj5, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #71842 (doc: make impl block collapsible if it has an associated constant)
 - #72912 (Add new E0758 error code)
 - #73008 (Update RELEASES.md)
 - #73090 (Use `LocalDefId` directly in `Resolver::export_map`)
 - #73118 (Improve the wording in documentation of std::mem::drop)
 - #73124 (Removed lifetime parameters from Explanation of E0207 )
 - #73138 (Use shorthand linker strip arguments in order to support MacOS)
 - #73143 (Update books)

Failed merges:

r? @ghost

4 years agoAdd regression test for #73137
Dylan MacKenzie [Mon, 8 Jun 2020 22:01:02 +0000 (15:01 -0700)]
Add regression test for #73137

Co-authored-by: Aaron1011 <aa1ronham@gmail.com>
4 years agoRevert #71956
Dylan MacKenzie [Mon, 8 Jun 2020 21:50:39 +0000 (14:50 -0700)]
Revert #71956

4 years agoRename some identifiers in `RawVec` and `libarena`.
Nicholas Nethercote [Wed, 20 May 2020 10:45:05 +0000 (20:45 +1000)]
Rename some identifiers in `RawVec` and `libarena`.

- Use `len` more consistently for the number of elements in a vector,
  because that's the usual name.
- Use `additional` more consistently for the number of elements we want
  to add, because that's what `Vec::reserve()` uses.
- Use `cap` consistently rather than `capacity`.
- Plus a few other tweaks.

This increases consistency and conciseness.

4 years agoRemove `RawVec::reserve_in_place`.
Nicholas Nethercote [Thu, 21 May 2020 01:39:37 +0000 (11:39 +1000)]
Remove `RawVec::reserve_in_place`.

Also remove a now-unnecessary `placement` argument.

4 years agoRemove the `reserve_in_place` calls in `{Typed,Dropless}Arena::grow`.
Nicholas Nethercote [Thu, 21 May 2020 01:03:33 +0000 (11:03 +1000)]
Remove the `reserve_in_place` calls in `{Typed,Dropless}Arena::grow`.

They are pointless. No reasonable allocator will be able to satisfy a
`reserve_in_place` request that *doubles* the size of an allocation when
dealing with allocations that are 4 KiB and larger.

Just to be sure, I confirmed on Linux that the `reserve_in_place` calls
never succeed.

(Note however that the `reserve_in_place` call for `DroplessArena::grow`
did occasionally succeed prior to the off-by-one fix in the previous
commit, because we would sometimes do a `reserve_in_place` request for
the chunk's current size, which would trivially succeed!)

4 years agoFix off-by-one error in `DroplessArena::alloc_raw`.
Nicholas Nethercote [Thu, 21 May 2020 00:36:32 +0000 (10:36 +1000)]
Fix off-by-one error in `DroplessArena::alloc_raw`.

This causes unnecessary calls to `grow` when the allocation would fit
exactly in the remaining space.

4 years agotypo: awailable -> available
Josh Stone [Mon, 8 Jun 2020 20:37:58 +0000 (13:37 -0700)]
typo: awailable -> available

4 years agoRollup merge of #73143 - ehuss:update-books, r=ehuss
Dylan DPC [Mon, 8 Jun 2020 20:15:21 +0000 (22:15 +0200)]
Rollup merge of #73143 - ehuss:update-books, r=ehuss

Update books

## nomicon

3 commits in d1517d4e3f29264c5c67bce2658516bb5202c800..bfe1ab96d717d1dda50e499b360f2e2f57e1750a
2020-05-12 13:47:00 -0400 to 2020-06-05 13:19:42 -0400
- Clarify that str data must still be initialized
- Remove language-level UB for non-UTF-8 str
- fix Nomicon transmute UB

## reference

5 commits in becdca9477c9eafa96a4eea5156fe7a2730d9dd2..5d40ba5c2515caffa7790cda621239dc21ef5a72
2020-05-21 21:08:02 +0100 to 2020-06-06 20:25:36 -0700
- Add some links to Disambiguating Function Calls. (rust-lang-nursery/reference#829)
- change bash to sh as shell code blocks language indentifier (rust-lang-nursery/reference#827)
- Fix sentence mistake in array-expr.md (rust-lang-nursery/reference#826)
- removed the word "Second" form the beginning of the 2nd list item and  labelled it as `2` (rust-lang-nursery/reference#822)
- Update fn-like proc-macro invocation restrictions. (rust-lang-nursery/reference#816)

## book

14 commits in e8a4714a9d8a6136a59b8e63544e149683876e36..30cd9dfe71c446de63826bb4472627af45acc9db
2020-05-25 10:29:27 -0500 to 2020-06-07 23:07:19 -0500
- Unnecessarily long type name in Ch 13 (rust-lang/book#2362)
- Tweak example in chapter 10 (rust-lang/book#2363)
- Mention that to_lowercase isn't perfect (rust-lang/book#2364)
- fix typo in CONTRIBUTING.md (rust-lang/book#2360)
- Link German translation in appendix F (rust-lang/book#2347)
- Updates wording on Box example (rust-lang/book#2332)
- fix: match 15-24 with 15-18 (rust-lang/book#2324)
- Reword ch01-03 recap paragraph (rust-lang/book#2305)
- Remove some confusing wording. (rust-lang/book#2358)
- Clarify some wording a bit (rust-lang/book#2357)
- Update ch12-05 PowerShell note (rust-lang/book#2348)
- text -&gt; console (rust-lang/book#2352)
- Improve wording around drop (rust-lang/book#2350)
- Make some statements about crates more correct (rust-lang/book#2349)

## edition-guide

1 commits in 0a8ab5046829733eb03df0738c4fafaa9b36b348..82bec5877c77cfad530ca11095db4456d757f668
2020-05-18 08:34:23 -0500 to 2020-06-03 08:56:02 -0500
- Add stuff for Rust 1.33 (rust-lang/edition-guide#214)

4 years agoRollup merge of #73138 - eggyal:macos-linker-strip, r=petrochenkov
Dylan DPC [Mon, 8 Jun 2020 20:15:19 +0000 (22:15 +0200)]
Rollup merge of #73138 - eggyal:macos-linker-strip, r=petrochenkov

Use shorthand linker strip arguments in order to support MacOS

Per discussion from https://github.com/rust-lang/rust/issues/72110#issuecomment-636609419 onward, the current `-Z strip` options aren't supported by the MacOS linker, but I think only because it doesn't support the longhand arguments `--strip-debug` and `--strip-all`.

This PR switches to using the shorthand arguments `-s` and `-S` instead, which (I believe) are supported by all GCC linkers.

4 years agoRollup merge of #73124 - ayushmishra2005:correction_in_explanation_of_E0207, r=petroc...
Dylan DPC [Mon, 8 Jun 2020 20:15:17 +0000 (22:15 +0200)]
Rollup merge of #73124 - ayushmishra2005:correction_in_explanation_of_E0207, r=petrochenkov

Removed lifetime parameters from Explanation of E0207

Removed lifetime parameters from Explanation of E0207
Fixes #62144

4 years agoRollup merge of #73118 - alamb:alamb/doc-drop-typo, r=shepmaster
Dylan DPC [Mon, 8 Jun 2020 20:15:15 +0000 (22:15 +0200)]
Rollup merge of #73118 - alamb:alamb/doc-drop-typo, r=shepmaster

Improve the wording in documentation of std::mem::drop

I thought the original phrasing was somewhat awkward compared to rest of the (very well written) documentation, so figured I would propose a change to improve it.

4 years agoRollup merge of #73090 - marmeladema:resolver-outputs-local-def-id, r=petrochenkov
Dylan DPC [Mon, 8 Jun 2020 20:15:13 +0000 (22:15 +0200)]
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

4 years agoRollup merge of #73008 - tshepang:patch-1, r=nikomatsakis
Dylan DPC [Mon, 8 Jun 2020 20:15:12 +0000 (22:15 +0200)]
Rollup merge of #73008 - tshepang:patch-1, r=nikomatsakis

Update RELEASES.md

make catch_unwind line more readable

4 years agoRollup merge of #72912 - GuillaumeGomez:add-e0755, r=estebank
Dylan DPC [Mon, 8 Jun 2020 20:15:10 +0000 (22:15 +0200)]
Rollup merge of #72912 - GuillaumeGomez:add-e0755, r=estebank

Add new E0758 error code

4 years agoRollup merge of #71842 - tspiteri:doc-impl-const, r=GuillaumeGomez
Dylan DPC [Mon, 8 Jun 2020 20:15:08 +0000 (22:15 +0200)]
Rollup merge of #71842 - tspiteri:doc-impl-const, r=GuillaumeGomez

doc: make impl block collapsible if it has an associated constant

Fixes #71822.

4 years agoAuto merge of #72655 - jethrogb:sgx-lvi-hardening, r=petrochenkov
bors [Mon, 8 Jun 2020 20:10:07 +0000 (20:10 +0000)]
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/

4 years agoUpdate books
Eric Huss [Mon, 8 Jun 2020 19:01:01 +0000 (12:01 -0700)]
Update books

4 years agoAuto merge of #5692 - ebroto:5689_N_dotdot_N, r=yaahc
bors [Mon, 8 Jun 2020 17:15:45 +0000 (17:15 +0000)]
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

4 years agoUse shorthand linker strip arguments in order to support MacOS
Alan Egerton [Mon, 8 Jun 2020 16:24:21 +0000 (17:24 +0100)]
Use shorthand linker strip arguments in order to support MacOS

4 years agoAuto merge of #5680 - ebroto:3792_let_return, r=Manishearth
bors [Mon, 8 Jun 2020 16:47:22 +0000 (16:47 +0000)]
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

4 years agoAuto merge of #73115 - RalfJung:rollup-jecowhz, r=RalfJung
bors [Mon, 8 Jun 2020 16:32:49 +0000 (16:32 +0000)]
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

4 years agoFix the typo (size of the size)
Stanislav Tkach [Mon, 8 Jun 2020 16:13:46 +0000 (19:13 +0300)]
Fix the typo (size of the size)

4 years agoStrengthen cleanup to cleanup check
Nathan Corbyn [Mon, 8 Jun 2020 15:04:41 +0000 (16:04 +0100)]
Strengthen cleanup to cleanup check

4 years agoRelax cleanup to cleanup check
Nathan Corbyn [Mon, 8 Jun 2020 15:00:09 +0000 (16:00 +0100)]
Relax cleanup to cleanup check

4 years agoAuto merge of #5378 - Centril:unnested-or-pats, r=flip1995,phansch
bors [Mon, 8 Jun 2020 13:49:29 +0000 (13:49 +0000)]
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

4 years agoEnforce unwind invariants
Nathan Corbyn [Mon, 8 Jun 2020 12:54:20 +0000 (13:54 +0100)]
Enforce unwind invariants

4 years agoRemoved lifetime parameters from Explanation of E0207 #62144
Ayush Kumar Mishra [Mon, 8 Jun 2020 11:45:48 +0000 (17:15 +0530)]
Removed lifetime parameters from Explanation of E0207 #62144

4 years agoClean up E0647 explanation
Guillaume Gomez [Mon, 8 Jun 2020 11:02:23 +0000 (13:02 +0200)]
Clean up E0647 explanation

4 years agoResolve E0584 conflict
Nathan Corbyn [Mon, 8 Jun 2020 10:57:56 +0000 (11:57 +0100)]
Resolve E0584 conflict

4 years agoFix small typo in docs for std::mem::drop
alamb [Mon, 8 Jun 2020 10:04:34 +0000 (06:04 -0400)]
Fix small typo in docs for std::mem::drop

4 years agoRollup merge of #73092 - GuillaumeGomez:cleanup-e0646, r=Dylan-DPC
Ralf Jung [Mon, 8 Jun 2020 07:55:35 +0000 (09:55 +0200)]
Rollup merge of #73092 - GuillaumeGomez:cleanup-e0646, r=Dylan-DPC

Clean up E0646

r? @Dylan-DPC

4 years agoRollup merge of #73075 - jyn514:comment-module, r=Dylan-DPC
Ralf Jung [Mon, 8 Jun 2020 07:55:33 +0000 (09:55 +0200)]
Rollup merge of #73075 - jyn514:comment-module, r=Dylan-DPC

Add comments to `Resolve::get_module`

r? @Manishearth

4 years agoRollup merge of #73001 - ilya-bobyr:master, r=dtolnay
Ralf Jung [Mon, 8 Jun 2020 07:55:31 +0000 (09:55 +0200)]
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.

4 years agoRollup merge of #72963 - poliorcetics:cstring-from-raw, r=dtolnay
Ralf Jung [Mon, 8 Jun 2020 07:55:30 +0000 (09:55 +0200)]
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);
}
```

4 years agoRollup merge of #72811 - pickfire:liballoc-impl, r=Amanieu
Ralf Jung [Mon, 8 Jun 2020 07:55:28 +0000 (09:55 +0200)]
Rollup merge of #72811 - pickfire:liballoc-impl, r=Amanieu

Liballoc impl

Mainly code rearrangements

4 years agoRollup merge of #72799 - Aaron1011:feature/span-debug, r=petrochenkov
Ralf Jung [Mon, 8 Jun 2020 07:55:26 +0000 (09:55 +0200)]
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.

4 years agoRollup merge of #72761 - poliorcetics:use-keyword-doc, r=Dylan-DPC
Ralf Jung [Mon, 8 Jun 2020 07:55:24 +0000 (09:55 +0200)]
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.

4 years agoRollup merge of #72615 - jschwe:fix-Zprofile-documentation, r=steveklabnik
Ralf Jung [Mon, 8 Jun 2020 07:55:22 +0000 (09:55 +0200)]
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

4 years agoRollup merge of #72583 - CAD97:vec-iter-asref-slice, r=dtolnay
Ralf Jung [Mon, 8 Jun 2020 07:55:20 +0000 (09:55 +0200)]
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.)

4 years agoRollup merge of #72026 - botika:master, r=estebank
Ralf Jung [Mon, 8 Jun 2020 07:55:18 +0000 (09:55 +0200)]
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.

4 years agoAuto merge of #73046 - marmeladema:save-analysis-fix-path, r=Xanewok
bors [Mon, 8 Jun 2020 03:54:52 +0000 (03:54 +0000)]
Auto merge of #73046 - marmeladema:save-analysis-fix-path, r=Xanewok

save_analysis: fix some ICEs

Fixes #73020
Fixes #73022
Fixes #73041

4 years agoAuto merge of #72904 - shepmaster:reduce-abi-symbol-hash-churn, r=jonas-schievink...
bors [Sun, 7 Jun 2020 21:42:27 +0000 (21:42 +0000)]
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

4 years agoUse `LocalDefId` directly in `Resolver::export_map` and `module_exports` query
marmeladema [Sun, 7 Jun 2020 10:14:47 +0000 (11:14 +0100)]
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`.

4 years agoFix rebase fallout
flip1995 [Sun, 7 Jun 2020 19:33:03 +0000 (21:33 +0200)]
Fix rebase fallout

4 years agoApply self-review by Centril
flip1995 [Sun, 7 Jun 2020 14:43:17 +0000 (16:43 +0200)]
Apply self-review by Centril

4 years agosplit unnested_or_patterns test
Mazdak Farrokhzad [Sat, 28 Mar 2020 12:08:57 +0000 (13:08 +0100)]
split unnested_or_patterns test

4 years agodogfood unnested_or_patterns
Mazdak Farrokhzad [Sat, 28 Mar 2020 10:45:13 +0000 (11:45 +0100)]
dogfood unnested_or_patterns

4 years agoRemove unnecessary lifetime parameter
Eduardo Broto [Sun, 7 Jun 2020 19:13:13 +0000 (21:13 +0200)]
Remove unnecessary lifetime parameter

4 years agoadd `unnested_or_patterns` lint
Mazdak Farrokhzad [Thu, 19 Mar 2020 13:14:52 +0000 (14:14 +0100)]
add `unnested_or_patterns` lint

4 years agoreversed_empty_ranges: don't lint N..N except in for loop arg
Eduardo Broto [Sun, 7 Jun 2020 18:38:28 +0000 (20:38 +0200)]
reversed_empty_ranges: don't lint N..N except in for loop arg

4 years agolet_and_return: do not lint if last statement borrows
Eduardo Broto [Sat, 6 Jun 2020 22:30:39 +0000 (00:30 +0200)]
let_and_return: do not lint if last statement borrows

4 years agoRename let_and_return test for consistency with the lint name
Eduardo Broto [Sat, 6 Jun 2020 19:51:41 +0000 (21:51 +0200)]
Rename let_and_return test for consistency with the lint name

4 years agoMake let_and_return a late lint pass
Eduardo Broto [Tue, 2 Jun 2020 23:13:57 +0000 (01:13 +0200)]
Make let_and_return a late lint pass

4 years agoAuto merge of #73099 - Dylan-DPC:rollup-7u8f3m4, r=Dylan-DPC
bors [Sun, 7 Jun 2020 17:55:19 +0000 (17:55 +0000)]
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

4 years agoRollup merge of #72977 - tblah:riscv-codegen-llvm10, r=nikomatsakis
Dylan DPC [Sun, 7 Jun 2020 16:11:29 +0000 (18:11 +0200)]
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.

4 years agoRollup merge of #72952 - pnkfelix:regression-test-for-issue-70924, r=nikomatsakis
Dylan DPC [Sun, 7 Jun 2020 16:11:27 +0000 (18:11 +0200)]
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.

4 years agoAdd Item::is_fake for rustdoc
Joshua Nelson [Sun, 7 Jun 2020 16:01:20 +0000 (12:01 -0400)]
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.

4 years agoAuto merge of #73093 - Dylan-DPC:rollup-9gh5tyu, r=Dylan-DPC
bors [Sun, 7 Jun 2020 14:14:34 +0000 (14:14 +0000)]
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

4 years agoRollup merge of #73063 - pickfire:liballoc-elide, r=kennytm
Dylan DPC [Sun, 7 Jun 2020 13:33:45 +0000 (15:33 +0200)]
Rollup merge of #73063 - pickfire:liballoc-elide, r=kennytm

Elide type on liballoc vec

4 years agoRollup merge of #72998 - poliorcetics:atomic-availability-doc, r=Amanieu
Dylan DPC [Sun, 7 Jun 2020 13:33:44 +0000 (15:33 +0200)]
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.

4 years agoRollup merge of #72970 - OddCoincidence:feature-gated-lints, r=petrochenkov
Dylan DPC [Sun, 7 Jun 2020 13:33:42 +0000 (15:33 +0200)]
Rollup merge of #72970 - OddCoincidence:feature-gated-lints, r=petrochenkov

Properly handle feature-gated lints

Closes #72694

4 years agoRollup merge of #72908 - RalfJung:false-edge, r=matthewjasper
Dylan DPC [Sun, 7 Jun 2020 13:33:39 +0000 (15:33 +0200)]
Rollup merge of #72908 - RalfJung:false-edge, r=matthewjasper

rename FalseEdges -> FalseEdge

There's just a single false edge in this terminator, not multiple of them.

r? @matthewjasper @jonas-schievink

4 years agoRollup merge of #72764 - jonas-schievink:mind-the-tyerr, r=estebank
Dylan DPC [Sun, 7 Jun 2020 13:33:32 +0000 (15:33 +0200)]
Rollup merge of #72764 - jonas-schievink:mind-the-tyerr, r=estebank

Be more careful around ty::Error in generators

cc https://github.com/rust-lang/rust/issues/72685

(doesn't close it because it's missing a reproduction to use as a test case)

r? @estebank

4 years agoClean up E0646
Guillaume Gomez [Sun, 7 Jun 2020 13:22:15 +0000 (15:22 +0200)]
Clean up E0646

4 years agoAdd tests for E0758
Guillaume Gomez [Tue, 2 Jun 2020 12:16:46 +0000 (14:16 +0200)]
Add tests for E0758

4 years agoCreate new error code E0758 for unterminated multi-line comments
Guillaume Gomez [Tue, 2 Jun 2020 12:13:03 +0000 (14:13 +0200)]
Create new error code E0758 for unterminated multi-line comments

4 years agoAuto merge of #5691 - flip1995:rustup, r=matthiaskrgr
bors [Sun, 7 Jun 2020 12:55:08 +0000 (12:55 +0000)]
Auto merge of #5691 - flip1995:rustup, r=matthiaskrgr

Rustup

changelog: none

4 years agoTemporarily disable RLS integration test
flip1995 [Sun, 7 Jun 2020 12:54:21 +0000 (14:54 +0200)]
Temporarily disable RLS integration test

4 years agoEnable LVI hardening for x86_64-fortanix-unknown-sgx
Jethro Beekman [Tue, 26 May 2020 20:53:30 +0000 (22:53 +0200)]
Enable LVI hardening for x86_64-fortanix-unknown-sgx

4 years agounstable book: default_free_fn
Ilya Bobyr [Fri, 5 Jun 2020 06:15:35 +0000 (23:15 -0700)]
unstable book: default_free_fn

4 years agoFree `default()` forwarding to `Default::default()`
Ilya Bobyr [Thu, 4 Jun 2020 03:36:53 +0000 (20:36 -0700)]
Free `default()` forwarding to `Default::default()`

When creating default values a trait method needs to be called with an
explicit trait name.  `Default::default()` seems redundant.  A free
function on the other hand, when imported directly, seems to be a better
API, as it is just `default()`.  When implementing the trait, a method
is still required.

4 years agorename FalseEdges -> FalseEdge
Ralf Jung [Tue, 2 Jun 2020 07:15:24 +0000 (09:15 +0200)]
rename FalseEdges -> FalseEdge

4 years agoAuto merge of #73072 - arcnmx:lld-noload, r=nikic
bors [Sun, 7 Jun 2020 05:58:49 +0000 (05:58 +0000)]
Auto merge of #73072 - arcnmx:lld-noload, r=nikic

Update LLVM submodule to include lld NOLOAD fix

> Rust nightly 2020-05-22 and later ships lld with a regression related to linker scripts: NOLOAD sections incorrectly generate sections filled with 0s. This causes gdb and other elf loaders to write to reserved or otherwise invalid addresses (gdb also seems confused by the resulting ELF files and spits out a warning about the sections). This is particularly a problem for embedded rust projects that use lld by default and have affected linker scripts (cortex-m-rt based projects for instance).

https://github.com/rust-lang/llvm-project/pull/64

Note that this also pulls in llvm changes from #72937

4 years agoOrder the Rust and C ABIs first to reduce test churn
Jake Goulding [Tue, 2 Jun 2020 02:20:12 +0000 (22:20 -0400)]
Order the Rust and C ABIs first to reduce test churn

4 years agoRustup to rust-lang/rust#71796
flip1995 [Sun, 7 Jun 2020 01:07:48 +0000 (03:07 +0200)]
Rustup to rust-lang/rust#71796

4 years agoAuto merge of #73081 - Dylan-DPC:rollup-1aqk215, r=Dylan-DPC
bors [Sun, 7 Jun 2020 00:34:54 +0000 (00:34 +0000)]
Auto merge of #73081 - Dylan-DPC:rollup-1aqk215, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #72810 (validate basic sanity for TerminatorKind)
 - #72989 (Revert pr 71840)
 - #72993 (Count the beta prerelease number just from master)
 - #73057 (Clean up E0644 explanation)
 - #73059 (remove outdated comment)

Failed merges:

r? @ghost

4 years agoRollup merge of #73059 - lcnr:outdated-comment, r=matthewjasper
Dylan DPC [Sun, 7 Jun 2020 00:29:02 +0000 (02:29 +0200)]
Rollup merge of #73059 - lcnr:outdated-comment, r=matthewjasper

remove outdated comment

r? @matthewjasper

4 years agoRollup merge of #73057 - GuillaumeGomez:cleanup-e0644, r=Dylan-DPC
Dylan DPC [Sun, 7 Jun 2020 00:29:00 +0000 (02:29 +0200)]
Rollup merge of #73057 - GuillaumeGomez:cleanup-e0644, r=Dylan-DPC

Clean up E0644 explanation

r? @Dylan-DPC

4 years agoRollup merge of #72993 - cuviper:beta-number, r=Mark-Simulacrum
Dylan DPC [Sun, 7 Jun 2020 00:28:58 +0000 (02:28 +0200)]
Rollup merge of #72993 - cuviper:beta-number, r=Mark-Simulacrum

Count the beta prerelease number just from master

We were computing a merge-base between the remote beta and master
branches, but this was giving incorrect answers for the first beta if
the remote hadn't been pushed yet. For instance, `1.45.0-beta.3359`
corresponds to the number of merges since the 1.44 beta, but we really
want just `.1` for the sole 1.45 beta promotion merge.

We don't really need to query the remote beta at all -- `master..HEAD`
suffices if we assume that we're on the intended beta branch already.

4 years agoRollup merge of #72989 - pnkfelix:revert-pr-71840, r=matthewjasper
Dylan DPC [Sun, 7 Jun 2020 00:28:56 +0000 (02:28 +0200)]
Rollup merge of #72989 - pnkfelix:revert-pr-71840, r=matthewjasper

Revert pr 71840

Revert7 PR #71840 to fix issue #72470

This will need a backport to beta if we do not want #72470 to hit stable.

4 years agoRollup merge of #72810 - RalfJung:mir-terminate-sanity, r=jonas-schievink
Dylan DPC [Sun, 7 Jun 2020 00:28:54 +0000 (02:28 +0200)]
Rollup merge of #72810 - RalfJung:mir-terminate-sanity, r=jonas-schievink

validate basic sanity for TerminatorKind

r? @jonas-schievink

This mainly checks that all `BasicBlock` actually exist. On top of that, it checks that `Call` actually calls something of `FnPtr`/`FnDef` type, and `Assert` has to work on a `bool`. Also `SwitchInt` cannot have an empty target list.

4 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Sun, 7 Jun 2020 00:17:49 +0000 (02:17 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup