bors
aef17b7ae6
Auto merge of #105421 - jacobbramley:jb/branch-prot-check, r=nagisa
...
Check AArch64 branch-protection earlier in the pipeline.
As suggested in #93516 .
r? `@nagisa`
2022-12-17 12:10:27 +00:00
Matthias Krüger
905caed79e
Rollup merge of #105785 - JohnTitor:issue-55976-2, r=compiler-errors
...
Add regression test for #55976
Closes #55976
r? `@compiler-errors`
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-12-17 09:25:53 +01:00
bors
74699b82ca
Auto merge of #105811 - ojeda:Dwarnings-no_fp_fmt_parse, r=Mark-Simulacrum
...
core: ensure `no_fp_fmt_parse` builds are warning-free
Rust recently introduced a new `unused_imports` warning in `no_fp_fmt_parse` builds, which was fixed in
https://github.com/rust-lang/rust/pull/105434 .
To avoid accumulating more over time, let's keep the builds warning-free. This ensures projects compiling `core` with this custom config do not see the warnings in the future and that they can keep enabling `-Dwarnings`.
Similarly, https://github.com/rust-lang/rust/pull/98652 did it for `alloc`'s `no_global_oom_handling`.
2022-12-17 03:11:39 +00:00
bors
998e1a91db
Auto merge of #105804 - matthiaskrgr:rollup-iaqlbl3, r=matthiaskrgr
...
Rollup of 6 pull requests
Successful merges:
- #105493 (Help rust-analyzer normalize query return types)
- #105710 (Don't bug if we're trying to cast `dyn*` to another type)
- #105711 (bail in `collect_trait_impl_trait_tys` if signatures reference errors)
- #105768 (Detect inherent associated types not having CamelCase)
- #105780 (rustdoc: Don't add "Read more" link if there is no extra content)
- #105802 (Make enum-match.rs test robust against variable name changes)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-17 00:41:15 +00:00
Matthias Krüger
803ce455a3
Rollup merge of #105802 - chbaker0:enum-match-filecheck, r=tmiasko
...
Make enum-match.rs test robust against variable name changes
https://reviews.llvm.org/D140192 caused the LLVM variable generated for enum discriminant checks to be named differently (%narrow vs %1).
This adjusts the test CHECK directives to match any name.
2022-12-17 00:45:54 +01:00
Matthias Krüger
11de52a46d
Rollup merge of #105780 - GuillaumeGomez:read-more-links, r=notriddle
...
rustdoc: Don't add "Read more" link if there is no extra content
Fixes #105677 .
2022-12-17 00:45:53 +01:00
Matthias Krüger
81c11892a9
Rollup merge of #105768 - fee1-dead-contrib:iat-style, r=eholk
...
Detect inherent associated types not having CamelCase
Fixes #105341 .
2022-12-17 00:45:52 +01:00
Matthias Krüger
a6c6a8d216
Rollup merge of #105711 - compiler-errors:rpitit-references-errors, r=eholk
...
bail in `collect_trait_impl_trait_tys` if signatures reference errors
Fixes #105290
2022-12-17 00:45:52 +01:00
Matthias Krüger
86bbc20146
Rollup merge of #105710 - compiler-errors:dyn-star-rigid-cast, r=eholk
...
Don't bug if we're trying to cast `dyn*` to another type
Fixes #105097
2022-12-17 00:45:51 +01:00
Miguel Ojeda
af7f2222d3
core: ensure no_fp_fmt_parse builds are warning-free
...
Rust recently introduced a new `unused_imports` warning
in `no_fp_fmt_parse` builds, which was fixed in
https://github.com/rust-lang/rust/pull/105434 .
To avoid accumulating more over time, let's keep the builds
warning-free. This ensures projects compiling `core` with
this custom config do not see the warnings in the future
and that they can keep enabling `-Dwarnings`.
Similarly, https://github.com/rust-lang/rust/pull/98652 did it
for `alloc`'s `no_global_oom_handling`.
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2022-12-17 00:19:59 +01:00
Collin Baker
8751d3b2e9
Make enum-match.rs test robust against variable name changes
...
https://reviews.llvm.org/D140192 caused the LLVM variable generated
for enum discriminant checks to be named differently (%narrow vs %1).
This adjusts the test CHECK directives to match any name.
2022-12-16 17:32:29 -05:00
bors
bbb9cfbbc5
Auto merge of #102318 - Amanieu:default_alloc_error_handler, r=oli-obk
...
Stabilize default_alloc_error_handler
Tracking issue: #66741
This turns `feature(default_alloc_error_handler)` on by default, which causes the compiler to automatically generate a default OOM handler which panics if `#[alloc_error_handler]` is not provided.
The FCP completed over 2 years ago but the stabilization was blocked due to an issue with unwinding. This was fixed by #88098 so stabilization can be unblocked.
Closes #66741
2022-12-16 21:08:45 +00:00
bors
63b3bac77c
Auto merge of #105775 - matthiaskrgr:rollup-2o8qn7e, r=matthiaskrgr
...
Rollup of 8 pull requests
Successful merges:
- #105725 (Allow `impl ~const Trait` opaque types)
- #105744 (Rewrite `E0158` error-code docs for clarity)
- #105747 (Fix ICE calling method on auto trait)
- #105748 (doc: Fix a few small issues)
- #105756 (rustdoc: simplify CSS for codeblock tooltips)
- #105757 (rustdoc: remove unused CSS `.sub-settings`)
- #105764 (rustdoc: name the source page sidebar-toggle `#src-sidebar-toggle`)
- #105774 (Remove unused stderr files)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-16 15:12:00 +00:00
Deadbeef
08a0e71ec9
Detect inherent associated types not having CamelCase
...
Fixes #105341 .
2022-12-16 14:45:04 +00:00
Guillaume Gomez
80059e1b72
Add test for presence of read more links
2022-12-16 14:52:35 +01:00
Matthias Krüger
8e35aad446
Rollup merge of #105774 - TaKO8Ki:remove-unused-stderr-files, r=tmiasko
...
Remove unused stderr files
2022-12-16 14:02:21 +01:00
Matthias Krüger
d30057b797
Rollup merge of #105764 - notriddle:notriddle/src-sidebar-toggle, r=GuillaumeGomez
...
rustdoc: name the source page sidebar-toggle `#src-sidebar-toggle`
The old name doesn't get across where it's really supposed to be used.
2022-12-16 14:02:20 +01:00
Matthias Krüger
0820bb2826
Rollup merge of #105756 - notriddle:notriddle/example-wrap-tooltip, r=GuillaumeGomez
...
rustdoc: simplify CSS for codeblock tooltips
Instead of making its parts `display: none` and then changing it on hover, just make the pseudo-element itself on hover.
2022-12-16 14:02:19 +01:00
Matthias Krüger
cc04e97cfb
Rollup merge of #105747 - chenyukang:yukang/fix-105732-auto-trait, r=compiler-errors
...
Fix ICE calling method on auto trait
Fixes #105732
r? `@compiler-errors`
2022-12-16 14:02:18 +01:00
Matthias Krüger
22797ef6b2
Rollup merge of #105725 - fee1-dead-contrib:allow-impl-const-trait, r=oli-obk
...
Allow `impl ~const Trait` opaque types
2022-12-16 14:02:17 +01:00
bors
03770f0e2b
Auto merge of #103880 - b-naber:field-ty-mir, r=lcnr
...
Use non-ascribed type as field's type in mir
Fixes https://github.com/rust-lang/rust/issues/96514
r? `@lcnr`
2022-12-16 12:47:49 +00:00
Takayuki Maeda
75ebd691c8
remove unused stderr files
2022-12-16 20:55:06 +09:00
bors
39b2a41b39
Auto merge of #104334 - compiler-errors:ufcs-sugg-wrong-def-id, r=estebank
...
Use impl's def id when calculating type to specify in UFCS
Fixes #104327
Fixes #104328
Also addresses https://github.com/rust-lang/rust/pull/102670#discussion_r987381197
2022-12-16 03:57:10 +00:00
Michael Howell
a84483eb59
rustdoc: name the source page sidebar-toggle #src-sidebar-toggle
...
The old name doesn't get across where it's really supposed to be used.
2022-12-15 16:29:52 -07:00
bors
7a6af2711b
Auto merge of #105760 - matthiaskrgr:rollup-r8beo9w, r=matthiaskrgr
...
Rollup of 8 pull requests
Successful merges:
- #105481 (Start improving monomorphization items stats)
- #105674 (Point at method chains on `E0271` errors)
- #105679 (Suggest constraining type parameter with `Clone`)
- #105694 (Don't create dummy if val has escaping bounds var)
- #105727 (Tweak output for bare `dyn Trait` in arguments)
- #105739 (Migrate Jump to def links background to CSS variable)
- #105743 (`SimplifiedType` cleanups)
- #105758 (Move `TypeckResults` to separate module)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-15 22:53:03 +00:00
yukang
605f77b7d0
fix #105732 , Fix ICE calling method on auto trait
2022-12-16 05:55:26 +08:00
Matthias Krüger
abfad27fbc
Rollup merge of #105727 - estebank:use-impl-trait, r=oli-obk
...
Tweak output for bare `dyn Trait` in arguments
Fix #35825 .
2022-12-15 22:02:59 +01:00
Matthias Krüger
24e584b991
Rollup merge of #105694 - ouz-a:issue_105689, r=estebank
...
Don't create dummy if val has escaping bounds var
Skips creating/pushing obligations if val has escaping bounds vars.
Fixes #105689
2022-12-15 22:02:59 +01:00
Matthias Krüger
86cedb4062
Rollup merge of #105679 - estebank:suggest-clone, r=compiler-errors
...
Suggest constraining type parameter with `Clone`
Fix #34896 .
2022-12-15 22:02:58 +01:00
Matthias Krüger
622f56065e
Rollup merge of #105674 - estebank:iterator-chains, r=oli-obk
...
Point at method chains on `E0271` errors
Follow up to #105332 . Fix #33941 . CC #9082 .
r? `@oli-obk`
2022-12-15 22:02:58 +01:00
Matthias Krüger
863d1f653a
Rollup merge of #105481 - lqd:mono-stats, r=wesleywiser
...
Start improving monomorphization items stats
As described in [this zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/247081-t-compiler.2Fperformance/topic/Compile-time.20case-study.3A.20AWS.20crates/near/314560832 ), some stats about monomorphization collection would be interesting to have, in a different form than `-Zprint-mono-items`: to have some visibility into the cost of the mono items, we'd like to know how many are instantiated and what is their estimated size.
That can be a proxy to analyze sources of slow compile times, although in the future, we'd also like to add more realistic stats from the actual backend's lowering.
This PR adds a new `-Z dump-mono-stats` flag which will output some stats in a `{crate_name}.mono-items.md` file (the flag optionally takes an output directory parameter, for easier use within a workspace than printing to stdout).
For example,
```rust
fn compute<T>(collection: Vec<T>) -> usize {
collection.len() + 19 - 0 * 9 - 18 - 1 * 1 // random code to increase the function's size
}
fn main() {
dbg!(compute(vec![0u8, 1, 2]));
dbg!(compute(vec![0u64, 1, 2]));
dbg!(compute(vec!["0", "1", "2", "3"]));
}
```
will output a file with this markdown table (abridged for readability), for a debug build:
| Item | Instantiation count | Estimated Cost Per Instantiation | Total Estimated Cost |
| --- | ---: | ---: | ---: |
| alloc::alloc::box_free | 3 | 122 | 366 |
| std::alloc::Global::alloc_impl | 1 | 284 | 284 |
| alloc::raw_vec::RawVec::<T, A>::current_memory | 3 | 82 | 246 |
| std::ptr::align_offset | 1 | 222 | 222 |
| std::slice::hack::into_vec | 3 | 67 | 201 |
| <std::vec::Vec<T, A> as std::ops::Drop>::drop | 3 | 66 | 198 |
| std::ptr::mut_ptr::<impl *mut T>::is_null | 4 | 47 | 188 |
| main | 1 | 163 | 163 |
| std::ptr::NonNull::<T>::new_unchecked | 4 | 37 | 148 |
...
<details>
<summary>Click for full output</summary>
| Item | Instantiation count | Estimated Cost Per Instantiation | Total Estimated Cost |
| --- | ---: | ---: | ---: |
| alloc::alloc::box_free | 3 | 122 | 366 |
| std::alloc::Global::alloc_impl | 1 | 284 | 284 |
| alloc::raw_vec::RawVec::<T, A>::current_memory | 3 | 82 | 246 |
| std::ptr::align_offset | 1 | 222 | 222 |
| std::slice::hack::into_vec | 3 | 67 | 201 |
| <std::vec::Vec<T, A> as std::ops::Drop>::drop | 3 | 66 | 198 |
| std::ptr::mut_ptr::<impl *mut T>::is_null | 4 | 47 | 188 |
| main | 1 | 163 | 163 |
| std::ptr::NonNull::<T>::new_unchecked | 4 | 37 | 148 |
| std::boxed::Box::<T, A>::into_unique | 3 | 48 | 144 |
| std::boxed::Box::<T, A>::leak | 3 | 39 | 117 |
| std::alloc::Layout::array::inner | 1 | 107 | 107 |
| std::ptr::align_offset::mod_inv | 1 | 103 | 103 |
| std::boxed::Box::<T, A>::into_raw_with_allocator | 3 | 31 | 93 |
| std::fmt::Arguments::<'a>::new_v1 | 1 | 80 | 80 |
| <alloc::raw_vec::RawVec<T, A> as std::ops::Drop>::drop | 3 | 26 | 78 |
| alloc::raw_vec::RawVec::<T, A>::from_raw_parts_in | 3 | 26 | 78 |
| alloc::alloc::exchange_malloc | 1 | 75 | 75 |
| std::ptr::const_ptr::<impl *const T>::is_null | 1 | 75 | 75 |
| std::ptr::const_ptr::<impl *const T>::is_aligned_to | 1 | 64 | 64 |
| compute | 3 | 20 | 60 |
| std::ptr::const_ptr::<impl *const T>::align_offset | 1 | 55 | 55 |
| std::ptr::read | 1 | 52 | 52 |
| <std::alloc::Global as std::alloc::Allocator>::deallocate | 1 | 50 | 50 |
| std::ptr::mut_ptr::<impl *mut T>::guaranteed_eq | 1 | 48 | 48 |
| std::fmt::ArgumentV1::<'a>::new_display | 2 | 22 | 44 |
| std::ptr::Alignment::new_unchecked | 1 | 42 | 42 |
| core::fmt::num::<impl std::fmt::Debug for usize>::fmt | 1 | 40 | 40 |
| std::result::Result::<T, E>::unwrap_unchecked | 1 | 37 | 37 |
| std::cmp::Ord::min | 1 | 32 | 32 |
| std::cmp::impls::<impl std::cmp::Ord for usize>::cmp | 1 | 31 | 31 |
| std::intrinsics::is_aligned_and_not_null | 1 | 27 | 27 |
| std::rt::lang_start | 1 | 27 | 27 |
| std::ptr::NonNull::<T>::new | 1 | 24 | 24 |
| std::fmt::ArgumentV1::<'a>::new_debug | 1 | 22 | 22 |
| std::fmt::Arguments::<'a>::new_v1_formatted | 1 | 19 | 19 |
| std::rt::lang_start::{closure#0} | 1 | 17 | 17 |
| std::sys_common::backtrace::__rust_begin_short_backtrace | 1 | 16 | 16 |
| std::slice::<impl [T]>::into_vec | 3 | 5 | 15 |
| <std::ptr::NonNull<T> as std::convert::From<std::ptr::Unique<T>>>::from | 1 | 14 | 14 |
| <&T as std::fmt::Debug>::fmt | 1 | 12 | 12 |
| <&T as std::fmt::Display>::fmt | 1 | 12 | 12 |
| std::vec::Vec::<T, A>::len | 3 | 2 | 6 |
| <T as std::convert::Into<U>>::into | 1 | 5 | 5 |
| <T as std::convert::From<T>>::from | 1 | 2 | 2 |
| <() as std::process::Termination>::report | 1 | 2 | 2 |
| std::hint::unreachable_unchecked | 1 | 2 | 2 |
| core::fmt::UnsafeArg::new | 1 | 1 | 1 |
</details>
Since we discussed it together, r? `@wesleywiser.`
2022-12-15 22:02:57 +01:00
bors
ec56537c43
Auto merge of #105356 - JakobDegen:more-custom-mir, r=oli-obk
...
Custom MIR: Many more improvements
Commits are each atomic changes, best reviewed one at a time, with the exception that the last commit includes all the documentation.
### First commit
Unsafetyck was not correctly disabled before for `dialect = "built"` custom MIR. This is fixed and a regression test is added.
### Second commit
Implements `Discriminant`, `SetDiscriminant`, and `SwitchInt`.
### Third commit
Implements indexing, field, and variant projections.
### Fourth commit
Documents the previous commits and everything else.
There is some amount of weirdness here due to having to beat Rust syntax into cooperating with MIR concepts, but it hopefully should not be too much. All of it is documented.
r? `@oli-obk`
2022-12-15 19:59:48 +00:00
Esteban Küber
2492235c32
Consider lifetimes when comparing assoc types in method chain
...
Do not say "Type changed to X here" when the only difference is caused
by lifetimes.
2022-12-15 11:47:40 -08:00
Esteban Küber
3b938f73f3
Trim paths in E0599
2022-12-15 11:47:40 -08:00
Esteban Küber
4d4d4786f9
Shorten trimmed display of closures
...
When `with_forced_trimmed_paths` is used, only print filename and start
of the closure's span, to reduce their verbosity.
2022-12-15 11:13:44 -08:00
Esteban Küber
30ae261c42
Use with_forced_trimmed_paths more
2022-12-15 11:13:44 -08:00
Esteban Küber
294944dfec
Point at method chains on E0271 errors
2022-12-15 11:13:44 -08:00
Michael Howell
f28a8ca1dc
rustdoc: simplify CSS for codeblock tooltips
...
Instead of making its parts `display: none` and then changing it on hover,
just make the pseudo-element itself on hover.
2022-12-15 12:05:27 -07:00
Esteban Küber
e1b340195a
Suggest #[derive(Clone)]
2022-12-15 10:27:05 -08:00
Esteban Küber
f19488064a
Suggest constraining type parameter with Clone
...
Fix #34896 .
2022-12-15 10:15:41 -08:00
bors
4954a7ef5c
Auto merge of #104616 - RalfJung:ctfe-alignment, r=oli-obk,RalfJung
...
always check alignment during CTFE
We originally disabled alignment checks because they got in the way -- there are some things we do with the interpreter during CTFE which does not correspond to actually running user-written code, but is purely administrative, and we didn't want alignment checks there, so we just disabled them entirely. But with `-Zextra-const-ub-checks` we anyway had to figure out how to disable those alignment checks while doing checks in regular code. So now it is easy to enable CTFE alignment checking by default. Let's see what the perf consequences of that are.
r? `@oli-obk`
2022-12-15 17:04:25 +00:00
Oli Scherer
b05c790fd6
Reuse the ctfe error emitting logic for the future incompat lint
2022-12-15 16:48:24 +00:00
Oli Scherer
98dc76a374
Always report alignment failures in future incompat summaries
2022-12-15 16:24:11 +00:00
Oli Scherer
d66824dbc4
Make alignment checks a future incompat lint
2022-12-15 16:07:28 +00:00
Ralf Jung
a575828431
adjust tests
2022-12-15 15:50:15 +00:00
Ralf Jung
fa83763491
always check alignment during CTFE
2022-12-15 15:36:11 +00:00
Deadbeef
a8b9e00518
fix tidy and add rpitit test
2022-12-15 14:18:15 +00:00
bors
984eab57f7
Auto merge of #105746 - matthiaskrgr:rollup-sz3grbv, r=matthiaskrgr
...
Rollup of 11 pull requests
Successful merges:
- #104592 (Ensure async trait impls are async (or otherwise return an opaque type))
- #105623 (Fix `-Z print-type-sizes` for generators with discriminant field ordered first)
- #105627 (Auto traits in `dyn Trait + Auto` are suggestable)
- #105633 (Make `report_projection_error` more `Term` agnostic)
- #105683 (Various cleanups to dest prop)
- #105692 (Add regression test for #104678 )
- #105707 (rustdoc: remove unnecessary CSS `kbd { cursor: default }`)
- #105715 (Do not mention long types in E0599 label)
- #105722 (more clippy::complexity fixes)
- #105724 (rustdoc: remove no-op CSS `.scrape-example .src-line-numbers { margin: 0 }`)
- #105730 (rustdoc: remove no-op CSS `.item-info:before { color }`)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-15 14:04:24 +00:00
Matthias Krüger
cb9bcafe0d
Rollup merge of #105715 - estebank:unsatisfied-bounds-label, r=compiler-errors
...
Do not mention long types in E0599 label
The type is already mentioned in the main message and the list of unmet bounds.
2022-12-15 12:46:04 +01:00
Matthias Krüger
a6337d3fe5
Rollup merge of #105707 - notriddle:notriddle/kbd-cursor, r=jhpratt,GuillaumeGomez
...
rustdoc: remove unnecessary CSS `kbd { cursor: default }`
Added along with theme picker changes in https://github.com/rust-lang/rust/pull/47686/files#diff-7dc22a0530802d77c2f2ec9e834024a5657b6eab4055520fca46edc99a544413R1144 , but no reason seems to have been given at the time for why this particular rule was added.
Removing this rule results in `<kbd>` elements getting an I-bar, while the rule causes them to use the "default" arrow, but since selecting the text in these elements works fine, the I-bar is not misleading.
2022-12-15 12:46:03 +01:00