]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoImprove caching during trait evaluation
Aaron Hill [Wed, 7 Jul 2021 15:56:26 +0000 (10:56 -0500)]
Improve caching during trait evaluation

Previously, we would 'forget' that we had `'static` regions in some
place during trait evaluation. This lead to us producing
`EvaluatedToOkModuloRegions` when we could have produced
`EvaluatedToOk`, causing us to perform unnecessary work.

This PR preserves `'static` regions when we canonicalize a predicate for
`evaluate_obligation`, and when we 'freshen' a predicate during trait
evaluation. Thie ensures that evaluating a predicate containing
`'static` regions can produce `EvaluatedToOk` (assuming that we
don't end up introducing any region dependencies during evaluation).

Building off of this improved caching, we use
`predicate_must_hold_considering_regions` during fulfillment of
projection predicates to see if we can skip performing additional work.
We already do this for trait predicates, but doing this for projection
predicates lead to mixed performance results without the above caching
improvements.

2 years agoAuto merge of #87351 - ehuss:rollup-pga85az, r=ehuss
bors [Wed, 21 Jul 2021 19:50:10 +0000 (19:50 +0000)]
Auto merge of #87351 - ehuss:rollup-pga85az, r=ehuss

Rollup of 5 pull requests

Successful merges:

 - #81864 (docs: GlobalAlloc: completely replace example with one that works)
 - #87024 (rustdoc: show count of item contents when hidden)
 - #87278 (:arrow_up: rust-analyzer)
 - #87326 (Update cargo)
 - #87346 (Rename force-warns to force-warn)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoFix formatting in tidy exception list
Igor Matuszewski [Wed, 21 Jul 2021 19:08:39 +0000 (21:08 +0200)]
Fix formatting in tidy exception list

2 years agoClean up now unused deps from the exceptions list
Igor Matuszewski [Wed, 21 Jul 2021 18:37:50 +0000 (20:37 +0200)]
Clean up now unused deps from the exceptions list

2 years agoRemove cargo workspace to build rustdoc-gui test crates because of cargo config not...
Guillaume Gomez [Wed, 21 Jul 2021 15:55:44 +0000 (17:55 +0200)]
Remove cargo workspace to build rustdoc-gui test crates because of cargo config not being applied

2 years agoAdd test to ensure tables are not inside items summary
Guillaume Gomez [Mon, 19 Jul 2021 10:02:41 +0000 (12:02 +0200)]
Add test to ensure tables are not inside items summary

2 years agoDon't render <table> in items' summary
Guillaume Gomez [Mon, 19 Jul 2021 09:50:14 +0000 (11:50 +0200)]
Don't render <table> in items' summary

2 years agoRun rustfmt
Ian Jackson [Tue, 20 Jul 2021 15:12:11 +0000 (16:12 +0100)]
Run rustfmt

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2 years agorustdoc: Restore --default-theme, etc, by restoring varname escaping
Ian Jackson [Mon, 19 Jul 2021 16:13:22 +0000 (17:13 +0100)]
rustdoc: Restore --default-theme, etc, by restoring varname escaping

In #86157

    cd0f93193c84ddc6698f9b65909da71c084dcb74
    Use Tera templates for rustdoc.

dropped the following transformation from the keys of the default
settings element's `data-` attribute names:

    .map(|(k, v)| format!(r#" data-{}="{}""#, k.replace('-', "_"), Escape(v)))

The `Escape` part is indeed no longer needed, because Tera does that
for us.  But the massaging of `-` to `_` is needed, for the (bizarre)
reasons explained in the new comments.

I have tested that the default theme function works again for me.  I
have also verified that passing

    --default-theme="zork&"

escapes the value in the HTML.

Closes #87263.

CC: Jacob Hoffman-Andrews <github@hoffman-andrews.com>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2 years agoRollup merge of #87346 - rylev:rename-force-warn, r=nikomatsakis
Eric Huss [Wed, 21 Jul 2021 17:12:30 +0000 (10:12 -0700)]
Rollup merge of #87346 - rylev:rename-force-warn, r=nikomatsakis

Rename force-warns to force-warn

The renames the `--force-warns` option to `--force-warn`. This mirrors other lint options like `--warn` and `--deny` which are in the singular.

r? `@nikomatsakis`

cc `@ehuss` - this option is being used by Cargo. How do we make sure the transition to using the new name is as smooth as possible?

2 years agoRollup merge of #87326 - ehuss:update-cargo, r=ehuss
Eric Huss [Wed, 21 Jul 2021 17:12:29 +0000 (10:12 -0700)]
Rollup merge of #87326 - ehuss:update-cargo, r=ehuss

Update cargo

6 commits in 27277d966b3cfa454d6dea7f724cb961c036251c..4e143fd131e0c16cefd008456e974236ca54e62e
2021-07-16 00:50:39 +0000 to 2021-07-20 21:55:45 +0000
- Named profile updates (rust-lang/cargo#9685)
- Inform build scripts of rustc compiler context (rust-lang/cargo#9601)
- Factor version preferences into a struct (rust-lang/cargo#9703)
- docs: Fix sentence & update link for GitLab CI docs (rust-lang/cargo#9704)
- Deduplicate compiler diagnostics. (rust-lang/cargo#9675)
- Re-enable future-incompatible tests. (rust-lang/cargo#9698)

2 years agoRollup merge of #87278 - lnicola:rust-analyzer-2021-07-19, r=lnicola
Eric Huss [Wed, 21 Jul 2021 17:12:28 +0000 (10:12 -0700)]
Rollup merge of #87278 - lnicola:rust-analyzer-2021-07-19, r=lnicola

:arrow_up: rust-analyzer

2 years agoRollup merge of #87024 - weihanglo:issue-85494, r=Manishearth
Eric Huss [Wed, 21 Jul 2021 17:12:27 +0000 (10:12 -0700)]
Rollup merge of #87024 - weihanglo:issue-85494, r=Manishearth

rustdoc: show count of item contents when hidden

Resolves #85494

2 years agoRollup merge of #81864 - ijackson:globalalloc-example, r=Amanieu
Eric Huss [Wed, 21 Jul 2021 17:12:26 +0000 (10:12 -0700)]
Rollup merge of #81864 - ijackson:globalalloc-example, r=Amanieu

docs: GlobalAlloc: completely replace example with one that works

Since this is an example, this could really do with some review from someone familiar with unsafe stuff!

I made the example no longer `no_run` since it works for me.

Fixes #81847

2 years agoAuto merge of #87347 - GuillaumeGomez:rollup-ke92xxc, r=GuillaumeGomez
bors [Wed, 21 Jul 2021 13:54:22 +0000 (13:54 +0000)]
Auto merge of #87347 - GuillaumeGomez:rollup-ke92xxc, r=GuillaumeGomez

Rollup of 9 pull requests

Successful merges:

 - #87187 (Fix NixOS detection)
 - #87206 (avoid temporary vectors/reuse iterators)
 - #87230 (Fix docblock <table> overflow)
 - #87273 (Recognize bounds on impls as const bounds)
 - #87279 (Add comments explaining the unix command-line argument support.)
 - #87301 (Fix typo in compile.rs)
 - #87311 (Get back the more precise suggestion spans of old regionck)
 - #87321 (Add long explanation for E0722)
 - #87342 (Add long explanation for E0757)

Failed merges:

 - #87270 (Don't display <table> in item summary)

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #87342 - midgleyc:add-E0757-long, r=GuillaumeGomez
Guillaume Gomez [Wed, 21 Jul 2021 13:52:53 +0000 (15:52 +0200)]
Rollup merge of #87342 - midgleyc:add-E0757-long, r=GuillaumeGomez

Add long explanation for E0757

Helps with #61137

2 years agoRollup merge of #87321 - midgleyc:add-E0722-long, r=GuillaumeGomez
Guillaume Gomez [Wed, 21 Jul 2021 13:52:52 +0000 (15:52 +0200)]
Rollup merge of #87321 - midgleyc:add-E0722-long, r=GuillaumeGomez

Add long explanation for E0722

Helps with #61137

2 years agoRollup merge of #87311 - oli-obk:nll_suggestion_span, r=estebank
Guillaume Gomez [Wed, 21 Jul 2021 13:52:51 +0000 (15:52 +0200)]
Rollup merge of #87311 - oli-obk:nll_suggestion_span, r=estebank

Get back the more precise suggestion spans of old regionck

I noticed that when you turn on nll, the structured suggestion replaces a snippet instead of appending a snippet. It seems clearer to the user to only highlight the newly added characters instead of the entire `impl Trait` (and old regionck already does it this way).

r? ``@estebank``

2 years agoRollup merge of #87301 - chinmaydd:chinmaydd-patch-1-1, r=jyn514
Guillaume Gomez [Wed, 21 Jul 2021 13:52:50 +0000 (15:52 +0200)]
Rollup merge of #87301 - chinmaydd:chinmaydd-patch-1-1, r=jyn514

Fix typo in compile.rs

2 years agoRollup merge of #87279 - sunfishcode:document-unix-argv, r=RalfJung
Guillaume Gomez [Wed, 21 Jul 2021 13:52:49 +0000 (15:52 +0200)]
Rollup merge of #87279 - sunfishcode:document-unix-argv, r=RalfJung

Add comments explaining the unix command-line argument support.

Following up on #87236, add comments to the unix command-line argument
support explaining that the code doesn't mutate the system-provided
argc/argv, and that this is why the code doesn't need a lock or special
memory ordering.

r? ```@RalfJung```

2 years agoRollup merge of #87273 - fee1-dead:impl-const-impl-bounds, r=oli-obk
Guillaume Gomez [Wed, 21 Jul 2021 13:52:47 +0000 (15:52 +0200)]
Rollup merge of #87273 - fee1-dead:impl-const-impl-bounds, r=oli-obk

Recognize bounds on impls as const bounds

r? ```@oli-obk```

2 years agoRollup merge of #87230 - GuillaumeGomez:docblock-table-overflow, r=notriddle
Guillaume Gomez [Wed, 21 Jul 2021 13:52:46 +0000 (15:52 +0200)]
Rollup merge of #87230 - GuillaumeGomez:docblock-table-overflow, r=notriddle

Fix docblock <table> overflow

Before:

![Screenshot from 2021-07-18 00-05-23](https://user-images.githubusercontent.com/3050060/126050272-ce08bc5f-74ff-4135-bc12-d708d87470cc.png)

After:

![Screenshot from 2021-07-18 00-03-55](https://user-images.githubusercontent.com/3050060/126050273-42f41b4d-ad57-4a87-91de-18e63f8504ec.png)

cc `@SergioBenitez`

r? `@notriddle`

2 years agoRollup merge of #87206 - matthiaskrgr:clippy_collect, r=davidtwco
Guillaume Gomez [Wed, 21 Jul 2021 13:52:45 +0000 (15:52 +0200)]
Rollup merge of #87206 - matthiaskrgr:clippy_collect, r=davidtwco

avoid temporary vectors/reuse iterators

Avoid collecting an interator just to re-iterate immediately.
Rather reuse the previous iterator. (clippy::needless_collect)

2 years agoRollup merge of #87187 - oxalica:fix-nixos-detect, r=nagisa
Guillaume Gomez [Wed, 21 Jul 2021 13:52:44 +0000 (15:52 +0200)]
Rollup merge of #87187 - oxalica:fix-nixos-detect, r=nagisa

Fix NixOS detection

Use `/etc/os-release` instead of `/etc/NIXOS` for detection.
The latter one does not exist on NixOS when using tmpfs as root.

2 years agoRename force-warns to force-warn
Ryan Levick [Wed, 21 Jul 2021 13:40:52 +0000 (15:40 +0200)]
Rename force-warns to force-warn

2 years agoUpdate RLS
Igor Matuszewski [Wed, 21 Jul 2021 13:17:31 +0000 (15:17 +0200)]
Update RLS

2 years agodocs: normalise wording in line with docs
Chris Midgley [Wed, 21 Jul 2021 13:13:46 +0000 (14:13 +0100)]
docs: normalise wording in line with docs

2 years agodocs: add additional links for ffi_pure / ffi_const
Chris Midgley [Wed, 21 Jul 2021 13:11:14 +0000 (14:11 +0100)]
docs: add additional links for ffi_pure / ffi_const

2 years agoRemove unsound TrustedRandomAccess implementations
Frank Steffahn [Tue, 1 Jun 2021 00:21:26 +0000 (02:21 +0200)]
Remove unsound TrustedRandomAccess implementations

Removes the implementations that depend on the user-definable trait `Copy`.

Only fix regressions to ensure merge in 1.55: Does not modify `vec::IntoIter`.

2 years agoAdd long explanation for E0757
Chris Midgley [Wed, 21 Jul 2021 12:22:57 +0000 (13:22 +0100)]
Add long explanation for E0757

2 years agodocs: GlobalAlloc: Make example only require 4096-aligned static
Ian Jackson [Wed, 21 Jul 2021 11:37:59 +0000 (12:37 +0100)]
docs: GlobalAlloc: Make example only require 4096-aligned static

Alignments > 4k are not supported,
  https://github.com/rust-lang/rust/issues/70022
  https://github.com/rust-lang/rust/issues/70144

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2 years agodocs: add newline before example
Chris Midgley [Wed, 21 Jul 2021 09:58:35 +0000 (10:58 +0100)]
docs: add newline before example

2 years agodocs: remove spurious main functions
Chris Midgley [Wed, 21 Jul 2021 09:57:27 +0000 (10:57 +0100)]
docs: remove spurious main functions

2 years agoadd working code example
Chris Midgley [Wed, 21 Jul 2021 09:29:20 +0000 (10:29 +0100)]
add working code example

2 years agoAuto merge of #86847 - tlyu:stdin-forwarders, r=joshtriplett
bors [Wed, 21 Jul 2021 06:06:37 +0000 (06:06 +0000)]
Auto merge of #86847 - tlyu:stdin-forwarders, r=joshtriplett

add `Stdin::lines`, `Stdin::split` forwarder methods

Add forwarder methods `Stdin::lines` and `Stdin::split`, which consume
and lock a `Stdin` handle, and forward on to the corresponding `BufRead`
methods. This should make it easier for beginners to use those iterator
constructors without explicitly dealing with locks or lifetimes.

Replaces #86412.
~~Based on #86846 to get the tracking issue number for the `stdio_locked` feature.~~ Rebased after merge, so it's only one commit now.

r? `@joshtriplett`
`@rustbot` label +A-io +C-enhancement +D-newcomer-roadblock +T-libs-api

2 years agoCorrect fmt
surechen [Wed, 21 Jul 2021 04:01:03 +0000 (12:01 +0800)]
Correct fmt

2 years agoAuto merge of #82653 - jyn514:submodules-on-demand, r=Mark-Simulacrum
bors [Wed, 21 Jul 2021 03:36:21 +0000 (03:36 +0000)]
Auto merge of #82653 - jyn514:submodules-on-demand, r=Mark-Simulacrum

Update all submodules that rustbuild doesn't depend on lazily

This only updates the submodules the first time they're needed, instead
of unconditionally the first time you run x.py.

Ideally, this would move *all* submodules to rustbuild and not exclude some tools and
backtrace. Unfortunately, cargo requires all `Cargo.toml` files in the
whole workspace to be present to build any crate.

On my machine, this takes the time for an initial submodule clone (for
`x.py --help`) from 55.70 to 15.87 seconds.

Helps with https://github.com/rust-lang/rust/issues/76653. Builds on https://github.com/rust-lang/rust/pull/86015 and should not be merged before (only the last commit is relevant).

2 years agoSimplify the collecting of `? Trait` bounds in where clause
surechen [Wed, 21 Jul 2021 03:35:06 +0000 (11:35 +0800)]
Simplify the collecting of `? Trait` bounds in where clause

2 years agoUpdate all submodules that rustbuild doesn't depend on lazily
Joshua Nelson [Mon, 1 Mar 2021 04:51:15 +0000 (23:51 -0500)]
Update all submodules that rustbuild doesn't depend on lazily

This only updates the submodules the first time they're needed, instead
of unconditionally the first time you run x.py.

Ideally, this would move *all* submodules and not exclude some tools and
backtrace. Unfortunately, cargo requires all `Cargo.toml` files in the
whole workspace to be present to build any crate.

On my machine, this takes the time for an initial submodule clone (for
`x.py --help`) from 55.70 to 15.87 seconds.

This uses exactly the same logic as the LLVM update used, modulo some
minor cleanups:
- Use a local variable for `src.join(relative_path)`
- Remove unnecessary arrays for `book!` macro and make the macro simpler to use
- Add more comments

2 years agoAuto merge of #87168 - the8472:flatten-len, r=scottmcm
bors [Tue, 20 Jul 2021 23:47:48 +0000 (23:47 +0000)]
Auto merge of #87168 - the8472:flatten-len, r=scottmcm

implement TrustedLen for Flatten/FlatMap if the U: IntoIterator == [T; N]

This only works if arrays are passed directly instead of array iterators
because we need to be sure that they have not been advanced before
Flatten does its size calculation.

resolves #87094

2 years agoUpdate cargo
Eric Huss [Tue, 20 Jul 2021 23:08:41 +0000 (16:08 -0700)]
Update cargo

2 years agoAdd long explanation for E0722
Chris Midgley [Tue, 20 Jul 2021 19:13:08 +0000 (20:13 +0100)]
Add long explanation for E0722

2 years agoAuto merge of #87312 - ehuss:update-books, r=ehuss
bors [Tue, 20 Jul 2021 18:44:35 +0000 (18:44 +0000)]
Auto merge of #87312 - ehuss:update-books, r=ehuss

Update books

## reference

6 commits in ab60513a3a5a0591e237fddff5d027a982648392..82d75cf423e4a7824fb36e73ccb18519d6900610
2021-07-05 08:27:31 -0700 to 2021-07-15 06:49:08 -0700
- fix wording/punctuation in "Lifetime bounds" (rust-lang/reference#1062)
- mention implicit `Sized` bound in more places (rust-lang/reference#1053)
-  (rust-lang/reference#1060)
- Remove inner attributes from non-block expressions. (rust-lang/reference#1051)
- Add note about the sign of the remainder (rust-lang/reference#1073)
- Clarify closure capture modes slightly (rust-lang/reference#1064)

## book

21 commits in a90f07f1e9a7fc75dc9105a6c6f16d5c13edceb0..eac55314210519238652f12b30fec9daea61f7fe
2021-07-05 14:43:12 -0400 to 2021-07-19 11:08:01 -0400
-  (rust-lang/book#2791)
- Add Deref trait to overload the deref operator in appendix table
- Revise linker installation instructions. Fixes rust-lang/book#2151.
- Clarify number literal type suffixes. Fixes rust-lang/book#1979.
- Add a note that lifetimes are coming up but aren't required
- Zip creates an iterator, not a vector. Fixes rust-lang/book#2762.
- Add Thai translation to the appendix. Connects to rust-lang/book#2636
- Derive Copy and Clone for Point to match stdlib docs example; fixes rust-lang/book#2657
- Make the definition of Option match the stdlib's, fixes rust-lang/book#2634
- Explain double quote backslash; closes rust-lang/book#2597
- Don't use the term 'anonymous struct' to fix rust-lang/book#2584
- Reword a sentence to fix rust-lang/book#2525
- Add Hindi translation. Connects to rust-lang/book#2496
- Remove unsafe Ferris designations from code. Fixes rust-lang/book#2555
- Add Traditional Chinese translation. Connects to rust-lang/book#2470
- Remove some more references to the authors field
- Make Appendix E be a link
- fix line wrapping
- remove description about the authors field
- remove the authors field
- remove the authors field

## rust-by-example

6 commits in 028f93a61500fe8f746ee7cc6b204ea6c9f42935..1db6bb483cc87ad3b424d9aba764fe622960a1be
2021-07-06 06:28:53 -0300 to 2021-07-15 06:17:42 -0300
- Updated the file destructure_tuple.md (rust-lang/rust-by-example#1452)
- Fix nomenclature around methods (rust-lang/rust-by-example#1450)
- std_misc/path.md: update `Show` to `Display` (rust-lang/rust-by-example#1449)
- Fix up github action (rust-lang/rust-by-example#1451)
- Remove github pages
- Support GitHub Actions (rust-lang/rust-by-example#1330)

## rustc-dev-guide

2 commits in 60e282559104035985331645907c3d9f842312c5..93422c21baca585dc88357ec886a48f6ddc7d665
2021-07-05 11:21:03 -0400 to 2021-07-13 12:45:58 -0400
- Update for merge of CrateDisambiguator into StableCrateId
- Minor capitalization fix (rust-lang/rustc-dev-guide#1170)

## edition-guide

8 commits in 5d57b3832f8d308a9f478ce0a69799548f27ad4d..af696ce8ea526445590ae0ca66a8128d2a95a69a
2021-07-05 10:33:32 +0200 to 2021-07-20 11:38:03 -0400
- Add migration section for panic-macro-consistency (rust-lang/edition-guide#258)
- Update transitioning chapter. (rust-lang/edition-guide#255)
- Add details on migrating the Cargo feature resolver. (rust-lang/edition-guide#259)
- Improve panic macro consistency summary (rust-lang/edition-guide#256)
- Add migration details to or-patterns guide (rust-lang/edition-guide#252)
- Add migration section to into-iterator (rust-lang/edition-guide#253)
- Add Rust 2021 prelude migration details (rust-lang/edition-guide#251)
- Provide more information about disjoint capture in closures and migration instructions (rust-lang/edition-guide#246)

## embedded-book

1 commits in 506840eb73b0749336e1d5274e16d6393892ee82..09986cd352404eb4659db44613b27cac9aa652fc
2021-06-24 00:01:32 +0000 to 2021-07-18 19:26:46 +0000
- Stop referring to the alloc crate as unstable  (rust-embedded/book#297)

2 years agoFix NixOS detection
oxalica [Fri, 16 Jul 2021 11:18:50 +0000 (19:18 +0800)]
Fix NixOS detection

Use `/etc/os-release` instead of `/etc/NIXOS`.
The latter one does not exist on NixOS when using tmpfs as root.

2 years agoUpdate books
Eric Huss [Tue, 20 Jul 2021 16:10:17 +0000 (09:10 -0700)]
Update books

2 years agoAuto merge of #87247 - crlf0710:merge-libterm-into-libtest, r=nagisa
bors [Tue, 20 Jul 2021 16:03:47 +0000 (16:03 +0000)]
Auto merge of #87247 - crlf0710:merge-libterm-into-libtest, r=nagisa

Merge libterm into libtest

I think it's quite clear at this point that rust won't stablize the current libterm APIs to the outside world. And its only user is libtest. The compiler doesn't use this api at all. So I'm merging the crate into libtest as a module.

This also allows me to remove 15% of the libterm code, since these APIs are dead-code now.

2 years agoSupport HIR wf checking for function signatures
Aaron Hill [Sun, 18 Jul 2021 16:33:49 +0000 (11:33 -0500)]
Support HIR wf checking for function signatures

During function type-checking, we normalize any associated types in
the function signature (argument types + return type), and then
create WF obligations for each of the normalized types. The HIR wf code
does not currently support this case, so any errors that we get have
imprecise spans.

This commit extends `ObligationCauseCode::WellFormed` to support
recording a function parameter, allowing us to get the corresponding
HIR type if an error occurs. Function typechecking is modified to
pass this information during signature normalization and WF checking.
The resulting code is fairly verbose, due to the fact that we can
no longer normalize the entire signature with a single function call.

As part of the refactoring, we now perform HIR-based WF checking
for several other 'typed items' (statics, consts, and inherent impls).

As a result, WF and projection errors in a function signature now
have a precise span, which points directly at the responsible type.
If a function signature is constructed via a macro, this will allow
the error message to point at the code 'most responsible' for the error
(e.g. a user-supplied macro argument).

2 years agoGet back the more precise suggestion spans of old regionck
Oli Scherer [Tue, 20 Jul 2021 11:36:31 +0000 (11:36 +0000)]
Get back the more precise suggestion spans of old regionck

2 years agoSwitch to store `Instance` directly within `VtblEntry`, fix `TraitVPtr` representation.
Charles Lew [Sun, 18 Jul 2021 09:23:37 +0000 (17:23 +0800)]
Switch to store `Instance` directly within `VtblEntry`, fix `TraitVPtr` representation.

2 years agoAdd internal attribute and tests.
Charles Lew [Sat, 17 Jul 2021 07:44:19 +0000 (15:44 +0800)]
Add internal attribute and tests.

2 years agoRefactor vtable format.
Charles Lew [Thu, 17 Jun 2021 04:20:18 +0000 (12:20 +0800)]
Refactor vtable format.

2 years agodocs: GlobalAlloc: completely replace example with one that works
Ian Jackson [Sun, 7 Feb 2021 21:50:56 +0000 (21:50 +0000)]
docs: GlobalAlloc: completely replace example with one that works

Since this is an example, this could really do with some review from
someone familiar with unsafe stuff !

I made the example no longer `no_run` since it works for me.

Fixes #81847

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Co-authored-by: Amanieu d'Antras <amanieu@gmail.com>
2 years agoAuto merge of #87310 - spastorino:update_miri, r=RalfJung
bors [Tue, 20 Jul 2021 13:37:02 +0000 (13:37 +0000)]
Auto merge of #87310 - spastorino:update_miri, r=RalfJung

Update MIRI

Fixes #87306

r? `@RalfJung`

2 years agoUpdate MIRI
Santiago Pastorino [Tue, 20 Jul 2021 12:52:19 +0000 (09:52 -0300)]
Update MIRI

2 years agoAuto merge of #87244 - jackh726:issue-71883, r=estebank
bors [Tue, 20 Jul 2021 10:56:08 +0000 (10:56 +0000)]
Auto merge of #87244 - jackh726:issue-71883, r=estebank

Better diagnostics with mismatched types due to implicit static lifetime

Fixes #78113

I think this is my first diagnostics PR...definitely happy to hear thoughts on the direction/implementation here.

I was originally just trying to solve the error above, where the lifetime on a GAT was causing a cryptic "mismatched types" error. But as I was writing this, I realized that this (unintentionally) also applied to a different case: `wf-in-foreign-fn-decls-issue-80468.rs`. I'm not sure if this diagnostic should get a new error code, or even reuse an existing one. And, there might be some ways to make this even more generalized. Also, the error is a bit more lengthy and verbose than probably needed. So thoughts there are welcome too.

This PR essentially ended up adding a new nice region error pass that triggers if a type doesn't match the self type of an impl which is selected because of a predicate because of an implicit static bound on that self type.

r? `@estebank`

2 years agoAllow combining -Cprofile-generate and -Cpanic=unwind when targeting
Michael Woerister [Mon, 19 Jul 2021 15:14:58 +0000 (17:14 +0200)]
Allow combining -Cprofile-generate and -Cpanic=unwind when targeting
MSVC.

The LLVM limitation that previously prevented this has been fixed in LLVM
9 which is older than the oldest LLVM version we currently support.

See https://github.com/rust-lang/rust/issues/61002.

2 years agoAuto merge of #87224 - RalfJung:miri-ptr-oob, r=oli-obk
bors [Tue, 20 Jul 2021 08:15:15 +0000 (08:15 +0000)]
Auto merge of #87224 - RalfJung:miri-ptr-oob, r=oli-obk

miri: better ptr-out-of-bounds errors

For offsets larger than `isize::MAX`, display them as negative offsets.

r? `@oli-obk`

2 years agoAuto merge of #87141 - spastorino:remove_impl_trait_in_bindings, r=oli-obk
bors [Tue, 20 Jul 2021 05:34:22 +0000 (05:34 +0000)]
Auto merge of #87141 - spastorino:remove_impl_trait_in_bindings, r=oli-obk

Remove impl trait in bindings

Closes #86729

r? `@oli-obk`

2 years agoBetter errors when we don't have implicit statics in trait objects
jackh726 [Tue, 20 Jul 2021 03:44:35 +0000 (23:44 -0400)]
Better errors when we don't have implicit statics in trait objects

2 years agoFix typo in compile.rs
Chinmay Deshpande [Tue, 20 Jul 2021 03:03:03 +0000 (20:03 -0700)]
Fix typo in compile.rs

2 years agoAuto merge of #84959 - camsteffen:lint-suggest-group, r=estebank
bors [Tue, 20 Jul 2021 02:11:55 +0000 (02:11 +0000)]
Auto merge of #84959 - camsteffen:lint-suggest-group, r=estebank

Suggest lint groups

Fixes rust-lang/rust-clippy#6986

2 years agomemorialize Anna Harren in the bastion of the turbofish
Melody Horn [Tue, 20 Jul 2021 01:42:59 +0000 (19:42 -0600)]
memorialize Anna Harren in the bastion of the turbofish

2 years agoAuto merge of #87284 - Aaron1011:remove-paren-special, r=petrochenkov
bors [Mon, 19 Jul 2021 23:50:23 +0000 (23:50 +0000)]
Auto merge of #87284 - Aaron1011:remove-paren-special, r=petrochenkov

Remove special case for `ExprKind::Paren` in `MutVisitor`

The special case breaks several useful invariants (`ExpnId`s are
globally unique, and never change). This special case
was added back in 2016 in https://github.com/rust-lang/rust/pull/34355

r? `@petrochenkov`

2 years agoFix incorrect use of `#[repr(no_niche)]`
Aaron Hill [Mon, 19 Jul 2021 22:45:28 +0000 (17:45 -0500)]
Fix incorrect use of `#[repr(no_niche)]`

2 years agoWarn on inert attributes used on bang macro invocation
Aaron Hill [Thu, 15 Jul 2021 00:51:45 +0000 (19:51 -0500)]
Warn on inert attributes used on bang macro invocation

These attributes are currently discarded.
This may change in the future (see #63221), but for now,
placing inert attributes on a macro invocation does nothing,
so we should warn users about it.

Technically, it's possible for there to be attribute macro
on the same macro invocation (or at a higher scope), which
inspects the inert attribute. For example:

```rust
#[look_for_inline_attr]
#[inline]
my_macro!()

#[look_for_nested_inline]
mod foo { #[inline] my_macro!() }
```

However, this would be a very strange thing to do.
Anyone running into this can manually suppress the warning.

2 years agoRemove special case for `ExprKind::Paren` in `MutVisitor`
Aaron Hill [Mon, 19 Jul 2021 14:33:35 +0000 (09:33 -0500)]
Remove special case for `ExprKind::Paren` in `MutVisitor`

The special case breaks several useful invariants (`ExpnId`s are
globally unique, and never change). This special case
was added back in 2016 in https://github.com/rust-lang/rust/pull/34355

2 years agoBetter diagnostics when mismatched types due to implict static lifetime
jackh726 [Thu, 15 Jul 2021 14:03:39 +0000 (10:03 -0400)]
Better diagnostics when mismatched types due to implict static lifetime

2 years agoAuto merge of #87153 - michaelwoerister:debuginfo-names-dyn-trait-projection-bounds...
bors [Mon, 19 Jul 2021 21:25:43 +0000 (21:25 +0000)]
Auto merge of #87153 - michaelwoerister:debuginfo-names-dyn-trait-projection-bounds, r=wesleywiser

[debuginfo] Emit associated type bindings in trait object type names.

This PR updates debuginfo type name generation for trait objects to include associated type bindings and auto trait bounds -- so that, for example, the debuginfo type name of `&dyn Iterator<Item=Foo>` and `&dyn Iterator<Item=Bar>` don't both map to just `&dyn Iterator` anymore.

The following table shows examples of debuginfo type names before and after the PR:
| type | before |  after |
|------|---------|-------|
| `&dyn Iterator<Item=u32>>` | `&dyn Iterator` | `&dyn Iterator<Item=u32>` |
| `&(dyn Iterator<Item=u32>> + Sync)` | `&dyn Iterator` | `&(dyn Iterator<Item=u32> + Sync)` |
| `&(dyn SomeTrait<bool, i8, Bar=u32>> + Send)` | `&dyn SomeTrait<bool, i8>` | `&(dyn SomeTrait<bool, i8, Bar=u32>> + Send)`  |

For targets that need C++-like type names, we use `assoc$<Item,u32>` instead of `Item=u32`:
| type | before |  after |
|------|---------|-------|
| `&dyn Iterator<Item=u32>>` | `ref$<dyn$<Iterator> >` | `ref$<dyn$<Iterator<assoc$<Item,u32> > > >` |
| `&(dyn Iterator<Item=u32>> + Sync)` | `ref$<dyn$<Iterator> >` | `ref$<dyn$<Iterator<assoc$<Item,u32> >,Sync> >` |
| `&(dyn SomeTrait<bool, i8, Bar=u32>> + Send)` | `ref$<dyn$<SomeTrait<bool, i8> > >` | `ref$<dyn$<SomeTrait<bool,i8,assoc$<Bar,u32> > >,Send> >`  |

The PR also adds self-profiling measurements for debuginfo type name generation (re. https://github.com/rust-lang/rust/issues/86431). It looks like the compiler spends up to 0.5% of its time in that task, so the potential for optimizing it via caching seems limited.

However, the perf run also shows [the biggest regression](https://perf.rust-lang.org/detailed-query.html?commit=585e91c718b0b2c5319e1fffd0ff1e62aaf7ccc2&base_commit=b9197978a90be6f7570741eabe2da175fec75375&benchmark=tokio-webpush-simple-debug&run_name=incr-unchanged) in a test case that does not even invoke the code in question. This suggests that the length of the names we generate here can affect performance by influencing how much data the linker has to copy around.

Fixes https://github.com/rust-lang/rust/issues/86134.

2 years agoAuto merge of #87225 - estebank:cleanup, r=oli-obk
bors [Mon, 19 Jul 2021 18:44:27 +0000 (18:44 +0000)]
Auto merge of #87225 - estebank:cleanup, r=oli-obk

Various diagnostics clean ups/tweaks

* Always point at macros, including derive macros
* Point at non-local items that introduce a trait requirement
* On private associated item, point at definition

2 years agoreplace Option combinators with try block
The8472 [Mon, 19 Jul 2021 18:21:54 +0000 (20:21 +0200)]
replace Option combinators with try block

2 years agoAuto merge of #87271 - flip1995:clippyup, r=Manishearth
bors [Mon, 19 Jul 2021 16:03:35 +0000 (16:03 +0000)]
Auto merge of #87271 - flip1995:clippyup, r=Manishearth

Update Clippy

This is an out-of-cycle Clippy update, to fix 3 ICEs before the release (This should be merged before beta is branched):

rust-lang/rust-clippy#7470
rust-lang/rust-clippy#7471
rust-lang/rust-clippy#7473

cc `@jackh726` `@JohnTitor` rust-lang/rust-clippy#7470 was caused by #86867. I saw the same ICE in the last rustup for Clippy though, so this might be a more general problem. Is there something we should check before calling `layout_of`? Should we always check for `ty.has_escaping_bound_vars()` before calling `layout_of`? Or is this overkill?

r? `@Manishearth`

2 years agoVarious diagnostics clean ups/tweaks
Esteban Küber [Sat, 17 Jul 2021 18:13:50 +0000 (11:13 -0700)]
Various diagnostics clean ups/tweaks

* Always point at macros, including derive macros
* Point at non-local items that introduce a trait requirement
* On private associated item, point at definition

2 years agoadd --codegen-backends=foo,bar ./configure flag
Pietro Albini [Mon, 19 Jul 2021 14:48:12 +0000 (16:48 +0200)]
add --codegen-backends=foo,bar ./configure flag

Unfortunately this requires a proper ./configure flag, as the codegen
backends config entry is a list, not a string (breaking --set).

2 years agoNormalize generic_ty before checking if bound is met
jackh726 [Mon, 19 Jul 2021 14:25:20 +0000 (10:25 -0400)]
Normalize generic_ty before checking if bound is met

2 years agoAdd comments explaining the unix command-line argument support.
Dan Gohman [Mon, 19 Jul 2021 14:06:42 +0000 (07:06 -0700)]
Add comments explaining the unix command-line argument support.

Following up on #87236, add comments to the unix command-line argument
support explaining that the code doesn't mutate the system-provided
argc/argv, and that this is why the code doesn't need a lock or special
memory ordering.

2 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Mon, 19 Jul 2021 14:07:21 +0000 (17:07 +0300)]
:arrow_up: rust-analyzer

2 years ago[debuginfo] Adapt CDB tests after changes to whitespace usage in debuginfo type names.
Michael Woerister [Mon, 19 Jul 2021 09:00:21 +0000 (11:00 +0200)]
[debuginfo] Adapt CDB tests after changes to whitespace usage in debuginfo type names.

2 years agoImprove impl trait disallowed context error text
Santiago Pastorino [Mon, 19 Jul 2021 12:21:27 +0000 (09:21 -0300)]
Improve impl trait disallowed context error text

2 years agoAuto merge of #86970 - inquisitivecrystal:force-warn, r=davidtwco
bors [Mon, 19 Jul 2021 13:18:04 +0000 (13:18 +0000)]
Auto merge of #86970 - inquisitivecrystal:force-warn, r=davidtwco

Make `--force-warns` a normal lint level option

Now that `ForceWarn` is a lint level, there's no reason `--force-warns` should be treated differently from other options that set lint levels. This merges the `ForceWarn` handling in with the other lint level command line options. It also unifies all of the relevant selection logic in `compiler/rustc_lint/src/levels.rs`, rather than having some of it weirdly elsewhere.

Fixes #86958, which arose from the special-cased handling of `ForceWarn` having had an error in it.

2 years agoImprove impl_trait_in_bindings removed feature text
Santiago Pastorino [Mon, 19 Jul 2021 12:20:15 +0000 (09:20 -0300)]
Improve impl_trait_in_bindings removed feature text

2 years agoRecognize bounds on impls as const bounds
Deadbeef [Mon, 19 Jul 2021 10:50:47 +0000 (18:50 +0800)]
Recognize bounds on impls as const bounds

2 years agoIterate through impls only when permitted
Deadbeef [Mon, 19 Jul 2021 10:50:06 +0000 (18:50 +0800)]
Iterate through impls only when permitted

2 years agoAuto merge of #87269 - GuillaumeGomez:rollup-qukedv0, r=GuillaumeGomez
bors [Mon, 19 Jul 2021 10:10:08 +0000 (10:10 +0000)]
Auto merge of #87269 - GuillaumeGomez:rollup-qukedv0, r=GuillaumeGomez

Rollup of 8 pull requests

Successful merges:

 - #86230 (Add --nocapture option to rustdoc)
 - #87210 (Rustdoc accessibility: make the sidebar headers actual headers)
 - #87227 (Move asm! and global_asm! to core::arch)
 - #87236 (Simplify command-line argument initialization on unix)
 - #87251 (Fix "item info" width)
 - #87256 (Extend HIR-based WF checking to associated type defaults)
 - #87259 (triagebot shortcut config)
 - #87268 (Don't create references to uninitialized data in `List::from_arena`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoMerge commit '4c41a222ca5d1325fb4b6709395bd06e766cc042' into clippyup
flip1995 [Mon, 19 Jul 2021 09:52:05 +0000 (11:52 +0200)]
Merge commit '4c41a222ca5d1325fb4b6709395bd06e766cc042' into clippyup

2 years agoAuto merge of #7476 - flip1995:rustup, r=flip1995
bors [Mon, 19 Jul 2021 09:49:57 +0000 (09:49 +0000)]
Auto merge of #7476 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

Out of cycle sync for 2 ICE fixes #7470 #7471 #7473

changelog: none

2 years agoBump nightly version -> 2021-07-19
flip1995 [Mon, 19 Jul 2021 09:49:03 +0000 (11:49 +0200)]
Bump nightly version -> 2021-07-19

2 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Mon, 19 Jul 2021 09:38:40 +0000 (11:38 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup

2 years agoRollup merge of #87268 - SkiFire13:fix-uninit-ref-list, r=nagisa
Guillaume Gomez [Mon, 19 Jul 2021 09:37:49 +0000 (11:37 +0200)]
Rollup merge of #87268 - SkiFire13:fix-uninit-ref-list, r=nagisa

Don't create references to uninitialized data in `List::from_arena`

Previously `result` and `arena_slice` were references pointing to uninitialized data, which is technically UB. They may have been fine because the pointed data is `Copy` and and they were only written to, but the semantics of this aren't clearly defined yet, and since we have a sound way to do the same thing I don't think we should keep the possibly-unsound way.

2 years agoRollup merge of #87259 - Llandy3d:triagebot_shortcuts, r=nikomatsakis
Guillaume Gomez [Mon, 19 Jul 2021 09:37:48 +0000 (11:37 +0200)]
Rollup merge of #87259 - Llandy3d:triagebot_shortcuts, r=nikomatsakis

triagebot shortcut config

Enable the new triagebot shortcuts as per [#1381/triagebot](https://github.com/rust-lang/triagebot/pull/1381)

2 years agoRollup merge of #87256 - Aaron1011:hir-wf-assoc-default, r=oli-obk
Guillaume Gomez [Mon, 19 Jul 2021 09:37:47 +0000 (11:37 +0200)]
Rollup merge of #87256 - Aaron1011:hir-wf-assoc-default, r=oli-obk

Extend HIR-based WF checking to associated type defaults

Previously, we would only look at associated types in `impl` blocks.

2 years agoRollup merge of #87251 - GuillaumeGomez:item-info-width, r=notriddle
Guillaume Gomez [Mon, 19 Jul 2021 09:37:46 +0000 (11:37 +0200)]
Rollup merge of #87251 - GuillaumeGomez:item-info-width, r=notriddle

Fix "item info" width

Fixes #87202.

It now looks again like this:

![Screenshot from 2021-07-18 12-33-27](https://user-images.githubusercontent.com/3050060/126064005-013acabc-7f17-4436-8dfc-cb6b9bc24413.png)

cc `@jyn514`

r? `@notriddle`

2 years agoRollup merge of #87236 - sunfishcode:avoid-locking-args, r=joshtriplett
Guillaume Gomez [Mon, 19 Jul 2021 09:37:45 +0000 (11:37 +0200)]
Rollup merge of #87236 - sunfishcode:avoid-locking-args, r=joshtriplett

Simplify command-line argument initialization on unix

Simplify Rust's command-line argument initialization code on unix:
 - The cleanup code isn't needed, because it was just zeroing out non-owning variables at runtime cleanup time. After 91c3eee1735ad72b579f99cbb6919c3471747d94, Rust's command-line initialization code on unix no longer allocates `CString`s and a `Vec` at startup time.
 - The `Mutex` isn't needed; if there's somehow a call to `args()` before argument initialization has happened, the code returns return an empty list, which we can do with a null check.

With these changes, a simple cdylib that doesn't use threads avoids getting `pthread_mutex_lock`/`pthread_mutex_unlock` in its symbol table.

2 years agoRollup merge of #87227 - bstrie:asm2arch, r=Amanieu
Guillaume Gomez [Mon, 19 Jul 2021 09:37:44 +0000 (11:37 +0200)]
Rollup merge of #87227 - bstrie:asm2arch, r=Amanieu

Move asm! and global_asm! to core::arch

Follow-up to https://github.com/rust-lang/stdarch/pull/1183 .

Implements the libs-api team decision from rust-lang/rust#84019 (comment) .

In order to not break nightly users, this PR also adds the newly-moved items to the prelude. However, a decision will need to be made before stabilization as to whether these items should remain in the prelude. I will file an issue for this separately.

Fixes #84019 .

r? `@Amanieu`

2 years agoRollup merge of #87210 - notriddle:notriddle/rustdoc-sidebar-headers, r=GuillaumeGomez
Guillaume Gomez [Mon, 19 Jul 2021 09:37:42 +0000 (11:37 +0200)]
Rollup merge of #87210 - notriddle:notriddle/rustdoc-sidebar-headers, r=GuillaumeGomez

Rustdoc accessibility: make the sidebar headers actual headers

Part of #87059

Preview it at: https://notriddle.com/notriddle-rustdoc-test/rustdoc-sidebar-header/std/index.html

2 years agoRollup merge of #86230 - GuillaumeGomez:nocapture, r=camelid
Guillaume Gomez [Mon, 19 Jul 2021 09:37:41 +0000 (11:37 +0200)]
Rollup merge of #86230 - GuillaumeGomez:nocapture, r=camelid

Add --nocapture option to rustdoc

Fixes https://github.com/rust-lang/rust/issues/26309.
Fixes #45724.

Once this PR is merged, I'll send a PR to cargo to also pass `--nocapture` to rustdoc.

cc `@jyn514`
r? `@camelid`

2 years agoAuto merge of #7470 - DevinR528:fix-ice7447, r=flip1995
bors [Mon, 19 Jul 2021 09:22:34 +0000 (09:22 +0000)]
Auto merge of #7470 - DevinR528:fix-ice7447, r=flip1995

Add check if ty has_escaping_bound_vars in zero_sized_map_values lint

Fixes: #7447
changelog: fix ICE in [`zero_sized_map_values`]

2 years agoDon't create references to uninitialized data in List::from_arena
Giacomo Stevanato [Mon, 19 Jul 2021 08:47:45 +0000 (10:47 +0200)]
Don't create references to uninitialized data in List::from_arena

2 years agoAuto merge of #87196 - oxalica:option-insert-must-use, r=joshtriplett
bors [Mon, 19 Jul 2021 07:03:36 +0000 (07:03 +0000)]
Auto merge of #87196 - oxalica:option-insert-must-use, r=joshtriplett

Mark `Option::insert` as must_use

Some people seems misled by the function name and use it in case where a simple assignment just works.
If the return value is not used, `option = Some(value);` should be preferred instead of `option.insert(value);`

2 years agoAuto merge of #7403 - Anthuang:redundant-method-names, r=Manishearth
bors [Mon, 19 Jul 2021 06:49:51 +0000 (06:49 +0000)]
Auto merge of #7403 - Anthuang:redundant-method-names, r=Manishearth

New lint: [`self_named_constructor`]

Adds the `self_named_constructor` lint for detecting when an implemented method has the same name as the type it is implemented for.

changelog: [`self_named_constructor`]

closes: #7142

2 years agomove const-generic issues into seperate directory
Marcel Hellwig [Mon, 19 Jul 2021 05:25:27 +0000 (07:25 +0200)]
move const-generic issues into seperate directory