Commit Graph

122652 Commits

Author SHA1 Message Date
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
bors
14e65d5e95 Auto merge of #73743 - eddyb:lint-on-demand-typeck-tables, r=Manishearth
rustc_lint: only query `typeck_tables_of` when a lint needs it.

This was prompted by @jyn514 running into a situation where `rustdoc` wants to run the `unused_doc` lint without triggering type-checking (as an alternative to the "everybody loops" approach - type-checking may error/ICE because of the `rustdoc` feature of allowing multi-platform docs where the actual bodies of functions may refer to APIs for different platforms).

There was also this comment in the source:
```rust
// FIXME: Make this lazy to avoid running the TypeckTables query?
```

The main effect of this is for lint authors, who now need to use `cx.tables()` to get `&TypeckTables`, as opposed to having them always available in `cx.tables`.

r? @oli-obk or @Manishearth
2020-06-26 06:11:01 +00:00
Eric Huss
75983e137e Support configurable deny-warnings for all in-tree crates. 2020-06-25 21:17:21 -07:00
Joshua Nelson
d279b3c260 Add code block to code in documentation of List::rebase_onto 2020-06-25 22:28:03 -04:00
bors
e093b65250 Auto merge of #73746 - Manishearth:rollup-80jnynm, r=Manishearth
Rollup of 14 pull requests

Successful merges:

 - #72617 (Add a fast path for `std:🧵:panicking`.)
 - #72738 (Self contained linking option)
 - #72770 (Implement mixed script confusable lint.)
 - #73418 (Add unstable `core::mem::variant_count` intrinsic)
 - #73460 (Emit line info for generator variants)
 - #73534 (Provide suggestions for some moved value errors)
 - #73538 (make commented examples use valid syntax, and be more consistent )
 - #73581 (Create 0766 error code)
 - #73619 (Document the mod keyword)
 - #73621 (Document the mut keyword)
 - #73648 (Document the return keyword)
 - #73673 (Fix ptr doc warnings.)
 - #73674 (Tweak binop errors)
 - #73687 (Clean up E0701 explanation)

Failed merges:

 - #73708 (Explain move errors that occur due to method calls involving `self` (take two))

r? @ghost
2020-06-26 02:16:07 +00:00
Josh Stone
49f6166ef7 Prepare for LLVM 11 2020-06-25 18:52:41 -07:00
Manish Goregaokar
8c5d794b52
Rollup merge of #73687 - GuillaumeGomez:cleanup-e0701, r=Dylan-DPC
Clean up E0701 explanation

r? @Dylan-DPC
2020-06-25 18:00:25 -07:00
Manish Goregaokar
7fb7765cda
Rollup merge of #73674 - estebank:op-trait-bound-suggestion, r=davidtwco
Tweak binop errors

* Suggest potentially missing binop trait bound (fix #73416)
* Use structured suggestion for dereference in binop
2020-06-25 18:00:23 -07:00
Manish Goregaokar
91f8766cea
Rollup merge of #73673 - ehuss:fix-ptr-docs, r=oli-obk
Fix ptr doc warnings.

#73398 added some stray backtick lines which cause warnings when the docs are built.
2020-06-25 18:00:22 -07:00
Manish Goregaokar
131e25401c
Rollup merge of #73648 - poliorcetics:return-keyword, r=joshtriplett
Document the return keyword

Partial fix of #34601.

This documents the `return` keyword with two short example to explain it is not needed for the last expression in a function and a long example to show its use when interrupting a function execution early.

I did not put a link to the reference since the only link I found was https://doc.rust-lang.org/stable/reference/expressions/return-expr.html#return-expressions.

@rustbot modify labels: T-doc,C-enhancement
2020-06-25 18:00:20 -07:00
Manish Goregaokar
f91330abfa
Rollup merge of #73621 - poliorcetics:mut-keyword, r=steveklabnik
Document the mut keyword

Partial fix for #34601.

Documentation for the `mut` keyword. I think it's okay for it to be quite short, this is not the book not the reference, but if you find something is missing, do not hesitate to tell me.
2020-06-25 18:00:18 -07:00
Manish Goregaokar
01a293a838
Rollup merge of #73619 - poliorcetics:mod-keyword, r=steveklabnik
Document the mod keyword

Partial fix for #34601 .

Documentation for the `mod` keyword.
2020-06-25 18:00:16 -07:00
Manish Goregaokar
0d03456163
Rollup merge of #73581 - GuillaumeGomez:add-0766, r=varkor
Create 0766 error code
2020-06-25 18:00:14 -07:00
Manish Goregaokar
0d5cfb44ad
Rollup merge of #73538 - tshepang:fix-example, r=nikomatsakis
make commented examples use valid syntax, and be more consistent
2020-06-25 18:00:12 -07:00
Manish Goregaokar
4a245aeec5
Rollup merge of #73534 - estebank:borrowck-suggestions, r=matthewjasper
Provide suggestions for some moved value errors

When encountering an used moved value where the previous move happened
in a `match` or `if let` pattern, suggest using `ref`. Fix #63988.

When encountering a `&mut` value that is used in multiple iterations of
a loop, suggest reborrowing it with `&mut *`. Fix #62112.
2020-06-25 18:00:10 -07:00
Manish Goregaokar
3f5b8c800e
Rollup merge of #73460 - tmandry:variant-lineinfo, r=oli-obk
Emit line info for generator variants

Debuggers should be able to read a generator / async fn state machine and show the line it's suspended at. Eventually, this could grow into an "async stack trace" feature of sorts. While no debugger support this for Rust today, this PR adds the debuginfo necessary for that support to exist.

[This gist](https://gist.github.com/tmandry/6d7004fa008684f76809208847459f9b) shows the resulting debuginfo for a simple example. Here's a snippet:

```
0x00000986:           DW_TAG_variant
                        DW_AT_discr_value       (0x03)

0x00000988:             DW_TAG_member
                          DW_AT_name    ("3")
                          DW_AT_type    (0x000009bc "Suspend0")
                          DW_AT_decl_file       ("/home/tmandry/code/playground/generator-simple.rs")
                          DW_AT_decl_line       (6)
                          DW_AT_alignment       (8)
                          DW_AT_data_member_location    (0x00)
```

The file and line have been added here. The line currently points to the beginning of the statement containing the yield (or await), because that's what the MIR source info points to for the yield terminator. (We may want to point to the yield or await line specifically, but that can be done independently of this change.)

Debuggers don't know how to use this kind of info yet. However, we're hoping to experiment with adding such support to Fuchsia's debugger. It would be exciting if someone were interested in adding similar to support to gdb/lldb.

r? @oli-obk
cc @eddyb @jonas-schievink

Part of #73524.
2020-06-25 18:00:08 -07:00
Manish Goregaokar
c50d9816c7
Rollup merge of #73418 - doctorn:variants-intrinsic, r=kennytm
Add unstable `core::mem::variant_count` intrinsic

Adds a new `const fn` intrinsic which can be used to determine the number of variants in an `enum`.

I've shown this to a couple of people and they invariably ask 'why on earth?', but there's actually a very neat use case:

At the moment, if you want to create an opaque array type that's indexed by an `enum` with one element for each variant, you either have to hard-code the number of variants, add a `LENGTH` variant or use a `Vec`, none of which are suitable in general (number of variants could change; pattern matching `LENGTH` becomes frustrating; might not have `alloc`). By including this intrinsic, it becomes possible to write the following:

```rust
#[derive(Copy, Clone)]
enum OpaqueIndex {
    A = 0,
    B,
    C,
}

struct OpaqueVec<T>(Box<[T; std::mem::num_variants::<OpaqueIndex>()]>);

impl<T> std::ops::Index<OpaqueIndex> for OpaqueVec<T> {
    type Output = T;

    fn index(&self, idx: OpaqueIndex) -> &Self::Output {
        &self.0[idx as usize]
    }
}
```

(We even have a use cases for this in `rustc` and I plan to use it to re-implement the lang-items table.)
2020-06-25 18:00:07 -07:00
Manish Goregaokar
23c9ac6b73
Rollup merge of #72770 - crlf0710:mixed_script_confusable, r=Manishearth
Implement mixed script confusable lint.

This implements the mixed script confusable lint defined in RFC 2457.
This is blocked on #72069 and https://github.com/unicode-rs/unicode-security/pull/13, and will need a Cargo.toml version bump after those are resolved.

The lint message warning is sub-optimal for now. We'll need a mechanism to properly output  `AugmentScriptSet` to screen, this is to be added in `unicode-security` crate.

r? @Manishearth
2020-06-25 18:00:05 -07:00
Manish Goregaokar
9275ff7b21
Rollup merge of #72738 - mati865:self-contained-option, r=petrochenkov
Self contained linking option

With objects moved to self-contained directory by https://github.com/rust-lang/rust/pull/72999 we can now add option to control whether to use self-contained on native linkage mode.
2020-06-25 18:00:03 -07:00
Manish Goregaokar
5158b3c998
Rollup merge of #72617 - eduardosm:panicking, r=Amanieu
Add a fast path for `std:🧵:panicking`.

This is done by adding a global atomic variable (non-TLS) that counts how many threads are panicking. In order to check if the current thread is panicking, this variable is read and, if it is zero, no thread (including the one where `panicking` is being called) is panicking and `panicking` can return `false` immediately without needing to access TLS. If the global counter is not zero, the local counter is accessed from TLS to check if the current thread is panicking.
2020-06-25 18:00:02 -07:00
Eduard-Mihai Burtescu
0cf4b9de68 rustc_lint: only query typeck_tables_of when a lint needs it. 2020-06-26 02:56:23 +03:00
Nell Shamrell
5e28eb580f Adds a clearer message for when the async keyword is missing from a function
Signed-off-by: Nell Shamrell <nellshamrell@gmail.com>
2020-06-25 16:01:45 -07:00
bors
1033351a51 Auto merge of #71858 - petrochenkov:env, r=Mark-Simulacrum
Print environment variables accessed by rustc as special comments into depinfo files

So cargo (and perhaps others tools) can use them for linting (at least) or for actually rebuilding crates on env var changes.

---
I've recently observed one more forgotten environment variable in a build script 8a77d1ca3f and thought it would be nice to provide the list of accessed variables to cargo automatically as a part of depinfo.

Unsurprisingly, I wasn't the first who had this idea - cc https://github.com/rust-lang/rust/issues/70517 https://github.com/rust-lang/rust/issues/40364 https://github.com/rust-lang/rust/issues/44074.

Also, there are dozens of uses of `(option_)env!` in rustc repo and, like, half of them are not registered in build scripts.

---
Description:
- depinfo files are extended with special comments containing info about environment variables accessed during compilation.
- Comment format for environment variables with successfully retrieved value: `# env-dep:KEY=VALUE`.
- Comment format for environment variables without successfully retrieved value: `# env-dep:KEY` (can happen with `option_env!`).
- `KEY` and `VALUE` are minimally escaped (`\n`, `\r`, `\\`) so they don't break makefile comments and can be unescaped by anything that can unescape standard `escape_default` and friends.

FCP report: https://github.com/rust-lang/rust/pull/71858#issuecomment-633071488

Closes https://github.com/rust-lang/rust/issues/70517
Closes https://github.com/rust-lang/rust/issues/40364
Closes https://github.com/rust-lang/rust/issues/44074
A new issue in the cargo repo will be needed to track the cargo side of this feature.

r? @ehuss
2020-06-25 22:52:59 +00:00
Gary Guo
f9af59def2 Remove irrelevant comment 2020-06-25 23:08:58 +01:00
Vadim Petrochenkov
77b0ed70b3 proc_macro: Stop flattening groups with dummy spans 2020-06-26 00:39:31 +03:00
Nell Shamrell
5c88b5172f add exception for liballoc benches to tidy
Signed-off-by: Nell Shamrell <nellshamrell@gmail.com>
2020-06-25 13:57:29 -07:00
Nell Shamrell
f13d89eb2e disable collectionbenches for android
Signed-off-by: Nell Shamrell <nellshamrell@gmail.com>
2020-06-25 11:14:16 -07:00
Charles Lew
25e864e198 Implement mixed script confusable lint. 2020-06-26 01:39:31 +08:00
bors
50fc24d8a1 Auto merge of #72717 - poliorcetics:try-from-int-to-nzint, r=dtolnay
Add TryFrom<{int}> for NonZero{int}

Adds `TryFrom<{int}> for NonZero{int}`.

It uses the existing `NonZero{int}::new()` and `Option::ok_or()` functions, meaning the checks are not repeated.

I also added tests, I tried to follow the convention I saw in the test file.

I also used `#[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")]`, but I have no idea if the feature/version are correctly named or even correct.
2020-06-25 17:37:02 +00:00
Oliver Scherer
1a355a21eb Document some invariants correctly/more 2020-06-25 19:08:06 +02:00
Andrew Paverd
8b368dbcbb Bootstrap: fallback detection of Windows 2020-06-25 15:45:24 +01:00
bors
9f3c96b869 Auto merge of #73711 - Dylan-DPC:rollup-kzx15of, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #72700 (`improper_ctypes_definitions` lint)
 - #73516 (Allow dynamic linking for iOS/tvOS targets)
 - #73616 (Liballoc minor hash import tweak)
 - #73634 (Add UI test for issue 73592)
 - #73688 (Document the self keyword)
 - #73698 (Add procedure for prioritization notifications on Zulip)

Failed merges:

r? @ghost
2020-06-25 12:43:50 +00:00
Guillaume Gomez
33302fa7d2 Update UI test 2020-06-25 13:28:45 +02:00
Guillaume Gomez
eb6d9a49a8 Add E0766 error for unterminated double quote byte string 2020-06-25 13:28:45 +02:00
David Wood
11a3584de4
emitter: column width defaults to 140
This commit 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. This is hard
to test but appears to produce the same output as using saturating
functions instead.

Signed-off-by: David Wood <david@davidtw.co>
2020-06-25 11:56:15 +01:00
Adrian Cruceru
db6fa2fff5 Remove deprecated comments 2020-06-25 12:30:27 +02:00
Adrian Cruceru
343a9212b0 Fix comments 2020-06-25 12:01:02 +02:00
Alexis Bourget
5232e2025f Document the super keyword 2020-06-25 11:40:07 +02:00
Mateusz Mikuła
f27dcd7ee0 Rename remaining fallback to self_contained 2020-06-25 11:32:27 +02:00