Merge from rustc
This commit is contained in:
commit
da39cbec73
289 changed files with 3997 additions and 2428 deletions
|
|
@ -585,11 +585,13 @@ Select which editor you would like to set up [default: None]: ";
|
|||
"d29af4d949bbe2371eac928a3c31cf9496b1701aa1c45f11cd6c759865ad5c45",
|
||||
"b5dd299b93dca3ceeb9b335f929293cb3d4bf4977866fbe7ceeac2a8a9f99088",
|
||||
"631c837b0e98ae35fd48b0e5f743b1ca60adadf2d0a2b23566ba25df372cf1a9",
|
||||
"080955765db84bb6cbf178879f489c4e2369397626a6ecb3debedb94a9d0b3ce",
|
||||
],
|
||||
EditorKind::Helix => &[
|
||||
"2d3069b8cf1b977e5d4023965eb6199597755e6c96c185ed5f2854f98b83d233",
|
||||
"6736d61409fbebba0933afd2e4c44ff2f97c1cb36cf0299a7f4a7819b8775040",
|
||||
"f252dcc30ca85a193a699581e5e929d5bd6c19d40d7a7ade5e257a9517a124a5",
|
||||
"198c195ed0c070d15907b279b8b4ea96198ca71b939f5376454f3d636ab54da5",
|
||||
],
|
||||
EditorKind::Vim | EditorKind::VsCode => &[
|
||||
"ea67e259dedf60d4429b6c349a564ffcd1563cf41c920a856d1f5b16b4701ac8",
|
||||
|
|
@ -604,11 +606,13 @@ Select which editor you would like to set up [default: None]: ";
|
|||
"c394386e6133bbf29ffd32c8af0bb3d4aac354cba9ee051f29612aa9350f8f8d",
|
||||
"e53e9129ca5ee5dcbd6ec8b68c2d87376474eb154992deba3c6d9ab1703e0717",
|
||||
"f954316090936c7e590c253ca9d524008375882fa13c5b41d7e2547a896ff893",
|
||||
"701b73751efd7abd6487f2c79348dab698af7ac4427b79fa3d2087c867144b12",
|
||||
],
|
||||
EditorKind::Zed => &[
|
||||
"bbce727c269d1bd0c98afef4d612eb4ce27aea3c3a8968c5f10b31affbc40b6c",
|
||||
"a5380cf5dd9328731aecc5dfb240d16dac46ed272126b9728006151ef42f5909",
|
||||
"2e96bf0d443852b12f016c8fc9840ab3d0a2b4fe0b0fb3a157e8d74d5e7e0e26",
|
||||
"4fadd4c87389a601a27db0d3d74a142fa3a2e656ae78982e934dbe24bee32ad6",
|
||||
],
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,16 @@ pub fn dylib_path() -> Vec<std::path::PathBuf> {
|
|||
/// Given an executable called `name`, return the filename for the
|
||||
/// executable for a particular target.
|
||||
pub fn exe(name: &str, target: &str) -> String {
|
||||
if target.contains("windows") {
|
||||
// On Cygwin, the decision to append .exe or not is not as straightforward.
|
||||
// Executable files do actually have .exe extensions so on hosts other than
|
||||
// Cygwin it is necessary. But on a Cygwin host there is magic happening
|
||||
// that redirects requests for file X to file X.exe if it exists, and
|
||||
// furthermore /proc/self/exe (and thus std::env::current_exe) always
|
||||
// returns the name *without* the .exe extension. For comparisons against
|
||||
// that to match, we therefore do not append .exe for Cygwin targets on
|
||||
// a Cygwin host.
|
||||
if target.contains("windows") || (cfg!(not(target_os = "cygwin")) && target.contains("cygwin"))
|
||||
{
|
||||
format!("{name}.exe")
|
||||
} else if target.contains("uefi") {
|
||||
format!("{name}.efi")
|
||||
|
|
|
|||
|
|
@ -66,9 +66,9 @@ checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
|
|||
|
||||
[[package]]
|
||||
name = "askama"
|
||||
version = "0.13.1"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d4744ed2eef2645831b441d8f5459689ade2ab27c854488fbab1fbe94fce1a7"
|
||||
checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"
|
||||
dependencies = [
|
||||
"askama_derive",
|
||||
"itoa",
|
||||
|
|
@ -79,9 +79,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "askama_derive"
|
||||
version = "0.13.1"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d661e0f57be36a5c14c48f78d09011e67e0cb618f269cca9f2fd8d15b68c46ac"
|
||||
checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"
|
||||
dependencies = [
|
||||
"askama_parser",
|
||||
"basic-toml",
|
||||
|
|
@ -96,9 +96,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "askama_parser"
|
||||
version = "0.13.0"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf315ce6524c857bb129ff794935cf6d42c82a6cff60526fe2a63593de4d0d4f"
|
||||
checksum = "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"serde",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
askama = "0.13"
|
||||
askama = "0.14"
|
||||
clap = { version = "4.5", features = ["derive"] }
|
||||
csv = "1"
|
||||
diff = "0.1"
|
||||
|
|
|
|||
|
|
@ -85,14 +85,20 @@ impl JobDatabase {
|
|||
}
|
||||
|
||||
pub fn load_job_db(db: &str) -> anyhow::Result<JobDatabase> {
|
||||
let mut db: Value = serde_yaml::from_str(db)?;
|
||||
let mut db: Value = serde_yaml::from_str(db).context("failed to parse YAML content")?;
|
||||
|
||||
// We need to expand merge keys (<<), because serde_yaml can't deal with them
|
||||
// `apply_merge` only applies the merge once, so do it a few times to unwrap nested merges.
|
||||
db.apply_merge()?;
|
||||
db.apply_merge()?;
|
||||
|
||||
let db: JobDatabase = serde_yaml::from_value(db)?;
|
||||
let apply_merge = |db: &mut Value| -> anyhow::Result<()> {
|
||||
db.apply_merge().context("failed to apply merge keys")
|
||||
};
|
||||
|
||||
// Apply merge twice to handle nested merges
|
||||
apply_merge(&mut db)?;
|
||||
apply_merge(&mut db)?;
|
||||
|
||||
let db: JobDatabase = serde_yaml::from_value(db).context("failed to parse job database")?;
|
||||
Ok(db)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
set -euo pipefail
|
||||
|
||||
LINUX_VERSION=v6.15-rc4
|
||||
# https://github.com/Rust-for-Linux/linux/issues/1163
|
||||
LINUX_VERSION=3ca02fc80cc4fdac63aaa6796642f1e07be591d6
|
||||
|
||||
# Build rustc, rustdoc, cargo, clippy-driver and rustfmt
|
||||
../x.py build --stage 2 library rustdoc clippy rustfmt
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ auto:
|
|||
- name: dist-x86_64-linux
|
||||
env:
|
||||
CODEGEN_BACKENDS: llvm,cranelift
|
||||
<<: *job-linux-36c-codebuild
|
||||
<<: *job-linux-16c
|
||||
|
||||
- name: dist-x86_64-linux-alt
|
||||
env:
|
||||
|
|
@ -324,7 +324,7 @@ auto:
|
|||
<<: *job-linux-4c
|
||||
|
||||
- name: x86_64-gnu-distcheck
|
||||
<<: *job-linux-8c
|
||||
<<: *job-linux-4c
|
||||
|
||||
# The x86_64-gnu-llvm-20 job is split into multiple jobs to run tests in parallel.
|
||||
# x86_64-gnu-llvm-20-1 skips tests that run in x86_64-gnu-llvm-20-{2,3}.
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ Rust for Solaris operating system.
|
|||
## Target maintainers
|
||||
|
||||
[@psumbera](https://github.com/psumbera)
|
||||
[@kulikjak](https://github.com/kulikjak)
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
|
|||
|
|
@ -88,8 +88,10 @@ on your documentation examples make requests to.
|
|||
```
|
||||
|
||||
Now, when you press "run", the button will make a request to this domain. The request
|
||||
URL will contain 2 query parameters: `code` and `edition` for the code in the documentation
|
||||
and the Rust edition respectively.
|
||||
URL will contain 3 query parameters:
|
||||
1. `code` for the code in the documentation
|
||||
2. `version` for the Rust channel, e.g. nightly, which is decided by whether `code` contain unstable features
|
||||
3. `edition` for the Rust edition, e.g. 2024
|
||||
|
||||
If you don't use this attribute, there will be no run buttons.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
# `eagerly-emit-delayed-bugs`
|
||||
|
||||
This feature is perma-unstable and has no tracking issue.
|
||||
|
||||
------------------------
|
||||
|
||||
This flag converts all [`span_delayed_bug()`] calls to [`bug!`] calls, exiting the compiler immediately and allowing you to generate a backtrace of where the delayed bug occurred.
|
||||
For full documentation, see [the rustc-dev-guide][dev-guide-delayed].
|
||||
|
||||
[`bug!`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/macro.bug.html
|
||||
[`span_delayed_bug()`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_errors/struct.DiagCtxtHandle.html#method.span_delayed_bug
|
||||
[dev-guide-delayed]: https://rustc-dev-guide.rust-lang.org/compiler-debugging.html#debugging-delayed-bugs
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# `track-diagnostics`
|
||||
|
||||
This feature is perma-unstable and has no tracking issue.
|
||||
|
||||
------------------------
|
||||
|
||||
This flag prints the source code span in the compiler where a diagnostic was generated, respecting [`#[track_caller]`][track_caller]. Note that this may be different from the place it was emitted.
|
||||
For full documentation, see [the rustc-dev-guide][dev-guide-track-diagnostics].
|
||||
|
||||
[track_caller]: https://doc.rust-lang.org/reference/attributes/codegen.html#the-track_caller-attribute
|
||||
[dev-guide-track-diagnostics]: https://rustc-dev-guide.rust-lang.org/compiler-debugging.html#getting-the-error-creation-location
|
||||
13
src/doc/unstable-book/src/compiler-flags/treat-err-as-bug.md
Normal file
13
src/doc/unstable-book/src/compiler-flags/treat-err-as-bug.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# `treat-err-as-bug`
|
||||
|
||||
This feature is perma-unstable and has no tracking issue.
|
||||
|
||||
------------------------
|
||||
|
||||
This flag converts the selected error to a [`bug!`] call, exiting the compiler immediately and allowing you to generate a backtrace of where the error occurred.
|
||||
For full documentation, see [the rustc-dev-guide][dev-guide-backtrace].
|
||||
|
||||
Note that the compiler automatically sets `RUST_BACKTRACE=1` for itself, and so you do not need to set it yourself when using this flag.
|
||||
|
||||
[`bug!`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/macro.bug.html
|
||||
[dev-guide-backtrace]: https://rustc-dev-guide.rust-lang.org/compiler-debugging.html#getting-a-backtrace-for-errors
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
"src/bootstrap/Cargo.toml"
|
||||
"src/tools/rust-analyzer/Cargo.toml"]
|
||||
:rustfmt ( :overrideCommand ["build/host/rustfmt/bin/rustfmt"
|
||||
"--edition=2021"])
|
||||
"--edition=2024"])
|
||||
:procMacro ( :server "build/host/stage0/libexec/rust-analyzer-proc-macro-srv"
|
||||
:enable t)
|
||||
:cargo ( :buildScripts ( :enable t
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ overrideCommand = [
|
|||
[language-server.rust-analyzer.config.rustfmt]
|
||||
overrideCommand = [
|
||||
"build/rust-analyzer/host/rustfmt/bin/rustfmt",
|
||||
"--edition=2021"
|
||||
"--edition=2024"
|
||||
]
|
||||
|
||||
[language-server.rust-analyzer.config.procMacro]
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
],
|
||||
"rust-analyzer.rustfmt.overrideCommand": [
|
||||
"${workspaceFolder}/build/host/rustfmt/bin/rustfmt",
|
||||
"--edition=2021"
|
||||
"--edition=2024"
|
||||
],
|
||||
"rust-analyzer.procMacro.server": "${workspaceFolder}/build/host/stage0/libexec/rust-analyzer-proc-macro-srv",
|
||||
"rust-analyzer.procMacro.enable": true,
|
||||
|
|
|
|||
|
|
@ -29,15 +29,15 @@
|
|||
],
|
||||
"procMacro": {
|
||||
"enable": true,
|
||||
"server": "${workspaceFolder}/build/host/stage0/libexec/rust-analyzer-proc-macro-srv"
|
||||
"server": "build/host/stage0/libexec/rust-analyzer-proc-macro-srv"
|
||||
},
|
||||
"rustc": {
|
||||
"source": "./Cargo.toml"
|
||||
},
|
||||
"rustfmt": {
|
||||
"overrideCommand": [
|
||||
"${workspaceFolder}/build/host/rustfmt/bin/rustfmt",
|
||||
"--edition=2021"
|
||||
"build/host/rustfmt/bin/rustfmt",
|
||||
"--edition=2024"
|
||||
]
|
||||
},
|
||||
"server": {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ path = "lib.rs"
|
|||
|
||||
[dependencies]
|
||||
arrayvec = { version = "0.7", default-features = false }
|
||||
askama = { version = "0.13", default-features = false, features = ["alloc", "config", "derive"] }
|
||||
askama = { version = "0.14", default-features = false, features = ["alloc", "config", "derive"] }
|
||||
base64 = "0.21.7"
|
||||
itertools = "0.12"
|
||||
indexmap = "2"
|
||||
|
|
|
|||
|
|
@ -774,20 +774,11 @@ impl Item {
|
|||
.filter_map(|attr| {
|
||||
if is_json {
|
||||
match attr {
|
||||
hir::Attribute::Parsed(AttributeKind::Deprecation { .. }) => {
|
||||
// rustdoc-json stores this in `Item::deprecation`, so we
|
||||
// don't want it it `Item::attrs`.
|
||||
None
|
||||
}
|
||||
rustc_hir::Attribute::Parsed(
|
||||
rustc_attr_data_structures::AttributeKind::Repr(..),
|
||||
) => {
|
||||
// We have separate pretty-printing logic for `#[repr(..)]` attributes.
|
||||
// For example, there are circumstances where `#[repr(transparent)]`
|
||||
// is applied but should not be publicly shown in rustdoc
|
||||
// because it isn't public API.
|
||||
None
|
||||
}
|
||||
// rustdoc-json stores this in `Item::deprecation`, so we
|
||||
// don't want it it `Item::attrs`.
|
||||
hir::Attribute::Parsed(AttributeKind::Deprecation { .. }) => None,
|
||||
// We have separate pretty-printing logic for `#[repr(..)]` attributes.
|
||||
hir::Attribute::Parsed(AttributeKind::Repr(..)) => None,
|
||||
_ => Some({
|
||||
let mut s = rustc_hir_pretty::attribute_to_string(&tcx, attr);
|
||||
assert_eq!(s.pop(), Some('\n'));
|
||||
|
|
@ -820,7 +811,8 @@ impl Item {
|
|||
if repr.transparent() {
|
||||
// Render `repr(transparent)` iff the non-1-ZST field is public or at least one
|
||||
// field is public in case all fields are 1-ZST fields.
|
||||
let render_transparent = cache.document_private
|
||||
let render_transparent = is_json
|
||||
|| cache.document_private
|
||||
|| adt
|
||||
.all_fields()
|
||||
.find(|field| {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use std::assert_matches::debug_assert_matches;
|
||||
use std::fmt::{self, Display, Write as _};
|
||||
use std::mem;
|
||||
use std::sync::LazyLock as Lazy;
|
||||
use std::{ascii, mem};
|
||||
|
||||
use rustc_ast::tokenstream::TokenTree;
|
||||
use rustc_hir::def::{DefKind, Res};
|
||||
|
|
@ -24,7 +24,7 @@ use crate::clean::{
|
|||
clean_middle_ty, inline,
|
||||
};
|
||||
use crate::core::DocContext;
|
||||
use crate::display::Joined as _;
|
||||
use crate::display::{Joined as _, MaybeDisplay as _};
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
|
@ -254,14 +254,7 @@ pub(crate) fn qpath_to_string(p: &hir::QPath<'_>) -> String {
|
|||
fmt::from_fn(|f| {
|
||||
segments
|
||||
.iter()
|
||||
.map(|seg| {
|
||||
fmt::from_fn(|f| {
|
||||
if seg.ident.name != kw::PathRoot {
|
||||
write!(f, "{}", seg.ident)?;
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
})
|
||||
.map(|seg| (seg.ident.name != kw::PathRoot).then_some(seg.ident).maybe_display())
|
||||
.joined("::", f)
|
||||
})
|
||||
.to_string()
|
||||
|
|
@ -391,30 +384,12 @@ pub(crate) fn print_evaluated_const(
|
|||
})
|
||||
}
|
||||
|
||||
fn format_integer_with_underscore_sep(num: &str) -> String {
|
||||
let num_chars: Vec<_> = num.chars().collect();
|
||||
let mut num_start_index = if num_chars.first() == Some(&'-') { 1 } else { 0 };
|
||||
let chunk_size = match &num.as_bytes()[num_start_index..] {
|
||||
[b'0', b'b' | b'x', ..] => {
|
||||
num_start_index += 2;
|
||||
4
|
||||
}
|
||||
[b'0', b'o', ..] => {
|
||||
num_start_index += 2;
|
||||
let remaining_chars = num_chars.len() - num_start_index;
|
||||
if remaining_chars <= 6 {
|
||||
// don't add underscores to Unix permissions like 0755 or 100755
|
||||
return num.to_string();
|
||||
}
|
||||
3
|
||||
}
|
||||
_ => 3,
|
||||
};
|
||||
|
||||
num_chars[..num_start_index]
|
||||
.iter()
|
||||
.chain(num_chars[num_start_index..].rchunks(chunk_size).rev().intersperse(&['_']).flatten())
|
||||
.collect()
|
||||
fn format_integer_with_underscore_sep(num: u128, is_negative: bool) -> String {
|
||||
let num = num.to_string();
|
||||
let chars = num.as_ascii().unwrap();
|
||||
let mut result = if is_negative { "-".to_string() } else { String::new() };
|
||||
result.extend(chars.rchunks(3).rev().intersperse(&[ascii::Char::LowLine]).flatten());
|
||||
result
|
||||
}
|
||||
|
||||
fn print_const_with_custom_print_scalar<'tcx>(
|
||||
|
|
@ -428,7 +403,10 @@ fn print_const_with_custom_print_scalar<'tcx>(
|
|||
match (ct, ct.ty().kind()) {
|
||||
(mir::Const::Val(mir::ConstValue::Scalar(int), _), ty::Uint(ui)) => {
|
||||
let mut output = if with_underscores {
|
||||
format_integer_with_underscore_sep(&int.to_string())
|
||||
format_integer_with_underscore_sep(
|
||||
int.assert_scalar_int().to_bits_unchecked(),
|
||||
false,
|
||||
)
|
||||
} else {
|
||||
int.to_string()
|
||||
};
|
||||
|
|
@ -445,7 +423,10 @@ fn print_const_with_custom_print_scalar<'tcx>(
|
|||
.size;
|
||||
let sign_extended_data = int.assert_scalar_int().to_int(size);
|
||||
let mut output = if with_underscores {
|
||||
format_integer_with_underscore_sep(&sign_extended_data.to_string())
|
||||
format_integer_with_underscore_sep(
|
||||
sign_extended_data.unsigned_abs(),
|
||||
sign_extended_data.is_negative(),
|
||||
)
|
||||
} else {
|
||||
sign_extended_data.to_string()
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,40 +2,10 @@ use super::*;
|
|||
|
||||
#[test]
|
||||
fn int_format_decimal() {
|
||||
assert_eq!(format_integer_with_underscore_sep("12345678"), "12_345_678");
|
||||
assert_eq!(format_integer_with_underscore_sep("123"), "123");
|
||||
assert_eq!(format_integer_with_underscore_sep("123459"), "123_459");
|
||||
assert_eq!(format_integer_with_underscore_sep("-12345678"), "-12_345_678");
|
||||
assert_eq!(format_integer_with_underscore_sep("-123"), "-123");
|
||||
assert_eq!(format_integer_with_underscore_sep("-123459"), "-123_459");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn int_format_hex() {
|
||||
assert_eq!(format_integer_with_underscore_sep("0xab3"), "0xab3");
|
||||
assert_eq!(format_integer_with_underscore_sep("0xa2345b"), "0xa2_345b");
|
||||
assert_eq!(format_integer_with_underscore_sep("0xa2e6345b"), "0xa2e6_345b");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0xab3"), "-0xab3");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0xa2345b"), "-0xa2_345b");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0xa2e6345b"), "-0xa2e6_345b");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn int_format_binary() {
|
||||
assert_eq!(format_integer_with_underscore_sep("0o12345671"), "0o12_345_671");
|
||||
assert_eq!(format_integer_with_underscore_sep("0o123"), "0o123");
|
||||
assert_eq!(format_integer_with_underscore_sep("0o123451"), "0o123451");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0o12345671"), "-0o12_345_671");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0o123"), "-0o123");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0o123451"), "-0o123451");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn int_format_octal() {
|
||||
assert_eq!(format_integer_with_underscore_sep("0b101"), "0b101");
|
||||
assert_eq!(format_integer_with_underscore_sep("0b101101011"), "0b1_0110_1011");
|
||||
assert_eq!(format_integer_with_underscore_sep("0b01101011"), "0b0110_1011");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0b101"), "-0b101");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0b101101011"), "-0b1_0110_1011");
|
||||
assert_eq!(format_integer_with_underscore_sep("-0b01101011"), "-0b0110_1011");
|
||||
assert_eq!(format_integer_with_underscore_sep(12345678, false), "12_345_678");
|
||||
assert_eq!(format_integer_with_underscore_sep(123, false), "123");
|
||||
assert_eq!(format_integer_with_underscore_sep(123459, false), "123_459");
|
||||
assert_eq!(format_integer_with_underscore_sep(12345678, true), "-12_345_678");
|
||||
assert_eq!(format_integer_with_underscore_sep(123, true), "-123");
|
||||
assert_eq!(format_integer_with_underscore_sep(123459, true), "-123_459");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ pub(crate) mod filters {
|
|||
use askama::filters::Safe;
|
||||
|
||||
use crate::html::escape::EscapeBodyTextWithWbr;
|
||||
pub(crate) fn wrapped<T>(v: T) -> askama::Result<Safe<impl Display>>
|
||||
pub(crate) fn wrapped<T, V: askama::Values>(v: T, _: V) -> askama::Result<Safe<impl Display>>
|
||||
where
|
||||
T: Display,
|
||||
{
|
||||
|
|
|
|||
|
|
@ -611,7 +611,7 @@ impl TypeAliasPart {
|
|||
.impl_
|
||||
.values()
|
||||
.flat_map(|AliasedTypeImpl { impl_, type_aliases }| {
|
||||
let mut ret = Vec::new();
|
||||
let mut ret: Vec<AliasSerializableImpl> = Vec::new();
|
||||
let trait_ = impl_
|
||||
.inner_impl()
|
||||
.trait_
|
||||
|
|
@ -623,42 +623,43 @@ impl TypeAliasPart {
|
|||
for &(type_alias_fqp, type_alias_item) in type_aliases {
|
||||
cx.id_map.borrow_mut().clear();
|
||||
cx.deref_id_map.borrow_mut().clear();
|
||||
let target_did = impl_
|
||||
.inner_impl()
|
||||
.trait_
|
||||
.as_ref()
|
||||
.map(|trait_| trait_.def_id())
|
||||
.or_else(|| impl_.inner_impl().for_.def_id(&cx.shared.cache));
|
||||
let provided_methods;
|
||||
let assoc_link = if let Some(target_did) = target_did {
|
||||
provided_methods = impl_.inner_impl().provided_trait_methods(cx.tcx());
|
||||
AssocItemLink::GotoSource(ItemId::DefId(target_did), &provided_methods)
|
||||
} else {
|
||||
AssocItemLink::Anchor(None)
|
||||
};
|
||||
let text = super::render_impl(
|
||||
cx,
|
||||
impl_,
|
||||
type_alias_item,
|
||||
assoc_link,
|
||||
RenderMode::Normal,
|
||||
None,
|
||||
&[],
|
||||
ImplRenderingParameters {
|
||||
show_def_docs: true,
|
||||
show_default_items: true,
|
||||
show_non_assoc_items: true,
|
||||
toggle_open_by_default: true,
|
||||
},
|
||||
)
|
||||
.to_string();
|
||||
let type_alias_fqp = (*type_alias_fqp).iter().join("::");
|
||||
if Some(&text) == ret.last().map(|s: &AliasSerializableImpl| &s.text) {
|
||||
ret.last_mut()
|
||||
.expect("already established that ret.last() is Some()")
|
||||
.aliases
|
||||
.push(type_alias_fqp);
|
||||
if let Some(last) = ret.last_mut() {
|
||||
last.aliases.push(type_alias_fqp);
|
||||
} else {
|
||||
let target_did = impl_
|
||||
.inner_impl()
|
||||
.trait_
|
||||
.as_ref()
|
||||
.map(|trait_| trait_.def_id())
|
||||
.or_else(|| impl_.inner_impl().for_.def_id(&cx.shared.cache));
|
||||
let provided_methods;
|
||||
let assoc_link = if let Some(target_did) = target_did {
|
||||
provided_methods =
|
||||
impl_.inner_impl().provided_trait_methods(cx.tcx());
|
||||
AssocItemLink::GotoSource(
|
||||
ItemId::DefId(target_did),
|
||||
&provided_methods,
|
||||
)
|
||||
} else {
|
||||
AssocItemLink::Anchor(None)
|
||||
};
|
||||
let text = super::render_impl(
|
||||
cx,
|
||||
impl_,
|
||||
type_alias_item,
|
||||
assoc_link,
|
||||
RenderMode::Normal,
|
||||
None,
|
||||
&[],
|
||||
ImplRenderingParameters {
|
||||
show_def_docs: true,
|
||||
show_default_items: true,
|
||||
show_non_assoc_items: true,
|
||||
toggle_open_by_default: true,
|
||||
},
|
||||
)
|
||||
.to_string();
|
||||
ret.push(AliasSerializableImpl {
|
||||
text,
|
||||
trait_: trait_.clone(),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
html_playground_url = "https://play.rust-lang.org/"
|
||||
)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(ascii_char)]
|
||||
#![feature(ascii_char_variants)]
|
||||
#![feature(assert_matches)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(debug_closure_helpers)]
|
||||
|
|
|
|||
|
|
@ -59,12 +59,7 @@ fn filter_assoc_items_by_name_and_namespace(
|
|||
ident: Ident,
|
||||
ns: Namespace,
|
||||
) -> impl Iterator<Item = &ty::AssocItem> {
|
||||
let iter: Box<dyn Iterator<Item = &ty::AssocItem>> = if !ident.name.is_empty() {
|
||||
Box::new(tcx.associated_items(assoc_items_of).filter_by_name_unhygienic(ident.name))
|
||||
} else {
|
||||
Box::new([].iter())
|
||||
};
|
||||
iter.filter(move |item| {
|
||||
tcx.associated_items(assoc_items_of).filter_by_name_unhygienic(ident.name).filter(move |item| {
|
||||
item.namespace() == ns && tcx.hygienic_eq(ident, item.ident(tcx), assoc_items_of)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,12 +18,15 @@ use crate::html::markdown::main_body_opts;
|
|||
|
||||
pub(super) fn visit_item(cx: &DocContext<'_>, item: &Item, hir_id: HirId, dox: &str) {
|
||||
let report_diag = |cx: &DocContext<'_>, msg: &'static str, range: Range<usize>| {
|
||||
let sp = source_span_for_markdown_range(cx.tcx, dox, &range, &item.attrs.doc_strings)
|
||||
.unwrap_or_else(|| item.attr_span(cx.tcx));
|
||||
let maybe_sp = source_span_for_markdown_range(cx.tcx, dox, &range, &item.attrs.doc_strings);
|
||||
let sp = maybe_sp.unwrap_or_else(|| item.attr_span(cx.tcx));
|
||||
cx.tcx.node_span_lint(crate::lint::BARE_URLS, hir_id, sp, |lint| {
|
||||
lint.primary_message(msg)
|
||||
.note("bare URLs are not automatically turned into clickable links")
|
||||
.multipart_suggestion(
|
||||
.note("bare URLs are not automatically turned into clickable links");
|
||||
// The fallback of using the attribute span is suitable for
|
||||
// highlighting where the error is, but not for placing the < and >
|
||||
if let Some(sp) = maybe_sp {
|
||||
lint.multipart_suggestion(
|
||||
"use an automatic link instead",
|
||||
vec![
|
||||
(sp.shrink_to_lo(), "<".to_string()),
|
||||
|
|
@ -31,6 +34,7 @@ pub(super) fn visit_item(cx: &DocContext<'_>, item: &Item, hir_id: HirId, dox: &
|
|||
],
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ pub type FxHashMap<K, V> = HashMap<K, V>; // re-export for use in src/librustdoc
|
|||
/// This integer is incremented with every breaking change to the API,
|
||||
/// and is returned along with the JSON blob as [`Crate::format_version`].
|
||||
/// Consuming code should assert that this value matches the format version(s) that it supports.
|
||||
pub const FORMAT_VERSION: u32 = 45;
|
||||
pub const FORMAT_VERSION: u32 = 46;
|
||||
|
||||
/// The root of the emitted JSON blob.
|
||||
///
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 47c911e9e6f6461f90ce19142031fe16876a3b95
|
||||
Subproject commit 68db37499f2de8acef704c73d9031be6fbcbaee4
|
||||
|
|
@ -5,7 +5,7 @@ use rustc_hir::{Expr, ExprKind, PathSegment, QPath, TyKind};
|
|||
use rustc_lint::{LateContext, LateLintPass};
|
||||
use rustc_middle::ty;
|
||||
use rustc_session::declare_lint_pass;
|
||||
use rustc_span::{Span, sym, symbol};
|
||||
use rustc_span::{Span, sym};
|
||||
|
||||
declare_clippy_lint! {
|
||||
/// ### What it does
|
||||
|
|
@ -67,7 +67,7 @@ impl LateLintPass<'_> for ManualStringNew {
|
|||
fn is_expr_kind_empty_str(expr_kind: &ExprKind<'_>) -> bool {
|
||||
if let ExprKind::Lit(lit) = expr_kind
|
||||
&& let LitKind::Str(value, _) = lit.node
|
||||
&& value == symbol::kw::Empty
|
||||
&& value == sym::empty
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ use rustc_errors::Applicability;
|
|||
use rustc_lint::LateContext;
|
||||
use rustc_middle::ty;
|
||||
use rustc_span::Span;
|
||||
use rustc_span::symbol::{self, Symbol};
|
||||
use rustc_span::Symbol;
|
||||
use {rustc_ast as ast, rustc_hir as hir};
|
||||
|
||||
use super::{OR_FUN_CALL, UNWRAP_OR_DEFAULT};
|
||||
|
|
@ -265,7 +265,7 @@ fn closure_body_returns_empty_to_string(cx: &LateContext<'_>, e: &hir::Expr<'_>)
|
|||
&& ident.name == sym::to_string
|
||||
&& let hir::Expr { kind, .. } = self_arg
|
||||
&& let hir::ExprKind::Lit(lit) = kind
|
||||
&& let ast::LitKind::Str(symbol::kw::Empty, _) = lit.node
|
||||
&& let ast::LitKind::Str(rustc_span::sym::empty, _) = lit.node
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ fn foo() {}
|
|||
fn bar() {}
|
||||
|
||||
// No warning:
|
||||
#[rustc_on_unimplemented(on(_Self = "&str", label = "`a"), on(_Self = "alloc::string::String", label = "a"))]
|
||||
#[rustc_on_unimplemented(on(Self = "&str", label = "`a"), on(Self = "alloc::string::String", label = "a"))]
|
||||
trait Abc {}
|
||||
|
||||
#[proc_macro_attr::duplicated_attr()] // Should not warn!
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ description = "Produces a manifest of all the copyrighted materials in the Rust
|
|||
|
||||
[dependencies]
|
||||
anyhow = "1.0.65"
|
||||
askama = "0.13.0"
|
||||
askama = "0.14.0"
|
||||
cargo_metadata = "0.18.1"
|
||||
serde = { version = "1.0.147", features = ["derive"] }
|
||||
serde_json = "1.0.85"
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ impl rustc_driver::Callbacks for MiriBeRustCompilerCalls {
|
|||
}
|
||||
let codegen_fn_attrs = tcx.codegen_fn_attrs(local_def_id);
|
||||
if codegen_fn_attrs.contains_extern_indicator()
|
||||
|| codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::USED)
|
||||
|| codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::USED_COMPILER)
|
||||
|| codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::USED_LINKER)
|
||||
{
|
||||
Some((
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ pub fn iter_exported_symbols<'tcx>(
|
|||
let codegen_attrs = tcx.codegen_fn_attrs(def_id);
|
||||
codegen_attrs.contains_extern_indicator()
|
||||
|| codegen_attrs.flags.contains(CodegenFnAttrFlags::RUSTC_STD_INTERNAL_SYMBOL)
|
||||
|| codegen_attrs.flags.contains(CodegenFnAttrFlags::USED)
|
||||
|| codegen_attrs.flags.contains(CodegenFnAttrFlags::USED_COMPILER)
|
||||
|| codegen_attrs.flags.contains(CodegenFnAttrFlags::USED_LINKER)
|
||||
};
|
||||
if exported {
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
interp_ok(())
|
||||
}
|
||||
|
||||
/// Handles the `try` intrinsic, the underlying implementation of `std::panicking::try`.
|
||||
/// Handles the `catch_unwind` intrinsic.
|
||||
fn handle_catch_unwind(
|
||||
&mut self,
|
||||
args: &[OpTy<'tcx>],
|
||||
|
|
@ -66,7 +66,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
let this = self.eval_context_mut();
|
||||
|
||||
// Signature:
|
||||
// fn r#try(try_fn: fn(*mut u8), data: *mut u8, catch_fn: fn(*mut u8, *mut u8)) -> i32
|
||||
// fn catch_unwind(try_fn: fn(*mut u8), data: *mut u8, catch_fn: fn(*mut u8, *mut u8)) -> i32
|
||||
// Calls `try_fn` with `data` as argument. If that executes normally, returns 0.
|
||||
// If that unwinds, calls `catch_fn` with the first argument being `data` and
|
||||
// then second argument being a target-dependent `payload` (i.e. it is up to us to define
|
||||
|
|
@ -120,14 +120,14 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
// We only care about `catch_panic` if we're unwinding - if we're doing a normal
|
||||
// return, then we don't need to do anything special.
|
||||
if let (true, Some(catch_unwind)) = (unwinding, extra.catch_unwind.take()) {
|
||||
// We've just popped a frame that was pushed by `try`,
|
||||
// We've just popped a frame that was pushed by `catch_unwind`,
|
||||
// and we are unwinding, so we should catch that.
|
||||
trace!(
|
||||
"unwinding: found catch_panic frame during unwinding: {:?}",
|
||||
this.frame().instance()
|
||||
);
|
||||
|
||||
// We set the return value of `try` to 1, since there was a panic.
|
||||
// We set the return value of `catch_unwind` to 1, since there was a panic.
|
||||
this.write_scalar(Scalar::from_i32(1), &catch_unwind.dest)?;
|
||||
|
||||
// The Thread's `panic_payload` holds what was passed to `miri_start_unwind`.
|
||||
|
|
@ -142,7 +142,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
ExternAbi::Rust,
|
||||
&[catch_unwind.data, payload],
|
||||
None,
|
||||
// Directly return to caller of `try`.
|
||||
// Directly return to caller of `catch_unwind`.
|
||||
StackPopCleanup::Goto {
|
||||
ret: catch_unwind.ret,
|
||||
// `catch_fn` must not unwind.
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
interp_ok(match directories::UserDirs::new() {
|
||||
Some(dirs) => {
|
||||
let home = dirs.home_dir();
|
||||
let size_avail = if this.ptr_is_null(size.ptr())? {
|
||||
let size_avail = if this.ptr_is_null(buf)? {
|
||||
0 // if the buf pointer is null, we can't write to it; `size` will be updated to the required length
|
||||
} else {
|
||||
this.read_scalar(&size)?.to_u32()?
|
||||
|
|
@ -238,8 +238,8 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
// Of course we cannot use `windows_check_buffer_size` here since this uses
|
||||
// a different method for dealing with a too-small buffer than the other functions...
|
||||
let (success, len) = this.write_path_to_wide_str(home, buf, size_avail.into())?;
|
||||
// The Windows docs just say that this is written on failure, but std relies on it
|
||||
// always being written. Also see <https://github.com/rust-lang/rust/issues/141254>.
|
||||
// As per <https://github.com/MicrosoftDocs/sdk-api/pull/1810>, the size is always
|
||||
// written, not just on failure.
|
||||
this.write_scalar(Scalar::from_u32(len.try_into().unwrap()), &size)?;
|
||||
if success {
|
||||
Scalar::from_i32(1) // return TRUE
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ LL | std::panic::catch_unwind(|| unwind()).unwrap_err();
|
|||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||
= note: BACKTRACE:
|
||||
= note: inside closure at tests/fail/panic/bad_unwind.rs:LL:CC
|
||||
= note: inside `std::panicking::r#try::do_call::<{closure@tests/fail/panic/bad_unwind.rs:LL:CC}, ()>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::r#try::<(), {closure@tests/fail/panic/bad_unwind.rs:LL:CC}>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::catch_unwind::do_call::<{closure@tests/fail/panic/bad_unwind.rs:LL:CC}, ()>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::catch_unwind::<(), {closure@tests/fail/panic/bad_unwind.rs:LL:CC}>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panic::catch_unwind::<{closure@tests/fail/panic/bad_unwind.rs:LL:CC}, ()>` at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
note: inside `main`
|
||||
--> tests/fail/panic/bad_unwind.rs:LL:CC
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ LL | extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
|
|||
= note: inside `std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>` at RUSTLIB/std/src/sys/backtrace.rs:LL:CC
|
||||
= note: inside closure at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
= note: inside `std::ops::function::impls::<impl std::ops::FnOnce<()> for &dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe>::call_once` at RUSTLIB/core/src/ops/function.rs:LL:CC
|
||||
= note: inside `std::panicking::r#try::do_call::<&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe, i32>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::r#try::<i32, &dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::catch_unwind::do_call::<&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe, i32>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::catch_unwind::<i32, &dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panic::catch_unwind::<&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe, i32>` at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
= note: inside closure at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
= note: inside `std::panicking::r#try::do_call::<{closure@std::rt::lang_start_internal::{closure#0}}, isize>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::r#try::<isize, {closure@std::rt::lang_start_internal::{closure#0}}>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::catch_unwind::do_call::<{closure@std::rt::lang_start_internal::{closure#0}}, isize>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panicking::catch_unwind::<isize, {closure@std::rt::lang_start_internal::{closure#0}}>` at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
= note: inside `std::panic::catch_unwind::<{closure@std::rt::lang_start_internal::{closure#0}}, isize>` at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
= note: inside `std::rt::lang_start_internal` at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
= note: inside `std::rt::lang_start::<()>` at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ RUSTLIB/core/src/ops/function.rs:LL:CC (<fn() as std::ops::FnOnce<()>>::call_onc
|
|||
RUSTLIB/std/src/sys/backtrace.rs:LL:CC (std::sys::backtrace::__rust_begin_short_backtrace)
|
||||
RUSTLIB/std/src/rt.rs:LL:CC (std::rt::lang_start::{closure#0})
|
||||
RUSTLIB/core/src/ops/function.rs:LL:CC (std::ops::function::impls::call_once)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::r#try::do_call)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::r#try)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::catch_unwind::do_call)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::catch_unwind)
|
||||
RUSTLIB/std/src/panic.rs:LL:CC (std::panic::catch_unwind)
|
||||
RUSTLIB/std/src/rt.rs:LL:CC (std::rt::lang_start_internal::{closure#0})
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::r#try::do_call)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::r#try)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::catch_unwind::do_call)
|
||||
RUSTLIB/std/src/panicking.rs:LL:CC (std::panicking::catch_unwind)
|
||||
RUSTLIB/std/src/panic.rs:LL:CC (std::panic::catch_unwind)
|
||||
RUSTLIB/std/src/rt.rs:LL:CC (std::rt::lang_start_internal)
|
||||
RUSTLIB/std/src/rt.rs:LL:CC (std::rt::lang_start)
|
||||
|
|
|
|||
|
|
@ -8,17 +8,17 @@
|
|||
at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
4: std::ops::function::impls::call_once
|
||||
at RUSTLIB/core/src/ops/function.rs:LL:CC
|
||||
5: std::panicking::r#try::do_call
|
||||
5: std::panicking::catch_unwind::do_call
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
6: std::panicking::r#try
|
||||
6: std::panicking::catch_unwind
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
7: std::panic::catch_unwind
|
||||
at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
8: std::rt::lang_start_internal::{closure#0}
|
||||
at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
9: std::panicking::r#try::do_call
|
||||
9: std::panicking::catch_unwind::do_call
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
10: std::panicking::r#try
|
||||
10: std::panicking::catch_unwind
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
11: std::panic::catch_unwind
|
||||
at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
|
|
|
|||
|
|
@ -16,17 +16,17 @@
|
|||
at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
8: std::ops::function::impls::call_once
|
||||
at RUSTLIB/core/src/ops/function.rs:LL:CC
|
||||
9: std::panicking::r#try::do_call
|
||||
9: std::panicking::catch_unwind::do_call
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
10: std::panicking::r#try
|
||||
10: std::panicking::catch_unwind
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
11: std::panic::catch_unwind
|
||||
at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
12: std::rt::lang_start_internal::{closure#0}
|
||||
at RUSTLIB/std/src/rt.rs:LL:CC
|
||||
13: std::panicking::r#try::do_call
|
||||
13: std::panicking::catch_unwind::do_call
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
14: std::panicking::r#try
|
||||
14: std::panicking::catch_unwind
|
||||
at RUSTLIB/std/src/panicking.rs:LL:CC
|
||||
15: std::panic::catch_unwind
|
||||
at RUSTLIB/std/src/panic.rs:LL:CC
|
||||
|
|
|
|||
|
|
@ -343,17 +343,6 @@ dependencies = [
|
|||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dbus"
|
||||
version = "0.9.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"libdbus-sys",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_builder"
|
||||
version = "0.20.2"
|
||||
|
|
@ -823,16 +812,6 @@ version = "0.2.172"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
|
||||
|
||||
[[package]]
|
||||
name = "libdbus-sys"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linereader"
|
||||
version = "0.4.0"
|
||||
|
|
@ -906,9 +885,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "mdbook"
|
||||
version = "0.4.49"
|
||||
version = "0.4.50"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1daacee059634081dee4250d2814763a365b92dfe14bfdef964bc27835209d4"
|
||||
checksum = "f72bc08f096e1fb15cfc382babe218317c2897d2040f967c4db40d156ca28e21"
|
||||
dependencies = [
|
||||
"ammonia",
|
||||
"anyhow",
|
||||
|
|
@ -921,7 +900,6 @@ dependencies = [
|
|||
"hex",
|
||||
"log",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"opener",
|
||||
"pulldown-cmark 0.10.3",
|
||||
"regex",
|
||||
|
|
@ -1070,12 +1048,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "opener"
|
||||
version = "0.7.2"
|
||||
version = "0.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681"
|
||||
checksum = "de96cad6ee771be7f68df884d3767460b4684012308d8342ed5623fe62b2628c"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"dbus",
|
||||
"normpath",
|
||||
"windows-sys",
|
||||
]
|
||||
|
|
@ -1905,22 +1882,6 @@ dependencies = [
|
|||
"string_cache_codegen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-util"
|
||||
version = "0.1.9"
|
||||
|
|
@ -1930,12 +1891,6 @@ dependencies = [
|
|||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.61.0"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,6 @@ mdbook-i18n-helpers = "0.3.3"
|
|||
mdbook-spec = { path = "../../doc/reference/mdbook-spec" }
|
||||
|
||||
[dependencies.mdbook]
|
||||
version = "0.4.49"
|
||||
version = "0.4.50"
|
||||
default-features = false
|
||||
features = ["search"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue