Commit graph

120052 commits

Author SHA1 Message Date
David Tolnay
bea2c59ea5
Clarify use of format_args in Debug for Literal 2020-05-15 09:35:46 -07:00
David Tolnay
4c4b4c4ab4
Add test of proc_macro::TokenStream's Debug 2020-05-15 09:04:00 -07:00
David Tolnay
45ee336007
Fix {:#?} representation of proc_macro::Literal
Before:

    TokenStream [
        Ident {
            ident: "name",
            span: #0 bytes(37..41),
        },
        Punct {
            ch: '=',
            spacing: Alone,
            span: #0 bytes(42..43),
        },
        Literal { lit: Lit { kind: Str, symbol: "SNPP", suffix: None }, span: Span { lo: BytePos(44), hi: BytePos(50), ctxt: #0 } },
        Punct {
            ch: ',',
            spacing: Alone,
            span: #0 bytes(50..51),
        },
        Ident {
            ident: "owner",
            span: #0 bytes(56..61),
        },
        Punct {
            ch: '=',
            spacing: Alone,
            span: #0 bytes(62..63),
        },
        Literal { lit: Lit { kind: Str, symbol: "Canary M Burns", suffix: None }, span: Span { lo: BytePos(64), hi: BytePos(80), ctxt: #0 } },
    ]

After:

    TokenStream [
        Ident {
            ident: "name",
            span: #0 bytes(37..41),
        },
        Punct {
            ch: '=',
            spacing: Alone,
            span: #0 bytes(42..43),
        },
        Literal {
            kind: Str,
            symbol: "SNPP",
            suffix: None,
            span: #0 bytes(44..50),
        },
        Punct {
            ch: ',',
            spacing: Alone,
            span: #0 bytes(50..51),
        },
        Ident {
            ident: "owner",
            span: #0 bytes(56..61),
        },
        Punct {
            ch: '=',
            spacing: Alone,
            span: #0 bytes(62..63),
        },
        Literal {
            kind: Str,
            symbol: "Canary M Burns",
            suffix: None,
            span: #0 bytes(64..80),
        },
    ]
2020-05-15 08:36:33 -07:00
bors
85f0da67ff Auto merge of #71321 - matthewjasper:alloc-min-spec, r=sfackler
Use min_specialization in liballoc

- Remove a type parameter from `[A]RcFromIter`.
- Remove an implementation of `[A]RcFromIter` that didn't actually
  specialize anything.
- Remove unused implementation of `IsZero` for `Option<&mut T>`.
- Change specializations of `[A]RcEqIdent` to use a marker trait version
of `Eq`.
- Remove `BTreeClone`. I couldn't find a way to make this work with
  `min_specialization`.
- Add `rustc_unsafe_specialization_marker` to `Copy` and `TrustedLen`.

After this only libcore is the only standard library crate using `feature(specialization)`.
cc #31844
2020-05-14 23:22:47 +00:00
bors
a74d1862d4 Auto merge of #72202 - Dylan-DPC:rollup-6lbxh1s, r=Dylan-DPC
Rollup of 8 pull requests

Successful merges:

 - #71910 (Fix unused_parens false positive when using binary operations)
 - #72087 (Fix hang in lexical_region_resolve)
 - #72126 (Change `WorkProduct::saved_files` to an `Option`.)
 - #72127 (add long error explanation for E0228)
 - #72141 (Warn against thread::sleep in async fn)
 - #72170 (use `require_lang_item` over `unwrap`.)
 - #72191 (Clean up E0589 explanation)
 - #72194 (Don't ICE on missing `Unsize` impl)

Failed merges:

r? @ghost
2020-05-14 19:35:24 +00:00
Dylan DPC
7b5bc61e99
Rollup merge of #72194 - doctorn:dispatch-from-dyn-ice, r=estebank
Don't ICE on missing `Unsize` impl

Previously code of the form

```rust
#![feature(unsize, dispatch_from_dyn)]

use std::marker::Unsize;
use std::ops::DispatchFromDyn;

pub struct Foo<'a, T: ?Sized> {
    _inner: &'a &'a T,
}

impl<'a, T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<Foo<'a, U>> for Foo<'a, T> {}
```

would generate an ICE due to the missing `Unsize` impl being run through the `suggest_change_mut` suggestion. This PR adds an early exit and a pointer to the appropriate docs regarding `Unsize` instead:

```
error[E0277]: the trait bound `&'a T: std::marker::Unsize<&'a U>` is not satisfied
  --> src/test/ui/issues/issue-71036.rs:11:1
   |
11 | impl<'a, T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<Foo<'a, U>> for Foo<'a, T> {}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Unsize<&'a U>` is not implemented for `&'a T`
   |
   = note: all implementations of `Unsize` are provided automatically by the compiler, see <https://doc.rust-lang.org/stable/std/marker/trait.Unsize.html> for more information
   = note: required because of the requirements on the impl of `std::ops::DispatchFromDyn<&'a &'a U>` for `&'a &'a T`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
```

r? @estebank

Resolves #71036
2020-05-14 18:21:59 +02:00
Dylan DPC
d7f5e56498
Rollup merge of #72191 - GuillaumeGomez:cleanup-e0589, r=Dylan-DPC
Clean up E0589 explanation

r? @Dylan-DPC
2020-05-14 18:21:57 +02:00
Dylan DPC
62f184030a
Rollup merge of #72170 - lcnr:lang_item, r=oli-obk
use `require_lang_item` over `unwrap`.

Does not yet replace all uses of `lang_items\(\)\.*\.unwrap\(\)`, as there are more
than I expected 😅

Fixes #72099

r? @RalfJung

*edit: The goal of this this PR is to change ICE from missing lang items to a fatal error.*
2020-05-14 18:21:55 +02:00
Dylan DPC
d732aeff91
Rollup merge of #72141 - kornelski:dontsleep, r=joshtriplett
Warn against thread::sleep in async fn

I've seen `thread::sleep` wrecking havoc in async servers. There's already an [issue for clippy](https://github.com/rust-lang/rust-clippy/issues/4377), but the std docs could warn against it too.
2020-05-14 18:21:53 +02:00
Dylan DPC
746b8ca083
Rollup merge of #72127 - jademcgough:long-error-explanation-E0228, r=petrochenkov
add long error explanation for E0228

Add long explanation for the E0228 error code
Part of #61137

Let me know if this is wrong at all (or can be written more clearly), I'm still learning Rust.
2020-05-14 18:21:51 +02:00
Dylan DPC
96caa257c3
Rollup merge of #72126 - nnethercote:change-WorkProduct-saved_files, r=alexcrichton
Change `WorkProduct::saved_files` to an `Option`.

Because there is at most one file.

r? @bjorn3
2020-05-14 18:21:50 +02:00
Dylan DPC
2e65f7bc1f
Rollup merge of #72087 - matthewjasper:regionck-hang, r=nikomatsakis
Fix hang in lexical_region_resolve

Regionck was stuck in a loop where a region value was changing between two equal regions.

Closes #72051
2020-05-14 18:21:48 +02:00
Dylan DPC
b20b200d2e
Rollup merge of #71910 - mibac138:necessary-paren, r=cuviper
Fix unused_parens false positive when using binary operations

Fixes #71290

r? @cuviper who provided instructions
2020-05-14 18:21:46 +02:00
Nathan Corbyn
f6aa161936 Don't ICE on missing Unsize impl 2020-05-14 15:29:05 +01:00
bors
af6d8865fe Auto merge of #72187 - RalfJung:rollup-a7a9jdi, r=RalfJung
Rollup of 12 pull requests

Successful merges:

 - #71525 (`prefix` should not be mutable.)
 - #71741 (Pointer printing: do not print 0 offset)
 - #71870 (Be slightly more precise about any::type_name()'s guarantees.)
 - #71909 (Document From trait for Option implementations)
 - #71964 (Fix bootstrap failing on win32)
 - #72137 (Clean up E0581 explanation)
 - #72138 (Add doc comment for `rustc_middle::mir::mono::Linkage`)
 - #72150 (Remove UnnormalizedProjection)
 - #72151 (Update books)
 - #72163 (docs: remove comment referencing non-existent method)
 - #72169 (Clean up E0582 explanation)
 - #72183 (Fix Arc::decr_strong_count doc test)

Failed merges:

r? @ghost
2020-05-14 12:28:23 +00:00
Guillaume Gomez
31fbf33679 Clean up E0589 explanation 2020-05-14 11:51:39 +02:00
Ralf Jung
56986bebc2
Rollup merge of #72183 - tmiasko:decr-strong-count, r=Mark-Simulacrum
Fix Arc::decr_strong_count doc test
2020-05-14 10:23:06 +02:00
Ralf Jung
864eae7c48
Rollup merge of #72169 - GuillaumeGomez:cleanup-e0582, r=Dylan-DPC
Clean up E0582 explanation

r? @Dylan-DPC
2020-05-14 10:23:05 +02:00
Ralf Jung
71f460b117
Rollup merge of #72163 - tshepang:nonexistent-link, r=matthewjasper
docs: remove comment referencing non-existent method
2020-05-14 10:23:03 +02:00
Ralf Jung
39f91b1ed4
Rollup merge of #72151 - ehuss:update-books, r=ehuss
Update books

## book

2 commits in e37c0e84e2ef73d3a4ebffda8011db6814a3b02d..6247be15a7f7509559f7981ee2209b9e0cc121df
2020-04-26 09:31:36 -0500 to 2020-05-03 10:55:09 -0500
- Fix guessing game listing explanation (rust-lang/book#2321)
- Update ch01-01-installation.md (rust-lang/book#2325)

## edition-guide

1 commits in 8204c1d123472cd17f0c1c5c77300ae802eb0271..49270740c7a4bff2763e6bc730b191d45b7d5167
2020-04-09 18:55:50 -0700 to 2020-05-11 08:50:29 -0500
- Use rust-lang/rust linkchecker on CI. (rust-lang/edition-guide#197)

## embedded-book

1 commits in 40beccdf1bb8eb9184a2e3b42db8b8c6e394247f..366c50a03bed928589771eba8a6f18e0c0c01d23
2020-04-26 17:44:14 +0000 to 2020-05-07 09:04:42 +0000
- Add HAL patterns/guidelines/recommendations  (rust-embedded/book#235)

## nomicon

3 commits in 4d2d275997746d35eabfc4d992dfbdcce2f626ed..d1517d4e3f29264c5c67bce2658516bb5202c800
2020-04-27 10:24:52 -0400 to 2020-05-12 13:47:00 -0400
- Rename Unique::empty to Unique::dangling
- Use simpler link syntax
- Replace catch_panic by catch_unwind

## reference

3 commits in ed22e6fbfcb6ce436e9ea3b4bb4a55b2fb50a57e..892b928b565e35d25b6f9c47faee03b94bc41489
2020-04-24 12:46:22 -0700 to 2020-05-11 11:13:51 -0700
- clarify that str data must still be initialized
- remove language-level UB for non-UTF-8 str
- Replace incorrect term "parent modules" with "ancestor modules". (rust-lang/reference#806)

## rust-by-example

2 commits in ffc99581689fe2455908aaef5f5cf50dd03bb8f5..ab072b14393cbd9e8a1d1d75879bf51e27217bbb
2020-04-24 15:05:04 -0300 to 2020-05-09 08:46:39 -0300
- Fix link of formatting traits (rust-lang/rust-by-example#1346)
- Remove stale footnote (rust-lang/rust-by-example#1345)
2020-05-14 10:23:01 +02:00
Ralf Jung
e5f31e0a3e
Rollup merge of #72150 - jackh726:unnorm_projection, r=nikomatsakis
Remove UnnormalizedProjection

This was only used for the old chalk integration with chalk-engine

r? @nikomatsakis
2020-05-14 10:22:59 +02:00
Ralf Jung
18d7c34625
Rollup merge of #72138 - wesleywiser:add_doc_comment, r=matthewjasper
Add doc comment for `rustc_middle::mir::mono::Linkage`
2020-05-14 10:22:57 +02:00
Ralf Jung
0b8b38c4c2
Rollup merge of #72137 - GuillaumeGomez:cleanup-e0581, r=Dylan-DPC
Clean up E0581 explanation

r? @Dylan-DPC
2020-05-14 10:22:55 +02:00
Ralf Jung
577da45097
Rollup merge of #71964 - jcotton42:bootstrap_decode_none_windows, r=Mark-Simulacrum
Fix bootstrap failing on win32

```powershell
python x.py -h # or really any x.py command
```
would fail with
```
info: Downloading and building bootstrap before processing --help
      command. See src/bootstrap/README.md for help with common
      commands.
Updating only changed submodules
Submodules updated in 0.15 seconds
Traceback (most recent call last):
  File "x.py", line 11, in <module>
    bootstrap.main()
  File "C:\Users\Joshua\Projects\forks\rust\src\bootstrap\bootstrap.py", line 960, in main
    bootstrap(help_triggered)
  File "C:\Users\Joshua\Projects\forks\rust\src\bootstrap\bootstrap.py", line 925, in bootstrap
    build.build = args.build or build.build_triple()
  File "C:\Users\Joshua\Projects\forks\rust\src\bootstrap\bootstrap.py", line 731, in build_triple
    return default_build_triple()
  File "C:\Users\Joshua\Projects\forks\rust\src\bootstrap\bootstrap.py", line 184, in default_build_triple
    ostype = require(["uname", "-s"], exit=required).decode(default_encoding)
AttributeError: 'NoneType' object has no attribute 'decode'
```

This PR defers the `decode` call until after we're sure `ostype` and `cputype` are not `None`, as they would be on Windows since `uname` doesn't exist
2020-05-14 10:22:54 +02:00
Ralf Jung
a6c1f61db7
Rollup merge of #71909 - Dolpheyn:doc-from-trait-for-option, r=steveklabnik
Document From trait for Option implementations

Add documentation for ```From``` trait for ```std::option::Option``` implementations

This PR solves a part of #51430 ( CC @skade )

This is my first PR ever in contributing for OSS. I'm happy to learn and make any changes if necessary :)
2020-05-14 10:22:52 +02:00
Ralf Jung
720ec68435
Rollup merge of #71870 - ltratt:more_specific_type_name_doc, r=kennytm
Be slightly more precise about any::type_name()'s guarantees.

The first commit in this PR rephrases the current documentation for `any::type_name()` to be a little more specific about the guarantees (or lack thereof) that this function makes. The second commit explicitly documents that lifetimes are currently not included in the output (since this bit me particularly hard recently).
2020-05-14 10:22:50 +02:00
Ralf Jung
7893d9a8d6
Rollup merge of #71741 - RalfJung:pointer-print, r=oli-obk
Pointer printing: do not print 0 offset

r? @eddyb Cc @oli-obk
2020-05-14 10:22:48 +02:00
Ralf Jung
32ea6a154f
Rollup merge of #71525 - ldm0:intosug, r=Mark-Simulacrum
`prefix` should not be mutable.

Change the process from for loop to find, which makes the `prefix` able to be immutable.
2020-05-14 10:22:40 +02:00
bors
7c34d8d662 Auto merge of #69756 - wesleywiser:simplify_try, r=oli-obk
Modify SimplifyArmIdentity so it can trigger on mir-opt-level=1

I also added test cases to make sure the optimization can fire on all of
these cases:

```rust
fn case_1(o: Option<u8>) -> Option<u8> {
  match o {
    Some(u) => Some(u),
    None => None,
  }
}

fn case2(r: Result<u8, i32>) -> Result<u8, i32> {
  match r {
    Ok(u) => Ok(u),
    Err(i) => Err(i),
  }
}

fn case3(r: Result<u8, i32>) -> Result<u8, i32> {
  let u = r?;
  Ok(u)
}

```

Without MIR inlining, this still does not completely optimize away the
`?` operator because the `Try::into_result()`, `From::from()` and
`Try::from_error()` calls still exist. This does move us a bit closer to
that goal though because:

- We can now run the pass on mir-opt-level=1

- We no longer depend on the copy propagation pass running which is
  unlikely to stabilize anytime soon.

Fixes #66855
2020-05-14 06:22:40 +00:00
bors
23ffeea307 Auto merge of #72058 - RalfJung:no-dist-lldb, r=Mark-Simulacrum
bootstrap: remove lldb dist packaging

The lldb-preview rustup package is missing on every single target, and has never been shipped beyond x86_64-apple-darwin. It was removed in #62592 which landed around a year ago, and there's not been demand that we re-enable it since, so we're now removing support entirely to cleanup the code a bit.

The hope is that this will also kill the useless "lldb-preview" row on https://rust-lang.github.io/rustup-components-history/.
2020-05-14 02:50:34 +00:00
Tomasz Miąsko
dab3a5813e Fix Arc::decr_strong_count doc test 2020-05-14 00:56:49 +02:00
bors
94c0ab936b Auto merge of #72118 - flip1995:clippyup, r=oli-obk
Update Clippy to 43a1777

Updates Clippy to 43a1777b89

We should establish a process on how often and when to update Clippy. (After X feature PRs? Once per week? Only on bug fixes and in the release week? ...?)

r? @oli-obk
2020-05-13 21:15:09 +00:00
Tshepang Lekhonkhobe
e44f87fca3 docs: fix link
source https://github.com/rust-lang/rust/pull/72163#issuecomment-628234966
2020-05-13 23:02:56 +02:00
Bastian Kauschke
9001a64299 add spans to require_lang_items 2020-05-13 21:38:58 +02:00
bors
75e1463c52 Auto merge of #72013 - nnethercote:make-RawVec-grow-mostly-non-generic, r=Amanieu
Make `RawVec::grow` mostly non-generic.

`cargo-llvm-lines` shows that, in various benchmarks, `RawVec::grow` is
instantiated 10s or 100s of times and accounts for 1-8% of lines of
generated LLVM IR.

This commit moves most of `RawVec::grow` into a separate function that
isn't parameterized by `T`, which means it doesn't need to be
instantiated many times. This reduces compile time significantly.

r? @ghost
2020-05-13 14:29:56 +00:00
Faris Sufyan
6c3856f3ec
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:35 +08:00
Faris Sufyan
ef1688db8e
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:27 +08:00
Faris Sufyan
f445a8286e
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:17 +08:00
Faris Sufyan
adc2bf0cfe
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:08 +08:00
Faris Sufyan
644bb24e33
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:12:50 +08:00
Faris Sufyan
a9e7d57238
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:12:35 +08:00
Faris Sufyan
4588c26e53
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:05:53 +08:00
Faris Sufyan
46e9cbea3a
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:04:52 +08:00
Bastian Kauschke
5f93bc774b use require_lang_item over unwrap. 2020-05-13 14:47:17 +02:00
Guillaume Gomez
bb2ff593a6 Clean up E0582 explanation 2020-05-13 13:40:55 +02:00
bors
750db09fa8 Auto merge of #71451 - estebank:suggest-super-trait-constraint, r=nikomatsakis
Suggest adding super trait constraints
2020-05-13 06:54:15 +00:00
bors
a2e0b48e6e Auto merge of #70416 - mzohreva:mz/sgx-test, r=nikomatsakis
Process termination test for SGX

The issue is described in https://github.com/fortanix/rust-sgx/issues/109

cc @jethrogb
2020-05-13 03:29:00 +00:00
Jade McGough
5320bd986b add long error explanation for E0228 2020-05-12 17:09:09 -07:00
Esteban Küber
58797b01f1 review comments 2020-05-12 11:56:11 -07:00
Eric Huss
722b3df454 Update books 2020-05-12 11:27:03 -07:00