Commit Graph

122684 Commits

Author SHA1 Message Date
Oliver Scherer
b9f4e0dbfd Erase all block-only locals at the end of every block, even if they have not been touched. 2020-06-28 12:03:19 +02:00
bjorn3
4d978af297 Remove GlobalCtxt::enter_local 2020-06-28 11:43:10 +02:00
VillSnow
60f2ba2403 Update tracking issue number 2020-06-28 17:39:03 +09:00
bors
25687caa2e Auto merge of #73830 - Manishearth:rollup-8k68ysm, r=Manishearth
Rollup of 10 pull requests

Successful merges:

 - #72796 (MIR sanity check: validate types on assignment)
 - #73243 (Add documentation to point to `File::open` or `OpenOptions::open` instead of `is_file` to check read/write possibility)
 - #73525 (Prepare for LLVM 11)
 - #73672 (Adds a clearer message for when the async keyword is missing from a f…)
 - #73708 (Explain move errors that occur due to method calls involving `self` (take two))
 - #73758 (improper_ctypes: fix remaining `Reveal:All`)
 - #73763 (errors: use `-Z terminal-width` in JSON emitter)
 - #73796 (replace more `DefId`s with `LocalDefId`)
 - #73797 (fix typo in self-profile.md)
 - #73809 (Add links to fs::DirEntry::metadata)

Failed merges:

r? @ghost
2020-06-28 08:26:22 +00:00
VillSnow
d720a19e2a Update doc comment 2020-06-28 16:45:56 +09:00
VillSnow
83d599826f Merge branch 'master' of https://github.com/VillSnow/rust 2020-06-28 16:27:41 +09:00
VillSnow
9335787657
Update src/libcore/slice/mod.rs
Co-authored-by: Lukas Kalbertodt <lukas.kalbertodt@gmail.com>
2020-06-28 16:26:47 +09:00
VillSnow
52f976236f Add comment on use of unsafe 2020-06-28 16:25:33 +09:00
Manish Goregaokar
cdb59d9041
Rollup merge of #73809 - robyoung:docs/add-links-to-DirEntry-metadata, r=hanna-kruppe
Add links to fs::DirEntry::metadata

`fs::DirEntry::metadata` doesn't traverse symlinks. It is not immediately clear what to do if you do want to traverse symlinks. This change adds links to the two other `metadata` functions that will follow symlinks.
2020-06-27 22:30:06 -07:00
Manish Goregaokar
dc843a8c6d
Rollup merge of #73797 - atetubou:patch-1, r=jonas-schievink
fix typo in self-profile.md
2020-06-27 22:30:05 -07:00
Manish Goregaokar
800d2e3a00
Rollup merge of #73796 - lcnr:LocalDefId, r=matthewjasper
replace more `DefId`s with `LocalDefId`

part of https://github.com/rust-lang/rust/issues/70853
2020-06-27 22:30:03 -07:00
Manish Goregaokar
596af5ae5d
Rollup merge of #73763 - davidtwco:terminal-width-json-emitter, r=estebank
errors: use `-Z terminal-width` in JSON emitter

This PR makes the JSON emitter use `-Z terminal-width` in the "rendered" field of the JSON output.

r? @estebank
2020-06-27 22:30:01 -07:00
Manish Goregaokar
d5205f23d3
Rollup merge of #73758 - davidtwco:issue-60855-remaining-reveal-all, r=matthewjasper
improper_ctypes: fix remaining `Reveal:All`

Fixes #60855.

This PR replaces the remaining uses of `ParamEnv::reveal_all` with `LateContext`'s `param_env` (normally `Reveal::UserFacing`) in the improper ctypes lint.
2020-06-27 22:29:59 -07:00
Manish Goregaokar
b236e49f09
Rollup merge of #73708 - Aaron1011:feature/reland-move-fn-self-msg, r=davidtwco
Explain move errors that occur due to method calls involving `self` (take two)

This is a re-attempt of #72389 (which was reverted in #73594)
Instead of using `ExpnKind::Desugaring` to represent operators, this PR
checks the lang item directly.
2020-06-27 22:29:58 -07:00
Manish Goregaokar
d227a825bc
Rollup merge of #73672 - nellshamrell:async-fix, r=estebank
Adds a clearer message for when the async keyword is missing from a f…

…unction

This is a somewhat simple fix for #66731.

Under the current version of Rust, if a user has a rust file that looks like this:

```rust
fn boo (){}

async fn foo() {
    boo().await;
}

fn main() {

}
```

And they attempt to run it, they will receive an error message that looks like this:

```bash
error: incorrect use of `await`                                                                                                        --> test.rs:4:14                                                                                                                       |                                                                                                                                   4 |     boo.await();                                                                                                                    |              ^^ help: `await` is not a method call, remove the parentheses                                                                                                                                                                                              error[E0277]: the trait bound `fn() {boo}: std::future::Future` is not satisfied                                                        --> test.rs:4:5                                                                                                                        |                                                                                                                                  4  |     boo.await();                                                                                                                    |     ^^^^^^^^^ the trait `std::future::Future` is not implemented for `fn() {boo}`                                                                                                                                                                                      error: aborting due to 2 previous errors                                                                                                                                                                                                                                    For more information about this error, try `rustc --explain E0277`.
```

This is not very clear.

With the changes made in this PR, when a user compiles and runs that same rust code, they will receive an error message that looks like this:

```bash
error[E0277]: `()` is not a future.
 --> test.rs:4:5
  |
4 |     boo().await;
  |     ^^^^^^^^^^^ `()` is not a future
  |
  = help: the trait `std::future::Future` is not implemented for `()`
  = note: required by `std::future::Future::poll`
```

In the future, I think we should make this error message even clearer, perhaps through a solution like the one described in [this comment](https://github.com/rust-lang/rust/issues/66731#issuecomment-644394287). However, as that potentially involves a major change proposal, I would rather get this change in now and make the error message a little clearer while an MCP is drafted and discussed.

Signed-off-by: Nell Shamrell <nellshamrell@gmail.com>
2020-06-27 22:29:55 -07:00
Manish Goregaokar
45ec25e088
Rollup merge of #73525 - cuviper:llvm11, r=nikic
Prepare for LLVM 11

These are just the code changes needed to build with the current LLVM master (version 11).

r? @nikic
2020-06-27 22:29:54 -07:00
Manish Goregaokar
6a944c15ab
Rollup merge of #73243 - poliorcetics:discourage-is-file, r=Amanieu
Add documentation to point to `File::open` or `OpenOptions::open` instead of `is_file` to check read/write possibility

Fixes #64170.

This adds documentation to point user towards `!is_dir` instead of `is_file` when all they want to is read from a source.

I ran `rg "fn is_file\("` to find all `is_file` methods, I hope I did not miss one.
2020-06-27 22:29:52 -07:00
Manish Goregaokar
385d85c858
Rollup merge of #72796 - RalfJung:mir-assign-sanity, r=matthewjasper
MIR sanity check: validate types on assignment

This expands the MIR validation added by @jonas-schievink in https://github.com/rust-lang/rust/pull/72093 to also check that on an assignment, the types of both sides match.

Cc @eddyb @oli-obk
2020-06-27 22:29:46 -07:00
bors
3b4a3d68b5 Auto merge of #72705 - Lucretiel:stdio-forwarding, r=Amanieu
Added io forwarding methods to the stdio structs

Added methods to forward the `io::Read` and `io::Write` methods of the myriad wrapper structs in `stdio.rs` to their underlying readers / writers. This is especially important for the structs on the outside of a locking boundary, to ensure that the lock isn't being dropped and re-acquired in a loop.
2020-06-28 04:16:52 +00:00
Caleb Hattingh
8291a22dd4
Fix docstring typo 2020-06-28 13:26:09 +10:00
jumbatm
c72a5dd9d3 Rename the lint to clashing_extern_declarations.
Also, run RustFmt on the clashing_extern_fn test case and update
stderrs.
2020-06-28 10:11:29 +10:00
Alexis Bourget
8e8c54aa3a Added the parapgrah to path::Path::is_file too 2020-06-27 22:59:47 +02:00
Vadim Petrochenkov
6d0e5bf348 Rename two Resolver traits 2020-06-27 23:51:28 +03:00
bors
9bdd2db3a6 Auto merge of #73671 - ehuss:update-mdbook, r=Mark-Simulacrum
Update mdbook

This updates mdbook to 0.4.  The list of changes can be found at https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-040.  I think the most important one is the change to include fonts with the book instead of using the Google Fonts CDN. This adds a few megabytes of fonts to the docs component.  It may be possible to share the fonts across the books, but would take a fair bit of work to make that happen, so I'm not sure if it is necessary.

This also removes mdbook-linkcheck. It is currently not being used, and I don't foresee it going back into use anytime soon. I would prefer not to maintain something that isn't being used, and it removes a very large number of dependencies.
2020-06-27 20:14:34 +00:00
ecstatic-morse
ffcfaa1105
Fix comment. 2020-06-27 12:57:00 -07:00
Yuki Okushi
1d16aed7f0
Add test for issue-72352 2020-06-28 04:49:51 +09:00
Yuki Okushi
7125ce7ab7
Add test for issue-71611 2020-06-28 04:49:51 +09:00
Yuki Okushi
99884bd879
Add test for issue-71382 2020-06-28 04:49:51 +09:00
Rob Young
0e0584f290 Add links to fs::DirEntry::metadata
`fs::DirEntry::metadata` doesn't traverse symlinks. It is not immediately
clear what to do if you do want to traverse symlinks. This change adds
links to the two other `metadata` functions that will follow symlinks.
2020-06-27 19:32:19 +01:00
Alexis Bourget
d25d6c5bd8 Update the documentation to point to open instead of is_file and is_dir 2020-06-27 18:10:58 +02:00
Nikita Popov
4c14f9d110 Forward Hash::write_iN to Hash::write_uN 2020-06-27 15:36:46 +02:00
Takuto Ikuta
9308860a7b
fix typo in self-profile.md 2020-06-27 21:38:51 +09:00
Bastian Kauschke
2d280a55a9 more LocalDefId cleanup 2020-06-27 13:38:00 +02:00
Yuki Okushi
88fe556db8
Add test for issue-71381 2020-06-27 20:33:50 +09:00
Bastian Kauschke
1875c79772 more LocalDefId in ty::context 2020-06-27 13:15:12 +02:00
Bastian Kauschke
a4e7b47984 use LocalDefId in module checking 2020-06-27 13:09:54 +02:00
bors
394e1b40d2 Auto merge of #73779 - Manishearth:rollup-lwqd9jm, r=Manishearth
Rollup of 12 pull requests

Successful merges:

 - #72771 (Warn if linking to a private item)
 - #72937 (Fortanix SGX target libunwind build process changes)
 - #73485 (Perform obligation deduplication to avoid buggy `ExistentialMismatch`)
 - #73529 (Add liballoc impl SpecFromElem for i8)
 - #73579 (add missing doc links)
 - #73627 (Shortcuts for min/max on double-ended BTreeMap/BTreeSet iterators)
 - #73691 (Bootstrap: detect Windows based on sys.platform)
 - #73694 (Document the Self keyword)
 - #73718 (Document the super keyword)
 - #73728 (Document some invariants correctly/more)
 - #73738 (Remove irrelevant comment)
 - #73765 (Remove blank line)

Failed merges:

r? @ghost
2020-06-27 02:44:35 +00:00
bors
dda8a7fde9 Auto merge of #73596 - petrochenkov:shebang2, r=Mark-Simulacrum
rustc_lexer: Simplify shebang parsing once more

Fixes https://github.com/rust-lang/rust/issues/73250 (beta regression)

Treat any line starting with `!#` as a shebang candidate, not only lines with something non-whitespace.
This way we no longer need to define what `is_whitespace` means ([Linux shebang whitespace](https://github.com/torvalds/linux/blob/master/fs/binfmt_script.c), ASCII whitespace, Rust lexer whitespace, etc), which is nice.

This change makes some invalid Rust code valid (see the regression above), but still never interprets a fragment of valid Rust code as a shebang.

(This PR also removes one duplicate test.)
2020-06-26 22:42:44 +00:00
Manish Goregaokar
50026aed24
Rollup merge of #73765 - kraai:remove-blank-line, r=jonas-schievink
Remove blank line
2020-06-26 13:57:46 -07:00
Manish Goregaokar
7926c64642
Rollup merge of #73738 - nbdd0121:comment, r=nikomatsakis
Remove irrelevant comment

Iterator is no longer a lang item since 216e72f8d9.
2020-06-26 13:57:44 -07:00
Manish Goregaokar
83f6d0a93f
Rollup merge of #73728 - oli-obk:const_prop_cleanup, r=wesleywiser
Document some invariants correctly/more

r? @wesleywiser
2020-06-26 13:57:43 -07:00
Manish Goregaokar
bc10bb02f5
Rollup merge of #73718 - poliorcetics:super-keyword, r=shepmaster
Document the super keyword

Partial fix of #34601.

Quite short, just a small example and a link to the reference.

@rustbot modify labels: T-doc,C-enhancement
2020-06-26 13:57:41 -07:00
Manish Goregaokar
8d9c00d7f1
Rollup merge of #73694 - poliorcetics:self-upper-keyword, r=Mark-Simulacrum
Document the Self keyword

Partial fix of #34601.

Document the `Self` keyword.

This contains simple examples of the places where `Self` can be used.
2020-06-26 13:57:39 -07:00
Manish Goregaokar
c18e919a79
Rollup merge of #73691 - ajpaverd:bootstrap-windows-73689, r=Mark-Simulacrum
Bootstrap: detect Windows based on sys.platform

Closes #73689.
2020-06-26 13:57:37 -07:00
Manish Goregaokar
dfbba65786
Rollup merge of #73627 - ssomers:btree_iter_min_max, r=Mark-Simulacrum
Shortcuts for min/max on double-ended BTreeMap/BTreeSet iterators

Closes #59947: a performance tweak that might benefit some. Optimizes `min` and `max ` on all btree double-ended iterators that do not drop, i.e. the iterators created by:

- `BTreeMap::iter`
- `BTreeMap::iter_mut`
- `BTreeMap::keys` and `BTreeSet::iter`
- `BTreeMap::range` and `BTreeSet::range`
- `BTreeMap::range_mut`

Also in these (currently) single-ended iterators, but obviously for `min` only:
- `BTreeSet::difference`
- `BTreeSet::intersection`
- `BTreeSet::symmetric_difference`
- `BTreeSet::union`

Did not do this in iterators created by `into_iter` to preserve drop order, as outlined in #62316.

Did not do this in iterators created by `drain_filter`, possibly to preserve drop order, possibly to preserve predicate invocation, mostly to not have to think about it too hard (I guess maybe it wouldn't be a change for `min`, which is the only shortcut possible in this single-ended iterator).
2020-06-26 13:57:35 -07:00
Manish Goregaokar
92af945256
Rollup merge of #73579 - RalfJung:doc-missing-links, r=shepmaster
add missing doc links

The doc comments contain ``[`size_of_val`]`` but the link target was missing.
2020-06-26 13:57:33 -07:00
Manish Goregaokar
23b0776a59
Rollup merge of #73529 - pickfire:liballoc-specfromelem-i8, r=cuviper
Add liballoc impl SpecFromElem for i8

Speedup vec![1_i8; N] for non-zero element.

Before
test do_bench_from_elem_i8        ... bench:         130 ns/iter (+/- 7) = 61 MB/s
test do_bench_from_elem_u8        ... bench:         121 ns/iter (+/- 4) = 66 MB/s
After
test do_bench_from_elem_i8        ... bench:         123 ns/iter (+/- 7) = 65 MB/s
test do_bench_from_elem_u8        ... bench:         121 ns/iter (+/- 5) = 66 MB/s

No speed difference if element is already zero.

```rust
#[bench]
fn do_bench_from_elem_i8(b: &mut Bencher) {
    b.bytes = 8 as u64;
    b.iter(|| {
        let dst = ve::vec![10_i8; 100];
        assert_eq!(dst.len(), 100);
        assert!(dst.iter().all(|x| *x == 10));
    })
}
```

As suggested by @cuviper
https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/SpecForElem.20for.20other.20integers

r? @cuviper
CC @joshtriplett

Edit: Wow, I just realized both reviewers are Josh.
2020-06-26 13:57:31 -07:00
Manish Goregaokar
f13d09abe1
Rollup merge of #73485 - estebank:dedup-preds, r=nikomatsakis
Perform obligation deduplication to avoid buggy `ExistentialMismatch`

Address #59326.
2020-06-26 13:57:29 -07:00
Manish Goregaokar
38cbf158b8
Rollup merge of #72937 - AdrianCX:master, r=nikomatsakis
Fortanix SGX target libunwind build process changes

Ticket: https://github.com/fortanix/rust-sgx/issues/174
LLVM related changes (merged): https://github.com/rust-lang/llvm-project/pull/57

Description: libunwind changes needed to run code in sgx environment via rust-sgx.

Target that uses this in rust: x86_64-fortanix-unknown-sgx.

Without this change, rust std for this toolchain is forced to use a precompiled library loaded via environment variable.

With this change we act the same as musl target.
2020-06-26 13:57:26 -07:00
Manish Goregaokar
8adc781a1f
Rollup merge of #72771 - jyn514:rustdoc, r=Manishearth
Warn if linking to a private item

Closes https://github.com/rust-lang/rust/issues/72769

r? @GuillaumeGomez
2020-06-26 13:57:24 -07:00