]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #96941 - nannany:master, r=lcnr,JohnTitor
Matthias Krüger [Thu, 12 May 2022 14:41:05 +0000 (16:41 +0200)]
Rollup merge of #96941 - nannany:master, r=lcnr,JohnTitor

update graphviz links

Update graphviz links.

2 years agoRollup merge of #96939 - GuillaumeGomez:settings-css, r=notriddle
Matthias Krüger [Thu, 12 May 2022 14:41:04 +0000 (16:41 +0200)]
Rollup merge of #96939 - GuillaumeGomez:settings-css, r=notriddle

Fix settings page CSS

In https://github.com/rust-lang/rust/pull/96741, I moved the CSS loading outside of `settings.js`. The result was that on the settings page, there isn't the settings CSS anymore:

![Screenshot from 2022-05-11 11-09-24](https://user-images.githubusercontent.com/3050060/167817969-6750931b-3e6e-4178-b5a9-ee3851e983be.png)

I also used this opportunity to remove unused CSS rules (we don't have `<select>` elements anymore in the settings).

cc `@jsha`
r? `@notriddle`

2 years agoRollup merge of #96860 - semarie:openbsd-futex-time64, r=cuviper
Matthias Krüger [Thu, 12 May 2022 14:41:03 +0000 (16:41 +0200)]
Rollup merge of #96860 - semarie:openbsd-futex-time64, r=cuviper

openbsd: convert futex timeout managment to Timespec usage

unbreak openbsd build after #96657

r? cuviper

please note I made `Timespec::zero()` public to be able to use it. OpenBSD is using relative timeout for `futex(2)` and I don't find simple way to use `Timespec` this way.

2 years agoRollup merge of #95896 - nagisa:nvptx-contacts, r=Mark-Simulacrum
Matthias Krüger [Thu, 12 May 2022 14:41:01 +0000 (16:41 +0200)]
Rollup merge of #95896 - nagisa:nvptx-contacts, r=Mark-Simulacrum

Note the contacts for the nvptx64 target(s)

cc `@RDambrosio016` `@kjetilkjeka`

2 years agoAuto merge of #96853 - davidtwco:diagnostic-translation-unit-and-more-porting, r...
bors [Thu, 12 May 2022 10:22:07 +0000 (10:22 +0000)]
Auto merge of #96853 - davidtwco:diagnostic-translation-unit-and-more-porting, r=oli-obk

diagnostics: port more diagnostics to derive + support for `()` fields

- Extend diagnostic derive so that spanless subdiagnostics (e.g. some uses of `help`/`note`) can be applied via attributes to fields of type `()` (currently spanless subdiagnostics are applied via attributes on the diagnostic struct itself). A consequence of this is that `Option<()>` fields can be used to represent optional spanless subdiagnostics, which are sometimes useful (e.g. for a `help` that should only show on nightly builds).
- Simplify the "explicit generic args with impl trait" diagnostic struct (from #96760) using support for `Option<()>` spanless subdiagnostics.
- Change `DiagnosticBuilder::set_arg`, used to provide context for Fluent messages, so that it takes anything that implements `IntoDiagnosticArg`, rather than `DiagnosticArgValue` - this improves the ergonomics of manual implementations of `SessionDiagnostic` which are translatable.
- Port "the type parameter `T` must be explicitly specified", "manual implementations of `X` are experimental", "could not resolve substs on overridden impl" diagnostics to diagnostic structs.
- When testing macros from `rustc_macros` in `ui-fulldeps` tests, sometimes paths from the compiler source tree can be shown in error messages - these need to be normalized in `compiletest`.

r? `@oli-obk`
cc `@pvdrz`

2 years agoupdate graphviz links
minami.yoshihiko [Wed, 11 May 2022 11:21:10 +0000 (20:21 +0900)]
update graphviz links

add subdomain

2 years agoAuto merge of #96940 - TaKO8Ki:stop-suggesting-wrong-fully-qualified-path, r=estebank
bors [Thu, 12 May 2022 07:44:31 +0000 (07:44 +0000)]
Auto merge of #96940 - TaKO8Ki:stop-suggesting-wrong-fully-qualified-path, r=estebank

Stop suggesting non-existing fully qualified paths

This patch fixes a part of #96295.

r? `@estebank`

2 years agotypeck: port "no resolve overridden impl substs"
David Wood [Sat, 7 May 2022 07:14:48 +0000 (08:14 +0100)]
typeck: port "no resolve overridden impl substs"

Port "could not resolve substs on overridden impl" diagnostic to use the
diagnostic derive.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agotypeck: port "manual implementations"
David Wood [Sat, 7 May 2022 06:50:01 +0000 (07:50 +0100)]
typeck: port "manual implementations"

Port the "manual implementations of `X` are experimental" diagnostic to
use the diagnostic derive.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agotypeck: port "missing type params"
David Wood [Sat, 7 May 2022 06:32:01 +0000 (07:32 +0100)]
typeck: port "missing type params"

Port the "the type parameter `T` must be explicitly specified"
diagnostic to using a diagnostic struct.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agoerrors: `set_arg` takes `IntoDiagnosticArg`
David Wood [Sat, 7 May 2022 06:26:03 +0000 (07:26 +0100)]
errors: `set_arg` takes `IntoDiagnosticArg`

Manual implementors of translatable diagnostics will need to call
`set_arg`, not just the derive, so make this function a bit more
ergonomic by taking `IntoDiagnosticArg` rather than
`DiagnosticArgValue`.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agocompiletest: normalize paths from repository root
David Wood [Mon, 9 May 2022 03:18:35 +0000 (04:18 +0100)]
compiletest: normalize paths from repository root

When testing macros from `rustc_macros` in `ui-fulldeps` tests,
sometimes paths from the compiler source tree can be shown in error
messages - these need to be normalized.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agotypeck: simplify error type using `()` field
David Wood [Sat, 7 May 2022 05:05:01 +0000 (06:05 +0100)]
typeck: simplify error type using `()` field

Using new support for spanless subdiagnostics from `()` fields in the
diagnostic derive, simplify the "explicit generic args with impl trait"
diagnostic's struct.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: spanless subdiagnostics from `()` fields
David Wood [Sat, 7 May 2022 05:02:11 +0000 (06:02 +0100)]
macros: spanless subdiagnostics from `()` fields

Type attributes could previously be used to support spanless
subdiagnostics but these couldn't easily be made optional in the same
way that spanned subdiagnostics could by using a field attribute on a
field with an `Option<Span>` type. Spanless subdiagnostics can now be
specified on fields with `()` type or `Option<()>` type.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agoAuto merge of #96889 - Aaron1011:place-ref-remove, r=compiler-errors
bors [Thu, 12 May 2022 05:03:48 +0000 (05:03 +0000)]
Auto merge of #96889 - Aaron1011:place-ref-remove, r=compiler-errors

Remove `PartialOrd`/`Ord` impl for `PlaceRef`

This is a new attempt at #93315. It removes one usage
of the `Ord` impl for `DefId`, which should make it easier
to eventually remove that impl.

2 years agoAuto merge of #95837 - scottmcm:ptr-offset-from-unsigned, r=oli-obk
bors [Thu, 12 May 2022 02:49:00 +0000 (02:49 +0000)]
Auto merge of #95837 - scottmcm:ptr-offset-from-unsigned, r=oli-obk

Add `sub_ptr` on pointers (the `usize` version of `offset_from`)

We have `add`/`sub` which are the `usize` versions of `offset`, this adds the `usize` equivalent of `offset_from`.  Like how `.add(d)` replaced a whole bunch of `.offset(d as isize)`, you can see from the changes here that it's fairly common that code actually knows the order between the pointers and *wants* a `usize`, not an `isize`.

As a bonus, this can do `sub nuw`+`udiv exact`, rather than `sub`+`sdiv exact`, which can be optimized slightly better because it doesn't have to worry about negatives.  That's why the slice iterators weren't using `offset_from`, though I haven't updated that code in this PR because slices are so perf-critical that I'll do it as its own change.

This is an intrinsic, like `offset_from`, so that it can eventually be allowed in CTFE.  It also allows checking the extra safety condition -- see the test confirming that CTFE catches it if you pass the pointers in the wrong order.

2 years agoApply CR suggestions; add real tracking issue
Scott McMurray [Sun, 10 Apr 2022 23:02:52 +0000 (16:02 -0700)]
Apply CR suggestions; add real tracking issue

2 years agoAdd a debug check for ordering, and check for isize overflow in CTFE
Scott McMurray [Sat, 9 Apr 2022 23:29:39 +0000 (16:29 -0700)]
Add a debug check for ordering, and check for isize overflow in CTFE

2 years agoRename `unsigned_offset_from` to `sub_ptr`
Scott McMurray [Sat, 9 Apr 2022 21:14:35 +0000 (14:14 -0700)]
Rename `unsigned_offset_from` to `sub_ptr`

2 years agoAdd `unsigned_offset_from` on pointers
Scott McMurray [Sat, 9 Apr 2022 08:27:47 +0000 (01:27 -0700)]
Add `unsigned_offset_from` on pointers

Like we have `add`/`sub` which are the `usize` version of `offset`, this adds the `usize` equivalent of `offset_from`.  Like how `.add(d)` replaced a whole bunch of `.offset(d as isize)`, you can see from the changes here that it's fairly common that code actually knows the order between the pointers and *wants* a `usize`, not an `isize`.

As a bonus, this can do `sub nuw`+`udiv exact`, rather than `sub`+`sdiv exact`, which can be optimized slightly better because it doesn't have to worry about negatives.  That's why the slice iterators weren't using `offset_from`, though I haven't updated that code in this PR because slices are so perf-critical that I'll do it as its own change.

This is an intrinsic, like `offset_from`, so that it can eventually be allowed in CTFE.  It also allows checking the extra safety condition -- see the test confirming that CTFE catches it if you pass the pointers in the wrong order.

2 years agoAuto merge of #96150 - est31:unused_macro_rules, r=petrochenkov
bors [Thu, 12 May 2022 00:08:08 +0000 (00:08 +0000)]
Auto merge of #96150 - est31:unused_macro_rules, r=petrochenkov

Implement a lint to warn about unused macro rules

This implements a new lint to warn about unused macro rules (arms/matchers), similar to the `unused_macros` lint added by #41907 that warns about entire macros.

```rust
macro_rules! unused_empty {
    (hello) => { println!("Hello, world!") };
    () => { println!("empty") }; //~ ERROR: 1st rule of macro `unused_empty` is never used
}

fn main() {
    unused_empty!(hello);
}
```

Builds upon #96149 and #96156.

Fixes #73576

2 years agoAuto merge of #96806 - cjgillot:codegen-fulfill-nice, r=oli-obk
bors [Wed, 11 May 2022 21:39:02 +0000 (21:39 +0000)]
Auto merge of #96806 - cjgillot:codegen-fulfill-nice, r=oli-obk

Gracefully fail to resolve associated items instead of `delay_span_bug`.

`codegen_fulfill_obligation` is used during instance resolution for trait items.

In case of insufficient normalization issues during MIR inlining, it caused ICEs.
It's better to gracefully refuse to resolve the associated item, and let the caller decide what to do with this.

Split from https://github.com/rust-lang/rust/pull/91743
Closes #69121
Closes #73021
Closes #88599
Closes #93008
Closes #93248
Closes #94680
Closes #96170
r? `@oli-obk`

2 years agoRemove `PartialOrd`/`Ord` impl for `PlaceRef`
Aaron Hill [Tue, 10 May 2022 02:48:43 +0000 (22:48 -0400)]
Remove `PartialOrd`/`Ord` impl for `PlaceRef`

This is a new attempt at #93315. It removes one usage
of the `Ord` impl for `DefId`, which should make it easier
to eventually remove that impl.

2 years agoAuto merge of #96220 - RalfJung:scalar-no-padding, r=oli-obk
bors [Wed, 11 May 2022 18:34:14 +0000 (18:34 +0000)]
Auto merge of #96220 - RalfJung:scalar-no-padding, r=oli-obk

tighten sanity checks around Scalar and ScalarPair

While investigating https://github.com/rust-lang/rust/issues/96185 I noticed codegen has tighter sanity checks here than Miri does, so I added some more assertions. Strangely, some of them fail, so I also needed to add a HACK... that is probably worth looking into.

This does not fix that issue, but it changes the ICE messages, making it quite clear that we have a scalar whose size is not the same as that of the surrounding layout.

r? `@oli-obk`

2 years agoBless clippy.
Camille GILLOT [Wed, 11 May 2022 16:51:14 +0000 (18:51 +0200)]
Bless clippy.

2 years agoAuto merge of #96942 - Dylan-DPC:rollup-p8bcly2, r=Dylan-DPC
bors [Wed, 11 May 2022 13:47:38 +0000 (13:47 +0000)]
Auto merge of #96942 - Dylan-DPC:rollup-p8bcly2, r=Dylan-DPC

Rollup of 4 pull requests

Successful merges:

 - #91518 (Add readable rustdoc display for RISC-V target)
 - #95281 (Fix inaccurate function name in `rustc_const_eval` docs)
 - #96898 (logging: add env var to control verbose scope entry/exit logging)
 - #96936 (:arrow_up: rust-analyzer)

Failed merges:

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

2 years agoRollup merge of #96936 - lnicola:rust-analyzer-2022-05-11, r=lnicola
Dylan DPC [Wed, 11 May 2022 11:49:30 +0000 (13:49 +0200)]
Rollup merge of #96936 - lnicola:rust-analyzer-2022-05-11, r=lnicola

:arrow_up: rust-analyzer

r? `@ghost`

2 years agoRollup merge of #96898 - RalfJung:interpret-pop-debug, r=oli-obk
Dylan DPC [Wed, 11 May 2022 11:49:29 +0000 (13:49 +0200)]
Rollup merge of #96898 - RalfJung:interpret-pop-debug, r=oli-obk

logging: add env var to control verbose scope entry/exit logging

~~This got removed in https://github.com/rust-lang/rust/pull/75143, and I find this makes long traces a lot harder to read, so I propose we add this back.~~

Example trace:
```
│ │ ├─0ms  INFO rustc_const_eval::interpret::step return
│ │ ├─0ms  INFO rustc_const_eval::interpret::eval_context popping stack frame (returning from function)
│ │┌┘rustc_const_eval::interpret::eval_context::frame std::ptr::mut_ptr::<impl *mut u8>::guaranteed_eq
│ ├┘rustc_const_eval::interpret::eval_context::frame std::ptr::mut_ptr::<impl *mut u8>::is_null
│ ├─1ms  INFO rustc_const_eval::interpret::step // executing bb2
│ ├─1ms  INFO rustc_const_eval::interpret::step StorageDead(_4)
│ ├─1ms  INFO rustc_const_eval::interpret::step StorageDead(_2)
│ ├─1ms  INFO rustc_const_eval::interpret::step return
│ ├─1ms  INFO rustc_const_eval::interpret::eval_context popping stack frame (returning from function)
│┌┘rustc_const_eval::interpret::eval_context::frame std::ptr::mut_ptr::<impl *mut u8>::is_null
├┘rustc_const_eval::interpret::eval_context::frame std::sys_common::thread_local_dtor::register_dtor_fallback::run_dtors
├─178ms  INFO rustc_const_eval::interpret::step // executing bb2
├─178ms  INFO rustc_const_eval::interpret::step StorageDead(_5)

```

r? `@oli-obk`

2 years agoRollup merge of #95281 - pierwill:fix-85513, r=Dylan-DPC
Dylan DPC [Wed, 11 May 2022 11:49:28 +0000 (13:49 +0200)]
Rollup merge of #95281 - pierwill:fix-85513, r=Dylan-DPC

Fix inaccurate function name in `rustc_const_eval` docs

Looks to me like this fixes #85513. I had trouble making a intra-docs link to `eval_place_to_op` work, though...

2 years agoRollup merge of #91518 - luojia65:rustdoc-riscv-arch, r=GuillaumeGomez
Dylan DPC [Wed, 11 May 2022 11:49:27 +0000 (13:49 +0200)]
Rollup merge of #91518 - luojia65:rustdoc-riscv-arch, r=GuillaumeGomez

Add readable rustdoc display for RISC-V target

This pull request adds a human readable rustdoc display for RISC-V architecture. Target configuration marked as `#[cfg(target_arch = "riscv32")]` or `#[cfg(target_arch = "riscv64")]` are pretty formatted like `RISC-V RV32` and `RISC-V RV64` in Rust docs.

Before:

![图片](https://user-images.githubusercontent.com/40385009/152681944-58d758ae-ac4f-412b-b70c-1e673a2a071e.png)

After:

![图片](https://user-images.githubusercontent.com/40385009/152681923-91d5fe75-c3b2-4ac2-865c-54eac0aefe8d.png)

2 years agoavoid computing Scalar size/align in debug builds
Ralf Jung [Wed, 11 May 2022 11:32:19 +0000 (13:32 +0200)]
avoid computing Scalar size/align in debug builds

2 years agoAuto merge of #96924 - petrochenkov:nonon, r=nnethercote
bors [Wed, 11 May 2022 11:06:49 +0000 (11:06 +0000)]
Auto merge of #96924 - petrochenkov:nonon, r=nnethercote

ast: Introduce some traits to get AST node properties generically

And use them to avoid constructing some artificial `Nonterminal` tokens during expansion
r? `@nnethercote` `@Aaron1011`

2 years agostop suggesting non-existing fully qualified paths
Takayuki Maeda [Wed, 11 May 2022 10:18:02 +0000 (19:18 +0900)]
stop suggesting non-existing fully qualified paths

2 years agoast: Introduce some traits to get AST node properties generically
Vadim Petrochenkov [Sun, 1 May 2022 17:58:24 +0000 (20:58 +0300)]
ast: Introduce some traits to get AST node properties generically

And use them to avoid constructing some artificial `Nonterminal` tokens during expansion

2 years agoEnsure that the settings CSS is loaded on the settings page
Guillaume Gomez [Wed, 11 May 2022 09:29:21 +0000 (11:29 +0200)]
Ensure that the settings CSS is loaded on the settings page

2 years agoRemove unused CSS settings rules
Guillaume Gomez [Wed, 11 May 2022 09:27:13 +0000 (11:27 +0200)]
Remove unused CSS settings rules

2 years agoAdd missing CSS file for settings page
Guillaume Gomez [Wed, 11 May 2022 09:27:00 +0000 (11:27 +0200)]
Add missing CSS file for settings page

2 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Wed, 11 May 2022 09:26:06 +0000 (12:26 +0300)]
:arrow_up: rust-analyzer

2 years agoAuto merge of #96933 - ehuss:update-books, r=ehuss
bors [Wed, 11 May 2022 08:48:11 +0000 (08:48 +0000)]
Auto merge of #96933 - ehuss:update-books, r=ehuss

Update books

## nomicon

9 commits in c7d8467ca9158da58ef295ae65dbf00a308752d9..10d40c59a581c66d8ecd29ad18d410bf97ed524d
2022-04-06 14:26:54 +0900 to 2022-05-07 10:45:07 +0900
- Introducing init/uninit before its use (rust-lang/nomicon#355)
- Change will to would to discuss what don't occur (rust-lang/nomicon#361)
- State that pop for length 1 is an example (rust-lang/nomicon#360)
- Correct a sentence that didn't seem to be proper (rust-lang/nomicon#358)
- Indicate that C reference are C reference (rust-lang/nomicon#357)
- Introduce and avoid dropck (rust-lang/nomicon#353)
- Rephrase improperly reduced borrows introduction (rust-lang/nomicon#352)
- Two lifetime clarification (rust-lang/nomicon#350)
- "UB" vs "Undefined Behavior" (rust-lang/nomicon#349)

## reference

9 commits in b5f6c2362baf932db9440fbfcb509b309237ee85..8e36971959ff238b5aa2575fbc7a2e09e1313e82
2022-04-10 19:19:51 -0700 to 2022-05-09 17:20:59 -0700
- Stop saying that const functions cannot use 'extern' (rust-lang/reference#1207)
- Moved the option variant imports (rust-lang/reference#1208)
- #[must_use] on traits also affects trait objects (rust-lang/reference#1203)
- Don't use PathPattern in RangePattern bounds (rust-lang/reference#1204)
- Inline assembly: Add kreg0 register class (rust-lang/reference#1205)
- Fix crate_type attribute examples (rust-lang/reference#1201)
- Say that that the default function return type is the unit type (rust-lang/reference#1199)
- Clarify guarantees provided by repr(packed) (rust-lang/reference#1163)
- Document the Termination trait for main() and test functions (rust-lang/reference#1194)

## book

43 commits in de0dbffc5812fd885700874e8d258dd334733ac4..d9415b7cbfcb4b24062683f429bd0ff535396362
2022-04-18 19:29:45 -0400 to 2022-05-09 09:10:44 -0400
- Update ch09-02-recoverable-errors-with-result.md
- Added missing be 2
- Added missing be
- Move hardcoded string into status_line to be consistent
- Fix trailing space
- Propagate tech review edits back to src
- Change "semantics" to "mechanics"; when referring to compiler behavior, rather than syntax.
- Propagate some edits to ch4 snapshot
- Suggestions from tech review
- Propagate edits to src
- Propagate edits back to nostarch version
- Clarify sentences about lock types. Fixes rust-lang/book#2937.
- Edits to edits to chapter 16
- Edits from nostarch for chapter 16
- Propagate nostarch edits back to src
- Add words to dictionary
- Propagating edits back to the nostarch snapshot
- Small wording change. Fixes rust-lang/book#3112.
- Clarify the kind of manual cleanup meant here
- Edits to edits to chapter 15
- Edits from nostarch
- Add missing word
- Improve sentence structure
- fix unidiomatic new functions in chapter 15
- Propagate nostarch ch14 to src
- Update a link and the -p publishing instructions
- Actually, I don't think we need to show the command output here
- Edits to edits to chapter 14
- Update manual regeneration instructions
- Reflect the addition of the -p flag in Cargo 1.56 in chapter 14
- Change polarity and names of variables in env var section
- Propagate nostarch edits back to ch 12
- Change environment variable and field name to perhaps be less confusing
- Responses to nostarch edits
- Merge remote-tracking branch 'origin/ch13'
- Fix rust-lang/book#3002 use noplayground with common.rs
- Propagate ch3 edits to src
- Updating chapter 3 to use new println style
- Specify loop label format. Fixes rust-lang/book#3105.
- Clarify function definition must be in an accessible scope. Fixes rust-lang/book#3003
- Addressing tech review comments, propagating other changes
- Comments from tech review
- Chapter 3, section 2 - Add explicit type annotation to example of scalar type char.

## rust-by-example

6 commits in 44a80e8d8bfc5881c9bd69a2cb3a570776ee4181..e9f93cfcf410bc092c9107b8a41a82f144c761f2
2022-04-19 07:46:28 -0300 to 2022-05-08 18:24:06 -0300
- Add empty slice example (rust-lang/rust-by-example#1538)
- Enhancement/print (rust-lang/rust-by-example#1536)
- Update cast.md (rust-lang/rust-by-example#1521)
- Update iter_any.md (rust-lang/rust-by-example#1522)
- Update tuples.md (rust-lang/rust-by-example#1524)
- fix indent in fs.md (rust-lang/rust-by-example#1535)

## rustc-dev-guide

8 commits in 043e60f4f191651e9f8bf52fa32df14defbb23d9..0c02acdb6f48f03907a02ea8e537c3272b4fde9f
2022-04-20 18:57:49 +0900 to 2022-05-10 09:45:31 -0300
- Update overview.md (rust-lang/rustc-dev-guide#1351)
- Update date references on parallel-rustc (rust-lang/rustc-dev-guide#1348)
- mention `WithOptConstParam` (rust-lang/rustc-dev-guide#1346)
- Fix format (rust-lang/rustc-dev-guide#1349)
- correct type of SubstsRef (rust-lang/rustc-dev-guide#1347)
- Document ErrorGuaranteed (rust-lang/rustc-dev-guide#1316)
- Edit "What the compiler does to your code" (rust-lang/rustc-dev-guide#1306)
- Update some date refs

2 years agorustc_log: add env var to set verbose entry/exit behavior
Ralf Jung [Wed, 11 May 2022 07:14:31 +0000 (09:14 +0200)]
rustc_log: add env var to set verbose entry/exit behavior

2 years agoAuto merge of #96931 - JohnTitor:rollup-3um8o4j, r=JohnTitor
bors [Wed, 11 May 2022 06:29:04 +0000 (06:29 +0000)]
Auto merge of #96931 - JohnTitor:rollup-3um8o4j, r=JohnTitor

Rollup of 7 pull requests

Successful merges:

 - #96543 (Remove hacks in `make_token_stream`.)
 - #96887 (rustdoc: correct path to type alias methods)
 - #96896 (Add regression test for #68408)
 - #96900 (Fix js error)
 - #96903 (Use lifetimes on type-alias-impl-trait used in function signatures to infer output type lifetimes)
 - #96916 (simplify length count)
 - #96925 (Fix issue #95151)

Failed merges:

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

2 years agoGracefully fail to resolve associated items instead of `delay_span_bug`.
Camille GILLOT [Sun, 1 May 2022 09:03:14 +0000 (11:03 +0200)]
Gracefully fail to resolve associated items instead of `delay_span_bug`.

2 years agoUpdate books
Eric Huss [Wed, 11 May 2022 05:27:45 +0000 (22:27 -0700)]
Update books

2 years agoto_timespec could be unused by some targets
Sébastien Marie [Wed, 11 May 2022 04:51:09 +0000 (04:51 +0000)]
to_timespec could be unused by some targets

2 years agoavoid using both Some() and ? on linux/android/freebsd code
Sébastien Marie [Wed, 11 May 2022 04:50:48 +0000 (04:50 +0000)]
avoid using both Some() and ? on linux/android/freebsd code

2 years agoopenbsd: convert futex timeout managment to Timespec usage
Sébastien Marie [Wed, 11 May 2022 04:50:23 +0000 (04:50 +0000)]
openbsd: convert futex timeout managment to Timespec usage

2 years agoRollup merge of #96925 - c410-f3r:z-errors, r=JohnTitor
Yuki Okushi [Wed, 11 May 2022 04:16:35 +0000 (13:16 +0900)]
Rollup merge of #96925 - c410-f3r:z-errors, r=JohnTitor

Fix issue #95151

Fixes  #95151

Nothing special here, just a test for a thing that used to ICE.

2 years agoRollup merge of #96916 - matthiaskrgr:simpl_count, r=compiler-errors
Yuki Okushi [Wed, 11 May 2022 04:16:34 +0000 (13:16 +0900)]
Rollup merge of #96916 - matthiaskrgr:simpl_count, r=compiler-errors

simplify length count

2 years agoRollup merge of #96903 - oli-obk:opaque_type_lifetime_constraints, r=compiler-errors
Yuki Okushi [Wed, 11 May 2022 04:16:34 +0000 (13:16 +0900)]
Rollup merge of #96903 - oli-obk:opaque_type_lifetime_constraints, r=compiler-errors

Use lifetimes on type-alias-impl-trait used in function signatures to infer output type lifetimes

fixes https://github.com/rust-lang/rust/issues/96564

TLDR:

```rust
fn execute(ty: Ty<'_>) -> &str { todo!() }
```

(`Ty` being a type alias impl trait) used to produce the following error before this PR

```
error[E0581]: return type references an anonymous lifetime, which is not constrained by the fn input types
 --> src/lib.rs:4:27
  |
4 | fn execute(ty: Ty<'_>) -> &str { todo!() }
  |                           ^^^^
  |
  = note: lifetimes appearing in an associated type are not considered constrained
```

2 years agoRollup merge of #96900 - GuillaumeGomez:fix-js-error, r=notriddle
Yuki Okushi [Wed, 11 May 2022 04:16:33 +0000 (13:16 +0900)]
Rollup merge of #96900 - GuillaumeGomez:fix-js-error, r=notriddle

Fix js error

On the source code pages, we get a JS error:

![Screenshot from 2022-05-10 16-26-53](https://user-images.githubusercontent.com/3050060/167656292-51e0b0e9-6b0c-4f94-82e0-dd8fb77adf52.png)

It's fixed in the first commit. The second one is removing an unused CSS rule and the third one is a little cleanup of a GUI test.

cc ``@jsha``
r? ``@notriddle``

2 years agoRollup merge of #96896 - JohnTitor:issue-68408, r=compiler-errors
Yuki Okushi [Wed, 11 May 2022 04:16:32 +0000 (13:16 +0900)]
Rollup merge of #96896 - JohnTitor:issue-68408, r=compiler-errors

Add regression test for #68408

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

2 years agoRollup merge of #96887 - notriddle:notriddle/as-raw-fd, r=jsha
Yuki Okushi [Wed, 11 May 2022 04:16:31 +0000 (13:16 +0900)]
Rollup merge of #96887 - notriddle:notriddle/as-raw-fd, r=jsha

rustdoc: correct path to type alias methods

Fixes #83991

2 years agoRollup merge of #96543 - nnethercote:rm-make_token_stream-hacks, r=Aaron1011
Yuki Okushi [Wed, 11 May 2022 04:16:30 +0000 (13:16 +0900)]
Rollup merge of #96543 - nnethercote:rm-make_token_stream-hacks, r=Aaron1011

Remove hacks in `make_token_stream`.

`make_tokenstream` has three commented hacks, and a comment at the top
referring to #67062. These hacks have no observable effect, at least as judged
by running the test suite. The hacks were added in #82608, with an explanation
[here](https://github.com/rust-lang/rust/pull/82608#issuecomment-812877329). It
appears that one of the following is true: (a) they never did anything useful,
(b) they do something useful but we have no test coverage for them, or (c)
something has changed in the meantime that means they are no longer necessary.

This commit removes the hacks and the comments, in the hope that (b) is not
true.

r? `@Aaron1011`

2 years agoAuto merge of #96888 - Aaron1011:fake-borrow-no-sort, r=petrochenkov
bors [Wed, 11 May 2022 04:09:45 +0000 (04:09 +0000)]
Auto merge of #96888 - Aaron1011:fake-borrow-no-sort, r=petrochenkov

Use `FxIndexSet` to avoid sorting fake borrows

This fixes #96449, but I haven't yet been able to
make the reproducer work using `#[cfg]` attributes,
so we can't use the 'revision' infra to write a test

The previous implementation relied on sorting by `PlaceRef`.
This requires sorting by a `DefId`, which uses untracked state
(see #93315)

2 years agoAuto merge of #96375 - jyn514:bootstrap-submodules, r=Mark-Simulacrum
bors [Wed, 11 May 2022 00:41:50 +0000 (00:41 +0000)]
Auto merge of #96375 - jyn514:bootstrap-submodules, r=Mark-Simulacrum

Fix running bootstrap tests on a fresh clone

In #96303, I changed the tests not to manage submodules, with the main
goal of avoiding a clone for llvm-project. Unfortunately, there are some tests
which depend on submodules - I didn't notice locally because they were already checked out for me,
and CI doesn't use submodule handling at all. Fresh clones, however, were impacted:
```
failures:

---- builder::tests::defaults::doc_default stdout ----
thread 'main' panicked at 'fs::read_dir(builder.src.join(&relative_path).join("redirects")) failed with No such file or directory (os error 2)', src/bootstrap/doc.rs:232:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- builder::tests::dist::dist_only_cross_host stdout ----
thread 'main' panicked at 'fs::read_to_string(&toml_file_name) failed with No such file or directory (os error 2)', src/bootstrap/lib.rs:1314:20
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

Try and get the best of both worlds by only checking out the submodules actually used in tests.

2 years agoRemove some unnecessary invisible delimiter checks.
Nicholas Nethercote [Wed, 11 May 2022 00:14:49 +0000 (10:14 +1000)]
Remove some unnecessary invisible delimiter checks.

These seem to have no useful effect... they don't seem useful from a
code inspection point of view, and they affect anything in the test
suite.

2 years agoIgnore order
Michael Howell [Tue, 10 May 2022 23:42:48 +0000 (16:42 -0700)]
Ignore order

This isn't an ordering test really, anyway...

2 years agoFix running bootstrap tests on a fresh clone
Joshua Nelson [Mon, 25 Apr 2022 00:53:06 +0000 (19:53 -0500)]
Fix running bootstrap tests on a fresh clone

In #96303, I changed the tests not to manage submodules, with the main
goal of avoiding a clone for llvm-project. Unfortunately, there are some tests
which depend on submodules - I didn't notice locally because they were already checked out for me,
and CI doesn't use submodule handling at all. Fresh clones, however, were impacted:
```
failures:

---- builder::tests::defaults::doc_default stdout ----
thread 'main' panicked at 'fs::read_dir(builder.src.join(&relative_path).join("redirects")) failed with No such file or directory (os error 2)', src/bootstrap/doc.rs:232:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- builder::tests::dist::dist_only_cross_host stdout ----
thread 'main' panicked at 'fs::read_to_string(&toml_file_name) failed with No such file or directory (os error 2)', src/bootstrap/lib.rs:1314:20
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

Try and get the best of both worlds by only checking out the submodules actually used in tests.

2 years agoFix issue #95151
Caio [Tue, 10 May 2022 21:29:35 +0000 (18:29 -0300)]
Fix issue #95151

2 years agoAuto merge of #96232 - sunfishcode:sunfishcode/io-safety-const-fns, r=joshtriplett
bors [Tue, 10 May 2022 21:19:19 +0000 (21:19 +0000)]
Auto merge of #96232 - sunfishcode:sunfishcode/io-safety-const-fns, r=joshtriplett

Make `BorrowedFd::borrow_raw` a const fn.

Making `BorrowedFd::borrow_raw` a const fn allows it to be used to
create a constant `BorrowedFd<'static>` holding constants such as
`AT_FDCWD`. This will allow [`rustix::fs::cwd`] to become a const fn.

For consistency, make similar changes to `BorrowedHandle::borrow_raw`
and `BorrowedSocket::borrow_raw`.

[`rustix::fs::cwd`]: https://docs.rs/rustix/latest/rustix/fs/fn.cwd.html

r? `@joshtriplett`

2 years agosimplify length count
Matthias Krüger [Tue, 10 May 2022 18:42:45 +0000 (20:42 +0200)]
simplify length count

2 years agoAuto merge of #96905 - jyn514:revert-96803-faster-assemble, r=Mark-Simulacrum
bors [Tue, 10 May 2022 18:26:31 +0000 (18:26 +0000)]
Auto merge of #96905 - jyn514:revert-96803-faster-assemble, r=Mark-Simulacrum

Revert "Make "Assemble stage1 compiler" orders of magnitude faster"

Reverts rust-lang/rust#96803. This caused `llvm-tools-nightly` to fail when installing with `rustup-toolchain-install-master` because of the presence of symlinks. I'm not sure how the symlinks got in there, but revert the PR for now while I figure it out.

r? `@Mark-Simulacrum` cc `@RalfJung`

2 years agoAlso allow unused macro rules in stdarch
est31 [Fri, 6 May 2022 18:54:33 +0000 (20:54 +0200)]
Also allow unused macro rules in stdarch

2 years agorustdoc: clean up method path index
Michael Howell [Tue, 10 May 2022 15:59:59 +0000 (08:59 -0700)]
rustdoc: clean up method path index

This removes a special case that doesn't seem to do anything
any more.

2 years agoRevert "Make "Assemble stage1 compiler" orders of magnitude faster"
Joshua Nelson [Tue, 10 May 2022 15:58:52 +0000 (10:58 -0500)]
Revert "Make "Assemble stage1 compiler" orders of magnitude faster"

2 years agoAuto merge of #96904 - JohnTitor:rollup-f1sz5x0, r=JohnTitor
bors [Tue, 10 May 2022 15:58:17 +0000 (15:58 +0000)]
Auto merge of #96904 - JohnTitor:rollup-f1sz5x0, r=JohnTitor

Rollup of 6 pull requests

Successful merges:

 - #96717 (Handle mismatched generic param kinds in trait impls betterly)
 - #96725 (Expose process windows_process_extensions_main_thread_handle on Windows)
 - #96849 (Move some tests to more reasonable places)
 - #96861 (Use Rust 2021 prelude in std itself.)
 - #96879 (rustdoc: search result ranking fix)
 - #96882 (Don't subst an AdtDef with its own substs)

Failed merges:

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

2 years agoRollup merge of #96882 - jackh726:no-subst, r=oli-obk
Yuki Okushi [Tue, 10 May 2022 15:09:36 +0000 (00:09 +0900)]
Rollup merge of #96882 - jackh726:no-subst, r=oli-obk

Don't subst an AdtDef with its own substs

2 years agoRollup merge of #96879 - notriddle:notriddle/search-ranking, r=GuillaumeGomez
Yuki Okushi [Tue, 10 May 2022 15:09:35 +0000 (00:09 +0900)]
Rollup merge of #96879 - notriddle:notriddle/search-ranking, r=GuillaumeGomez

rustdoc: search result ranking fix

# Before

![image](https://user-images.githubusercontent.com/1593513/167477286-91049761-67f9-4a73-8fb7-09dbb19ca76c.png)

# After

![image](https://user-images.githubusercontent.com/1593513/167477345-6733bc0f-4bb2-4625-9f7f-094031e36414.png)

2 years agoRollup merge of #96861 - m-ou-se:std-use-prelude-2021, r=joshtriplett
Yuki Okushi [Tue, 10 May 2022 15:09:34 +0000 (00:09 +0900)]
Rollup merge of #96861 - m-ou-se:std-use-prelude-2021, r=joshtriplett

Use Rust 2021 prelude in std itself.

2 years agoRollup merge of #96849 - c410-f3r:z-errors, r=petrochenkov
Yuki Okushi [Tue, 10 May 2022 15:09:33 +0000 (00:09 +0900)]
Rollup merge of #96849 - c410-f3r:z-errors, r=petrochenkov

Move some tests to more reasonable places

cc https://github.com/rust-lang/rust/issues/73494
r? `@petrochenkov`

2 years agoRollup merge of #96725 - nico-abram:win_tid, r=ChrisDenton
Yuki Okushi [Tue, 10 May 2022 15:09:32 +0000 (00:09 +0900)]
Rollup merge of #96725 - nico-abram:win_tid, r=ChrisDenton

Expose process windows_process_extensions_main_thread_handle on Windows

~~I did not find any tests in https://github.com/rust-lang/rust/blob/7d3e03666a93bd2b0f78b3933f9305832af771a5/library/std/src/sys/windows/process/tests.rs that actually launch processes, so I haven't added tests for this.~~ I ran the following locally, to check that it works as expected:
```rs
#![feature(windows_process_extensions_main_thread_handle)]

fn main() {
    use std::os::windows::process::{ChildExt, CommandExt};
    const CREATE_SUSPENDED: u32 = 0x00000004;

    let proc = std::process::Command::new("cmd")
        .args(["/C", "echo hello"])
        .creation_flags(CREATE_SUSPENDED)
        .spawn()
        .unwrap();

    extern "system" {
        fn ResumeThread(_: *mut std::ffi::c_void) -> u32;
    }
    unsafe {
        ResumeThread(proc.main_thread_handle());
    }

    let output = proc.wait_with_output().unwrap();
    let str_output = std::str::from_utf8(&output.stdout[..]).unwrap();
    println!("{}", str_output);
}

```

Without the feature attribute it wouldn't compile, and commenting the `ResumeThread` line makes it hang forever, showing that it works.

Trakcing issue https://github.com/rust-lang/rust/issues/96723

2 years agoRollup merge of #96717 - BoxyUwU:gats_const_param_types_mismatch_err, r=lcnr
Yuki Okushi [Tue, 10 May 2022 15:09:31 +0000 (00:09 +0900)]
Rollup merge of #96717 - BoxyUwU:gats_const_param_types_mismatch_err, r=lcnr

Handle mismatched generic param kinds in trait impls betterly

- Check that generic params on a generic associated type are the same as in the trait definition
- Check that const generics are not used in place of type generics (and the other way round too)

r? `@lcnr`

2 years agoUse lifetimes on type-alias-impl-trait used in function signatures to infer output...
Oli Scherer [Tue, 10 May 2022 14:50:31 +0000 (14:50 +0000)]
Use lifetimes on type-alias-impl-trait used in function signatures to infer output type lifetimes

2 years agoClean up rustdoc GUI test
Guillaume Gomez [Tue, 10 May 2022 14:42:34 +0000 (16:42 +0200)]
Clean up rustdoc GUI test

2 years agoRemove unused CSS rule
Guillaume Gomez [Tue, 10 May 2022 14:40:32 +0000 (16:40 +0200)]
Remove unused CSS rule

2 years agoFix JS error in source code pages
Guillaume Gomez [Tue, 10 May 2022 14:40:14 +0000 (16:40 +0200)]
Fix JS error in source code pages

2 years agoAuto merge of #96736 - oli-obk:tait_missing_wf_check, r=davidtwco
bors [Tue, 10 May 2022 13:39:43 +0000 (13:39 +0000)]
Auto merge of #96736 - oli-obk:tait_missing_wf_check, r=davidtwco

Check hidden types for well formedness at the definition site instead of only at the opaque type itself

work towards #90409 . We'll need to look into closure and generator bodies of closures and generators nested inside the hidden type in order to fix that. In hindsight this PR is not necessary for that, but it may be a bit easier with it and we'll get better diagnostics from it on its own.

2 years agofmt
Ralf Jung [Tue, 10 May 2022 12:38:00 +0000 (14:38 +0200)]
fmt

2 years agoupdate/remove some old comments
Ralf Jung [Tue, 10 May 2022 11:28:22 +0000 (13:28 +0200)]
update/remove some old comments

2 years agoeven tighter checks for layouts on immediate field projections
Ralf Jung [Tue, 10 May 2022 11:24:39 +0000 (13:24 +0200)]
even tighter checks for layouts on immediate field projections

2 years agodisable one check for now until #96185 is fixed
Ralf Jung [Tue, 10 May 2022 11:16:00 +0000 (13:16 +0200)]
disable one check for now until #96185 is fixed

2 years agoAdd regression test for #68408
Yuki Okushi [Tue, 10 May 2022 11:52:01 +0000 (20:52 +0900)]
Add regression test for #68408

2 years agotighten sanity checks around Scalar and ScalarPair
Ralf Jung [Tue, 19 Apr 2022 18:12:21 +0000 (14:12 -0400)]
tighten sanity checks around Scalar and ScalarPair

2 years agoAuto merge of #94799 - lcnr:list-ty-perf, r=petrochenkov
bors [Tue, 10 May 2022 10:53:47 +0000 (10:53 +0000)]
Auto merge of #94799 - lcnr:list-ty-perf, r=petrochenkov

update `hash_stable` for `List<Ty<'tcx>>`

cc https://github.com/rust-lang/rust/pull/93505#issuecomment-1047538798

this is the hottest part changed since the pre-merge perf run

2 years agoAuto merge of #96891 - Dylan-DPC:rollup-echa4wg, r=Dylan-DPC
bors [Tue, 10 May 2022 08:12:50 +0000 (08:12 +0000)]
Auto merge of #96891 - Dylan-DPC:rollup-echa4wg, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #93661 (Add missing rustc arg docs)
 - #96674 (docs: add link explaining variance to NonNull docs)
 - #96812 (Do not lint on explicit outlives requirements from external macros.)
 - #96823 (Properly fix #96638)
 - #96872 (make sure ScalarPair enums have ScalarPair variants; add some layout sanity checks)

Failed merges:

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

2 years agoCheck hidden types for well formedness at the definition site instead of only at...
Oli Scherer [Thu, 5 May 2022 14:14:06 +0000 (14:14 +0000)]
Check hidden types for well formedness at the definition site instead of only at the opaque type itself

2 years agoRollup merge of #96872 - RalfJung:layout-sanity, r=eddyb
Dylan DPC [Tue, 10 May 2022 06:24:05 +0000 (08:24 +0200)]
Rollup merge of #96872 - RalfJung:layout-sanity, r=eddyb

make sure ScalarPair enums have ScalarPair variants; add some layout sanity checks

`@eddyb` suggested that it might be reasonable for `ScalarPair` enums to simply adjust the ABI of their variants accordingly, such that the layout invariant Miri expects actually holds. This PR implements that. I should note though that I don't know much about this layout computation code and what non-Miri consumers expect from it, so tread with caution!

I also added a function to sanity-check that computed layouts are internally consistent. This helped a lot in figuring out the final shape of this PR, though I am also not 100% sure that these sanity checks are the right ones.

Cc `@oli-obk`
Fixes https://github.com/rust-lang/rust/issues/96221

2 years agoRollup merge of #96823 - jackh726:params-heuristics-fix, r=estebank
Dylan DPC [Tue, 10 May 2022 06:24:04 +0000 (08:24 +0200)]
Rollup merge of #96823 - jackh726:params-heuristics-fix, r=estebank

Properly fix #96638

Closes #96638

The main part of this change is `Error::Invalid` now returns both the input and arg indices. However, I realized the code here was kind of confusing and not internally consistent (and thus I was having trouble getting the right behavior). So I've also switched `input_indices` and `arg_indices` to more closely match some naming in `checks` (although I think a more thorough cleanup there could be beneficial). I've added comments, but essentially `input_indices` refers to *user provided* inputs and `arg_indices` refers to *expected* args.

2 years agoRollup merge of #96812 - cjgillot:no-lint-outllives-macro, r=petrochenkov
Dylan DPC [Tue, 10 May 2022 06:24:03 +0000 (08:24 +0200)]
Rollup merge of #96812 - cjgillot:no-lint-outllives-macro, r=petrochenkov

Do not lint on explicit outlives requirements from external macros.

The current implementation of the list rightfully skipped where predicates from external macros.
However, if the where predicate came from the current macro but the bounds were from an external macro, the lint still fired.

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

2 years agoRollup merge of #96674 - bstrie:vardoc, r=thomcc
Dylan DPC [Tue, 10 May 2022 06:24:02 +0000 (08:24 +0200)]
Rollup merge of #96674 - bstrie:vardoc, r=thomcc

docs: add link explaining variance to NonNull docs

2 years agoRollup merge of #93661 - ehuss:add-missing-rustc-arg-docs, r=estebank,Mark-Simulacrum
Dylan DPC [Tue, 10 May 2022 06:24:00 +0000 (08:24 +0200)]
Rollup merge of #93661 - ehuss:add-missing-rustc-arg-docs, r=estebank,Mark-Simulacrum

Add missing rustc arg docs

Add documentation for recently added rustc args

`-C symbol-mangling-version` was stabilized in #90128.
`--json=future-incompat` was stabilized in #91535.

2 years agoExpose process main_thread_handle on Windows
unknown [Tue, 10 May 2022 05:41:19 +0000 (02:41 -0300)]
Expose process main_thread_handle on Windows

2 years agoAuto merge of #96808 - cjgillot:impossible-trait, r=compiler-errors
bors [Tue, 10 May 2022 05:27:54 +0000 (05:27 +0000)]
Auto merge of #96808 - cjgillot:impossible-trait, r=compiler-errors

Detect trait fulfillment in `subst_and_check_impossible_predicates`

Split from https://github.com/rust-lang/rust/pull/91743
r? `@compiler-errors`

2 years agoAuto merge of #96803 - jyn514:faster-assemble, r=Mark-Simulacrum
bors [Tue, 10 May 2022 03:11:05 +0000 (03:11 +0000)]
Auto merge of #96803 - jyn514:faster-assemble, r=Mark-Simulacrum

Make "Assemble stage1 compiler" orders of magnitude faster

This used to take upwards of 5 seconds for me locally. I found that the culprit was copying the downloaded LLVM shared object:
```
[22:28:03] Install "/home/jnelson/rust-lang/rust/build/x86_64-unknown-linux-gnu/ci-llvm/lib/libLLVM-14-rust-1.62.0-nightly.so" to "/home/jnelson/rust-lang/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib/libLLVM-14-rust-1.62.0-nightly.so"
[22:28:09]   c Sysroot { compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu(x86_64-unknown-linux-gnu) } }
```

It turned out that `install()` used full copies unconditionally. Change it to try using a hard-link before falling back to copying.

2 years agoUse `FxIndexSet` to avoid sorting fake borrows
Aaron Hill [Tue, 10 May 2022 02:27:47 +0000 (22:27 -0400)]
Use `FxIndexSet` to avoid sorting fake borrows

This fixes #96449, but I haven't yet been able to
make the reproducer work using `#[cfg]` attributes,
so we can't use the 'revision' infra to write a test

The previous implementation relied on sorting by `PlaceRef`.
This requires sorting by a `DefId`, which uses untracked state
(see #93315)

2 years agorustdoc: correct path to type alias methods
Michael Howell [Tue, 10 May 2022 00:50:39 +0000 (17:50 -0700)]
rustdoc: correct path to type alias methods

2 years agoAuto merge of #96715 - cjgillot:trait-alias-loop, r=compiler-errors
bors [Tue, 10 May 2022 00:40:57 +0000 (00:40 +0000)]
Auto merge of #96715 - cjgillot:trait-alias-loop, r=compiler-errors

Fortify handing of where bounds on trait & trait alias definitions

Closes https://github.com/rust-lang/rust/issues/96664
Closes https://github.com/rust-lang/rust/issues/96665

Since https://github.com/rust-lang/rust/pull/93803, when listing all bounds and predicates we now need to account for the possible presence of predicates on any of the generic parameters.  Both bugs were hidden by the special handling of bounds at  the generic parameter declaration position.

Trait alias expansion used to confuse predicates on `Self` and where predicates.
Exiting too late when listing all the bounds caused a cycle error.

2 years agoAuto merge of #96838 - tmiasko:lazy-switch-sources, r=oli-obk
bors [Mon, 9 May 2022 22:15:30 +0000 (22:15 +0000)]
Auto merge of #96838 - tmiasko:lazy-switch-sources, r=oli-obk

Optimize switch sources representation and usage

* Avoid constructing switch sources unless necessary - switch sources are used by backward analysis with a custom switch int edge effects, but are otherwise unnecessarily computed.
* Use sparse representation of switch sources to avoid quadratic space overhead.

2 years agoDon't subst an adt def
Jack Huey [Mon, 9 May 2022 20:04:31 +0000 (16:04 -0400)]
Don't subst an adt def

2 years agoAuto merge of #96473 - lcnr:querify-codegen-fn-attrs, r=cjgillot
bors [Mon, 9 May 2022 19:52:59 +0000 (19:52 +0000)]
Auto merge of #96473 - lcnr:querify-codegen-fn-attrs, r=cjgillot

store `codegen_fn_attrs` in crate metadata

extracted from #95562 because the change isn't trivial.