Commit Graph

122582 Commits

Author SHA1 Message Date
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
Alexis Bourget
8e8c54aa3a Added the parapgrah to path::Path::is_file too 2020-06-27 22:59:47 +02: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
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
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
Aaron Hill
fa6a61c689 Explain move errors that occur due to method calls involving self
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-26 16:28:09 -04:00
Aaron Hill
36ac08e264 Make fn_arg_names return Ident instead of symbol
Also, implement this query for the local crate, not just foreign crates.
2020-06-26 15:46:22 -04:00
Vadim Petrochenkov
7b2064f4f9 rustc_lexer: Simplify shebang parsing once more 2020-06-26 19:52:19 +03:00
Eric Huss
6bcbc426c9 Update mdbook. 2020-06-26 07:47:19 -07:00
Eric Huss
6654c5852f Remove mdbook-linkcheck. 2020-06-26 07:45:28 -07:00
bors
7750c3d46b Auto merge of #73513 - oli-obk:const_binop_overflow, r=estebank
Show the values and computation that would overflow a const evaluation or propagation

Fixes #71134

In contrast to the example in the issue it doesn't use individual spans for each operand. The effort required to implement that is quite high compared to the little (if at all) benefit it would bring to diagnostics.

cc @shepmaster

The way this is implemented it is also fairly easy to do the same for overflow panics at runtime, but that should be done in a separate PR since it may have runtime performance implications.
2020-06-26 14:08:46 +00:00
KRAAI, MATTHEW [VISUS]
cb152eae2f Remove blank line 2020-06-26 06:22:35 -07:00
Joshua Nelson
67423821aa Fix debug messages 2020-06-26 08:24:45 -04:00
Joshua Nelson
20552c811a Generate docs for links to private items when passed --document-private
- Pass around document_private a lot more
- Add tests
  + Add tests for intra-doc links to private items
  + Add ignored tests for warnings in reference links
2020-06-26 07:23:39 -04:00
Joshua Nelson
6f8bec9399 Warn if linking to a private item 2020-06-26 07:14:02 -04:00
David Wood
a6417b9c38 improper_ctypes: fix remaining Reveal:All
This commit replaces the remaining uses of `ParamEnv::reveal_all` with
`LateContext`'s `param_env` (normally `Reveal::UserFacing`).

Signed-off-by: David Wood <david@davidtw.co>
2020-06-26 11:21:31 +01:00
bors
9672b5e95c Auto merge of #73756 - Manishearth:rollup-aehswb2, r=Manishearth
Rollup of 13 pull requests

Successful merges:

 - #72620 (Omit DW_AT_linkage_name when it is the same as DW_AT_name)
 - #72967 (Don't move cursor in search box when using arrows to navigate results)
 - #73102 (proc_macro: Stop flattening groups with dummy spans)
 - #73297 (Support configurable deny-warnings for all in-tree crates.)
 - #73507 (Cleanup MinGW LLVM linkage workaround)
 - #73588 (Fix handling of reserved registers for ARM inline asm)
 - #73597 (Record span of `const` kw in GenericParamKind)
 - #73629 (Make AssocOp Copy)
 - #73681 (Update Chalk to 0.14)
 - #73707 (Fix links in `SliceIndex` documentation)
 - #73719 (emitter: column width defaults to 140)
 - #73729 (disable collectionbenches for android)
 - #73748 (Add code block to code in documentation of `List::rebase_onto`)

Failed merges:

r? @ghost
2020-06-26 10:11:43 +00:00
Oliver Scherer
819cde5dab Show the values and computation that would overflow a const evaluation or propagation 2020-06-26 10:08:52 +02:00
Stein Somers
42062a5802 Shortcuts for min/max on ordinary BTreeMap/BTreeSet iterators 2020-06-26 10:05:21 +02:00
Manish Goregaokar
a7eee3cca0 Rollup merge of #73748 - jyn514:doc-fix, r=Manishearth
Add code block to code in documentation of `List::rebase_onto`

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

@bors rollup=always
2020-06-26 00:39:19 -07:00
Manish Goregaokar
91a638d794 Rollup merge of #73729 - nellshamrell:disable-collectionsbenches-android, r=sfackler
disable collectionbenches for android

Fixes #73535

Signed-off-by: Nell Shamrell <nellshamrell@gmail.com>
2020-06-26 00:39:17 -07:00
Manish Goregaokar
97ccd97068 Rollup merge of #73719 - davidtwco:issue-72509-emitter-column-width, r=estebank
emitter: column width defaults to 140

Fixes #72509.

This PR modifies the column width computation in the emitter when `termize::dimensions` returns `None` so that it uses the default value of 140 (which is used in UI testing currently) instead of `usize::MAX` which just ends up causing overflows in later computations.

I also tried changing the computations which used `column_width` with their saturating equivalent, but the output appeared the same - so I decided to go with this approach because I feel like it's less likely to accidentally re-introduce an ICE like this in future (e.g. adding a non-saturating operation on `column_width` in future).

I haven't added a test because I couldn't come up with a MCVE. I stumbled upon this running rustc-perf with the `piston-image` benchmark (running in tmux; it only happened with stage two builds only; and only when running through Cargo, not rustc directly with the same flags). In addition, given the nature of the issue, I don't know that we *could* write a UI test for this. Open to suggestions here though.

r? @estebank
2020-06-26 00:39:15 -07:00
Manish Goregaokar
6061752853 Rollup merge of #73707 - LeSeulArtichaut:patch-3, r=kennytm
Fix links in `SliceIndex` documentation

See [this doc](https://doc.rust-lang.org/nightly/std/slice/trait.SliceIndex.html#tymethod.get_unchecked) whose links aren't active because of this missing newline.
2020-06-26 00:39:14 -07:00
Manish Goregaokar
1755e3b05c Rollup merge of #73681 - jackh726:chalk-0.14, r=nikomatsakis
Update Chalk to 0.14

Not a ton here. Notable changes:
- Update to `0.14.0`
  - New dependency on `tracing`, in `librustc_traits` only
  - `FnAbi` from Chalk is `rustc_target::spec::abi::Abi`
  - `Dynamic` actually lowers region
  - Actually lower closures, with some tests. This doesn't 100% work, but can't confirm that's *only* because of closure lowering.
- Use `FxIndexSet` instead of `FxHashSet` in `chalk_fulfill`, which seems to have fixed the non-deterministic test error ordering. Guess we'll see on CI
- Actually implement `opaque_ty_data`, though I don't think this is sufficient for tests for them (I haven't added any)
- Uncomment some of the chalk tests that now work

r? @nikomatsakis
2020-06-26 00:39:12 -07:00
Manish Goregaokar
3d7521d31d Rollup merge of #73629 - flip1995:assoc_op_copy_clone, r=Manishearth
Make AssocOp Copy

Found that this enum is not `Copy` while reviewing this Clippy PR: https://github.com/rust-lang/rust-clippy/pull/5727#discussion_r443761621

There shouldn't be a reason why this should not be `Copy`.
2020-06-26 00:39:10 -07:00
Manish Goregaokar
7f6dfb451a Rollup merge of #73597 - ayazhafiz:i/const-span, r=ecstatic-morse
Record span of `const` kw in GenericParamKind

Context: this is needed for a fix of https://github.com/rust-lang/rustfmt/issues/4263,
which currently records the span of a const generic param incorrectly
because the location of the `const` kw is not known.

I am not sure how to add tests for this; any guidance in how to do so
would be appreciated 🙂
2020-06-26 00:39:08 -07:00
Manish Goregaokar
81d2d3cf35 Rollup merge of #73588 - Amanieu:thumb-fp, r=nagisa
Fix handling of reserved registers for ARM inline asm

`r6` is now disallowed as an operand since LLVM sometimes uses it as a base pointer.

The check against using the frame pointer as an operand now takes the platform into account and will block either `r7` or `r11` as appropriate.

Fixes #73450

cc @cbiffle
2020-06-26 00:39:06 -07:00
Manish Goregaokar
25671fa0fc Rollup merge of #73507 - mati865:cleanup-mingw-llvm-linkage, r=matthewjasper
Cleanup MinGW LLVM linkage workaround

LLVM correctly passes `uuid` for a long time, GCC unwinding library (either static or dynamic) comes from [windows_gnu_base](06e47688bf/src/librustc_target/spec/windows_gnu_base.rs).
2020-06-26 00:39:04 -07:00
Manish Goregaokar
10d655bb47 Rollup merge of #73297 - ehuss:tool-warnings, r=Mark-Simulacrum
Support configurable deny-warnings for all in-tree crates.

This removes the hard-coded `deny(warnings)` on all in-tree tools, and allows it to be configured from the config.  This is just a personal preference, as I find `deny(warnings)` frustrating during development or doing small tests.

This also fixes some regressions in terms of warning handling.  Warnings used to be dependent on `SourceType`, but in #64316 it was changed to be based on `Mode`. This means tools like rustdoc no longer used the same settings as the rest of the tree. It also made `SourceType` useless since the only thing it was used for was warnings. I think it would be better for everything in the tree to use the same settings.

Fixes #64523
2020-06-26 00:39:01 -07:00
Manish Goregaokar
2aee60897f Rollup merge of #73102 - petrochenkov:flatgroup, r=Aaron1011
proc_macro: Stop flattening groups with dummy spans

Reduce the scope of the hack described in https://github.com/rust-lang/rust/issues/72545#issuecomment-640276791.

We still pass AST fragments to attribute and derive macros as single nonterminal tokens rather than as tokens streams, but now use a precise flag instead of the span-based heuristic that could do lead to incorrect behavior in unrelated cases.

https://github.com/rust-lang/rust/pull/73345 attempts to fully resolve this issue, but there are some compatibility issues to be addressed.
2020-06-26 00:39:00 -07:00
Manish Goregaokar
a25fbb9710 Rollup merge of #72967 - integer32llc:prevent-default-arrows, r=kinnison
Don't move cursor in search box when using arrows to navigate results

## What happens

- Go to https://doc.rust-lang.org/stable/std/index.html
- Press 's' to focus the search box
- Type a query like 'test'
- Press the down arrow one or more times to change which search result is highlighted
- Press the up arrow once to go up one search result
- Notice the cursor in the search box is now at the beginning of your query, such that if you now typed 'a' the search box would contain 'atest', when it would be expected that the cursor would have remained where it was and if you typed 'a' at this point it would result in 'testa'
- Press the down arrow once to go down one search result
- Now notice the cursor is at the end of your query again

## What I expected

I expected that changing which search result was highlighted using the up and down arrows would have no effect on where the cursor was in the search box.

## The fix

This PR prevents the default action of the up and down arrows when the custom keydown events are happening during a search.
2020-06-26 00:38:58 -07:00
Manish Goregaokar
14dc103a85 Rollup merge of #72620 - tmiasko:linkage-name, r=eddyb
Omit DW_AT_linkage_name when it is the same as DW_AT_name

The DWARF standard suggests that it might be useful to include
`DW_AT_linkage_name` when it is *distinct* from the identifier name.

Fixes #46487.
Fixes #59422.
2020-06-26 00:38:56 -07:00