Rollup of 6 pull requests
Successful merges:
- #67956 (Detail transitive containment in E0588 diagnostic)
- #68153 (resolve: Point at the private item definitions in privacy errors)
- #68195 (Account for common `impl Trait`/`dyn Trait` return type errors)
- #68288 (Fix some of the rustfmt fallout in Miri)
- #68292 (don't clone types that are copy)
- #68301 (Don't propagate __RUST_TEST_INVOKE to subprocess)
Failed merges:
r? @ghost
Don't propagate __RUST_TEST_INVOKE to subprocess
When -Z panic_abort_tests is enabled, we use an environment variable to
tell the subprocess which test to invoke. If that subprocess then
invokes another Rust test binary, chaos ensues.
r? @alexcrichton
Account for common `impl Trait`/`dyn Trait` return type errors
- When all return paths have the same type, suggest `impl Trait`.
- When all return paths implement the expected `trait`, suggest `Box<dyn Trait>` and mention using an `enum`.
- When multiple different types are returned and `impl Trait` is expected, extend the explanation.
- When return type is `impl Trait` and the return paths do not implement `Trait`, point at the returned values.
- Split `src/librustc/traits/error_reporting.rs` into multiple files to keep size under control.
Fix#68110, cc #66523.
When -Z panic_abort_tests is enabled, we use an environment variable to
tell the subprocess which test to invoke. If that subprocess then
invokes another Rust test binary, chaos ensues.
Implement `DebugStruct::non_exhaustive`.
This patch adds a function (finish_non_exhaustive) to add ellipsis before the closing brace when formatting using `DebugStruct`.
## Example
```rust
#![feature(debug_non_exhaustive)]
use std::fmt;
struct Bar {
bar: i32,
hidden: f32,
}
impl fmt::Debug for Bar {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt.debug_struct("Bar")
.field("bar", &self.bar)
.non_exhaustive(true) // Show that some other field(s) exist.
.finish()
}
}
assert_eq!(
format!("{:?}", Bar { bar: 10, hidden: 1.0 }),
"Bar { bar: 10, .. }",
);
```
Rollup of 5 pull requests
Successful merges:
- #68033 (Don't use f64 shims for f32 cmath functions on non 32-bit x86 MSVC)
- #68244 (Enable leak sanitizer test case)
- #68255 (Remove unused auxiliary file that was replaced with rust_test_helpers)
- #68263 (rustdoc: HTML escape codeblocks which fail syntax highlighting)
- #68274 (remove dead code)
Failed merges:
r? @ghost
When a type error involves a `dyn Trait` as the return type, do not emit
the type error, as the "return type is not `Sized`" error will provide
enough information to the user.
remove dead code
The condition
`if obligation.recursion_depth >= 0`
is always true since `recursion_depth` is `usize`.
The else branch is dead code and can be removed.
Found by Clippy.
Fixes#68251
Enable leak sanitizer test case
* Use `black_box` to avoid memory leak removal during optimization.
* Leak multiple objects to make test case more robust.
Don't use f64 shims for f32 cmath functions on non 32-bit x86 MSVC
These shims are only needed on 32-bit x86. Additionally since https://reviews.llvm.org/rL268875 LLVM handles adding the shims itself for the intrinsics.
The condition
if obligation.recursion_depth >= 0
is always true since recursion_depth is usize.
The else branch is dead code and can be removed.
Found by Clippy.
Fixes#68251
Rollup of 5 pull requests
Successful merges:
- #67780 (Move some queries from rustc::ty to librustc_ty.)
- #68096 (Clean up some diagnostics by making them more consistent)
- #68223 (Use 3.6 instead of 3.5 in float fract() documentation)
- #68265 (Fix some issue numbers of unstable features)
- #68266 (Changed docs for f32 and f64.)
Failed merges:
- #68204 (Use named fields for `{ast,hir}::ItemKind::Impl`)
r? @ghost
Use 3.6 instead of 3.5 in float fract() documentation
It is not self-explanatory whether the fract() function inverts the fractional part of negative numbers. This change clarifies this possible question (so that it is `.6` not `.4`)
Clean up some diagnostics by making them more consistent
In general:
- Diagnostic should start with a lowercase letter.
- Diagnostics should not end with a full stop.
- Ellipses contain three dots.
- Backticks should encode Rust code.
I also reworded a couple of messages to make them read more clearly.
It might be sensible to create a style guide for diagnostics, so these informal conventions are written down somewhere, after which we could audit the existing diagnostics.
r? @Centril