Auto merge of #115900 - matthiaskrgr:rollup-3ba15da, r=matthiaskrgr
Rollup of 8 pull requests Successful merges: - #115247 (Document std limitations before/after main) - #115329 (fix std::primitive doc: homogenous -> homogeneous) - #115487 (Improve documentation on when signes are printed by default) - #115560 (Update doc for `alloc::format!` and `core::concat!`) - #115836 (update rust_analyzer_settings.json) - #115884 (make ty::Const debug printing less verbose) - #115890 (Migrate GUI colors test to original CSS color format) - #115895 (Improve Vec(Deque)::truncate documentation) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
7d9bce3273
@ -18,6 +18,7 @@ use std::ops::ControlFlow;
|
||||
use std::rc::Rc;
|
||||
use std::sync::Arc;
|
||||
|
||||
use super::print::PrettyPrinter;
|
||||
use super::{GenericArg, GenericArgKind, Region};
|
||||
|
||||
impl fmt::Debug for ty::TraitDef {
|
||||
@ -343,14 +344,27 @@ impl<'tcx> DebugWithInfcx<TyCtxt<'tcx>> for ty::Const<'tcx> {
|
||||
this: OptWithInfcx<'_, TyCtxt<'tcx>, InfCtx, &Self>,
|
||||
f: &mut core::fmt::Formatter<'_>,
|
||||
) -> core::fmt::Result {
|
||||
// This reflects what `Const` looked liked before `Interned` was
|
||||
// introduced. We print it like this to avoid having to update expected
|
||||
// output in a lot of tests.
|
||||
// If this is a value, we spend some effort to make it look nice.
|
||||
if let ConstKind::Value(_) = this.data.kind() {
|
||||
return ty::tls::with(move |tcx| {
|
||||
// Somehow trying to lift the valtree results in lifetime errors, so we lift the
|
||||
// entire constant.
|
||||
let lifted = tcx.lift(*this.data).unwrap();
|
||||
let ConstKind::Value(valtree) = lifted.kind() else {
|
||||
bug!("we checked that this is a valtree")
|
||||
};
|
||||
let cx = FmtPrinter::new(tcx, Namespace::ValueNS);
|
||||
let cx =
|
||||
cx.pretty_print_const_valtree(valtree, lifted.ty(), /*print_ty*/ true)?;
|
||||
f.write_str(&cx.into_buffer())
|
||||
});
|
||||
}
|
||||
// Fall back to something verbose.
|
||||
write!(
|
||||
f,
|
||||
"Const {{ ty: {:?}, kind: {:?} }}",
|
||||
&this.map(|data| data.ty()),
|
||||
&this.map(|data| data.kind())
|
||||
"{kind:?}: {ty:?}",
|
||||
ty = &this.map(|data| data.ty()),
|
||||
kind = &this.map(|data| data.kind())
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -1015,8 +1015,8 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||
/// Shortens the deque, keeping the first `len` elements and dropping
|
||||
/// the rest.
|
||||
///
|
||||
/// If `len` is greater than the deque's current length, this has no
|
||||
/// effect.
|
||||
/// If `len` is greater or equal to the deque's current length, this has
|
||||
/// no effect.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -177,8 +177,8 @@
|
||||
//! These are all flags altering the behavior of the formatter.
|
||||
//!
|
||||
//! * `+` - This is intended for numeric types and indicates that the sign
|
||||
//! should always be printed. Positive signs are never printed by
|
||||
//! default, and the negative sign is only printed by default for signed values.
|
||||
//! should always be printed. By default only the negative sign of signed values
|
||||
//! is printed, and the sign of positive or unsigned values is omitted.
|
||||
//! This flag indicates that the correct sign (`+` or `-`) should always be printed.
|
||||
//! * `-` - Currently not used
|
||||
//! * `#` - This flag indicates that the "alternate" form of printing should
|
||||
|
@ -88,15 +88,19 @@ macro_rules! vec {
|
||||
///
|
||||
/// A common use for `format!` is concatenation and interpolation of strings.
|
||||
/// The same convention is used with [`print!`] and [`write!`] macros,
|
||||
/// depending on the intended destination of the string.
|
||||
/// depending on the intended destination of the string; all these macros internally use [`format_args!`].
|
||||
///
|
||||
/// To convert a single value to a string, use the [`to_string`] method. This
|
||||
/// will use the [`Display`] formatting trait.
|
||||
///
|
||||
/// To concatenate literals into a `&'static str`, use the [`concat!`] macro.
|
||||
///
|
||||
/// [`print!`]: ../std/macro.print.html
|
||||
/// [`write!`]: core::write
|
||||
/// [`format_args!`]: core::format_args
|
||||
/// [`to_string`]: crate::string::ToString
|
||||
/// [`Display`]: core::fmt::Display
|
||||
/// [`concat!`]: core::concat
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
@ -107,11 +111,11 @@ macro_rules! vec {
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// format!("test");
|
||||
/// format!("hello {}", "world!");
|
||||
/// format!("x = {}, y = {y}", 10, y = 30);
|
||||
/// format!("test"); // => "test"
|
||||
/// format!("hello {}", "world!"); // => "hello world!"
|
||||
/// format!("x = {}, y = {val}", 10, val = 30); // => "x = 10, y = 30"
|
||||
/// let (x, y) = (1, 2);
|
||||
/// format!("{x} + {y} = 3");
|
||||
/// format!("{x} + {y} = 3"); // => "1 + 2 = 3"
|
||||
/// ```
|
||||
#[macro_export]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
@ -1110,8 +1110,8 @@ impl<T, A: Allocator> Vec<T, A> {
|
||||
/// Shortens the vector, keeping the first `len` elements and dropping
|
||||
/// the rest.
|
||||
///
|
||||
/// If `len` is greater than the vector's current length, this has no
|
||||
/// effect.
|
||||
/// If `len` is greater or equal to the vector's current length, this has
|
||||
/// no effect.
|
||||
///
|
||||
/// The [`drain`] method can emulate `truncate`, but causes the excess
|
||||
/// elements to be returned instead of dropped.
|
||||
|
@ -1044,7 +1044,7 @@ pub(crate) mod builtin {
|
||||
/// expression of type `&'static str` which represents all of the literals
|
||||
/// concatenated left-to-right.
|
||||
///
|
||||
/// Integer and floating point literals are stringified in order to be
|
||||
/// Integer and floating point literals are [stringified](core::stringify) in order to be
|
||||
/// concatenated.
|
||||
///
|
||||
/// # Examples
|
||||
|
@ -612,7 +612,7 @@ mod prim_pointer {}
|
||||
/// statically generated up to size 32.
|
||||
///
|
||||
/// Arrays of sizes from 1 to 12 (inclusive) implement [`From<Tuple>`], where `Tuple`
|
||||
/// is a homogenous [prim@tuple] of appropriate length.
|
||||
/// is a homogeneous [prim@tuple] of appropriate length.
|
||||
///
|
||||
/// Arrays coerce to [slices (`[T]`)][slice], so a slice method may be called on
|
||||
/// an array. Indeed, this provides most of the API for working with arrays.
|
||||
@ -676,7 +676,7 @@ mod prim_pointer {}
|
||||
/// move_away(roa);
|
||||
/// ```
|
||||
///
|
||||
/// Arrays can be created from homogenous tuples of appropriate length:
|
||||
/// Arrays can be created from homogeneous tuples of appropriate length:
|
||||
///
|
||||
/// ```
|
||||
/// let tuple: (u32, u32, u32) = (1, 2, 3);
|
||||
@ -1065,7 +1065,7 @@ mod prim_str {}
|
||||
/// assert_eq!(y, 5);
|
||||
/// ```
|
||||
///
|
||||
/// Homogenous tuples can be created from arrays of appropriate length:
|
||||
/// Homogeneous tuples can be created from arrays of appropriate length:
|
||||
///
|
||||
/// ```
|
||||
/// let array: [u32; 3] = [1, 2, 3];
|
||||
|
@ -152,6 +152,31 @@
|
||||
//! contains further primitive shared memory types, including [`atomic`] and
|
||||
//! [`mpsc`], which contains the channel types for message passing.
|
||||
//!
|
||||
//! # Use before and after `main()`
|
||||
//!
|
||||
//! Many parts of the standard library are expected to work before and after `main()`;
|
||||
//! but this is not guaranteed or ensured by tests. It is recommended that you write your own tests
|
||||
//! and run them on each platform you wish to support.
|
||||
//! This means that use of `std` before/after main, especially of features that interact with the
|
||||
//! OS or global state, is exempted from stability and portability guarantees and instead only
|
||||
//! provided on a best-effort basis. Nevertheless bug reports are appreciated.
|
||||
//!
|
||||
//! On the other hand `core` and `alloc` are most likely to work in such environments with
|
||||
//! the caveat that any hookable behavior such as panics, oom handling or allocators will also
|
||||
//! depend on the compatibility of the hooks.
|
||||
//!
|
||||
//! Some features may also behave differently outside main, e.g. stdio could become unbuffered,
|
||||
//! some panics might turn into aborts, backtraces might not get symbolicated or similar.
|
||||
//!
|
||||
//! Non-exhaustive list of known limitations:
|
||||
//!
|
||||
//! - after-main use of thread-locals, which also affects additional features:
|
||||
//! - [`thread::current()`]
|
||||
//! - [`thread::scope()`]
|
||||
//! - [`sync::mpsc`]
|
||||
//! - before-main stdio file descriptors are not guaranteed to be open on unix platforms
|
||||
//!
|
||||
//!
|
||||
//! [I/O]: io
|
||||
//! [`MIN`]: i32::MIN
|
||||
//! [`MAX`]: i32::MAX
|
||||
@ -187,7 +212,6 @@
|
||||
//! [rust-discord]: https://discord.gg/rust-lang
|
||||
//! [array]: prim@array
|
||||
//! [slice]: prim@slice
|
||||
|
||||
// To run std tests without x.py without ending up with two copies of std, Miri needs to be
|
||||
// able to "empty" this crate. See <https://github.com/rust-lang/miri-test-libstd/issues/4>.
|
||||
// rustc itself never sets the feature, so this line has no effect there.
|
||||
|
@ -155,7 +155,7 @@ pub trait FileExt {
|
||||
/// flag fail to respect the offset parameter, always appending to the end
|
||||
/// of the file instead.
|
||||
///
|
||||
/// It is possible to inadvertantly set this flag, like in the example below.
|
||||
/// It is possible to inadvertently set this flag, like in the example below.
|
||||
/// Therefore, it is important to be vigilant while changing options to mitigate
|
||||
/// unexpected behaviour.
|
||||
///
|
||||
|
@ -612,7 +612,7 @@ mod prim_pointer {}
|
||||
/// statically generated up to size 32.
|
||||
///
|
||||
/// Arrays of sizes from 1 to 12 (inclusive) implement [`From<Tuple>`], where `Tuple`
|
||||
/// is a homogenous [prim@tuple] of appropriate length.
|
||||
/// is a homogeneous [prim@tuple] of appropriate length.
|
||||
///
|
||||
/// Arrays coerce to [slices (`[T]`)][slice], so a slice method may be called on
|
||||
/// an array. Indeed, this provides most of the API for working with arrays.
|
||||
@ -676,7 +676,7 @@ mod prim_pointer {}
|
||||
/// move_away(roa);
|
||||
/// ```
|
||||
///
|
||||
/// Arrays can be created from homogenous tuples of appropriate length:
|
||||
/// Arrays can be created from homogeneous tuples of appropriate length:
|
||||
///
|
||||
/// ```
|
||||
/// let tuple: (u32, u32, u32) = (1, 2, 3);
|
||||
@ -1065,7 +1065,7 @@ mod prim_str {}
|
||||
/// assert_eq!(y, 5);
|
||||
/// ```
|
||||
///
|
||||
/// Homogenous tuples can be created from arrays of appropriate length:
|
||||
/// Homogeneous tuples can be created from arrays of appropriate length:
|
||||
///
|
||||
/// ```
|
||||
/// let array: [u32; 3] = [1, 2, 3];
|
||||
|
@ -33,6 +33,7 @@ static SETTINGS_HASHES: &[&str] = &[
|
||||
"af1b5efe196aed007577899db9dae15d6dbc923d6fa42fa0934e68617ba9bbe0",
|
||||
"3468fea433c25fff60be6b71e8a215a732a7b1268b6a83bf10d024344e140541",
|
||||
"47d227f424bf889b0d899b9cc992d5695e1b78c406e183cd78eafefbe5488923",
|
||||
"b526bd58d0262dd4dda2bff5bc5515b705fb668a46235ace3e057f807963a11a",
|
||||
];
|
||||
static RUST_ANALYZER_SETTINGS: &str = include_str!("../etc/rust_analyzer_settings.json");
|
||||
|
||||
|
@ -16,10 +16,10 @@
|
||||
"compiler/rustc_codegen_gcc/Cargo.toml"
|
||||
],
|
||||
"rust-analyzer.rustfmt.overrideCommand": [
|
||||
"./build/host/rustfmt/bin/rustfmt",
|
||||
"${workspaceFolder}/build/host/rustfmt/bin/rustfmt",
|
||||
"--edition=2021"
|
||||
],
|
||||
"rust-analyzer.procMacro.server": "./build/host/stage0/libexec/rust-analyzer-proc-macro-srv",
|
||||
"rust-analyzer.procMacro.server": "${workspaceFolder}/build/host/stage0/libexec/rust-analyzer-proc-macro-srv",
|
||||
"rust-analyzer.procMacro.enable": true,
|
||||
"rust-analyzer.cargo.buildScripts.enable": true,
|
||||
"rust-analyzer.cargo.buildScripts.invocationLocation": "root",
|
||||
|
@ -1,8 +1,8 @@
|
||||
// MIR for `main` after built
|
||||
|
||||
| User Type Annotations
|
||||
| 0: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [Const { ty: &ReStatic [u8; Const { ty: usize, kind: Leaf(0x00000004) }], kind: Branch([Leaf(0x41), Leaf(0x41), Leaf(0x41), Leaf(0x41)]) }], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:12:16: 12:46, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
| 1: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [Const { ty: &ReStatic [u8; Const { ty: usize, kind: Leaf(0x00000004) }], kind: UnevaluatedConst { def: DefId(0:8 ~ issue_99325[22bb]::main::{constant#1}), args: [] } }], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:13:16: 13:68, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
| 0: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [&*b"AAAA"], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:12:16: 12:46, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
| 1: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [UnevaluatedConst { def: DefId(0:8 ~ issue_99325[22bb]::main::{constant#1}), args: [] }: &ReStatic [u8; 4_usize]], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:13:16: 13:68, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
|
|
||||
fn main() -> () {
|
||||
let mut _0: ();
|
||||
|
@ -1,8 +1,8 @@
|
||||
// MIR for `main` after built
|
||||
|
||||
| User Type Annotations
|
||||
| 0: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [Const { ty: &ReStatic [u8; Const { ty: usize, kind: Leaf(0x0000000000000004) }], kind: Branch([Leaf(0x41), Leaf(0x41), Leaf(0x41), Leaf(0x41)]) }], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:12:16: 12:46, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
| 1: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [Const { ty: &ReStatic [u8; Const { ty: usize, kind: Leaf(0x0000000000000004) }], kind: UnevaluatedConst { def: DefId(0:8 ~ issue_99325[22bb]::main::{constant#1}), args: [] } }], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:13:16: 13:68, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
| 0: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [&*b"AAAA"], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:12:16: 12:46, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
| 1: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserArgs { args: [UnevaluatedConst { def: DefId(0:8 ~ issue_99325[22bb]::main::{constant#1}), args: [] }: &ReStatic [u8; 4_usize]], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:13:16: 13:68, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
||||
|
|
||||
fn main() -> () {
|
||||
let mut _0: ();
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
|
||||
fn main() -> () {
|
||||
let mut _0: ();
|
||||
let mut _1: [usize; Const { ty: usize, kind: Leaf(0x00000003) }];
|
||||
let mut _1: [usize; ValTree(Leaf(0x00000003): usize)];
|
||||
let _3: usize;
|
||||
let mut _4: usize;
|
||||
let mut _5: bool;
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
|
||||
fn main() -> () {
|
||||
let mut _0: ();
|
||||
let mut _1: [usize; Const { ty: usize, kind: Leaf(0x0000000000000003) }];
|
||||
let mut _1: [usize; ValTree(Leaf(0x0000000000000003): usize)];
|
||||
let _3: usize;
|
||||
let mut _4: usize;
|
||||
let mut _5: bool;
|
||||
|
@ -151,7 +151,7 @@ assert-css: (
|
||||
)
|
||||
assert-css: (
|
||||
"//*[@class='result-name']//*[text()='test_docs::']/ancestor::a",
|
||||
{"color": "#fff", "background-color": "rgb(60, 60, 60)"},
|
||||
{"color": "#fff", "background-color": "#3c3c3c"},
|
||||
)
|
||||
|
||||
// Dark theme
|
||||
|
Loading…
x
Reference in New Issue
Block a user