Auto merge of #82611 - Dylan-DPC:rollup-l7xlpks, r=Dylan-DPC
Rollup of 11 pull requests Successful merges: - #81856 (Suggest character encoding is incorrect when encountering random null bytes) - #82395 (Add missing "see its documentation for more" stdio) - #82401 (Remove a redundant macro) - #82498 (Use log level to control partitioning debug output) - #82534 (Link crtbegin/crtend on musl to terminate .eh_frame) - #82537 (Update measureme dependency to the latest version) - #82561 (doc: cube root, not cubic root) - #82563 (Fix intra-doc handling of `Self` in enum) - #82584 (Add ARIA role to sidebar toggle in Rustdoc) - #82596 (clarify RW lock's priority gotcha) - #82607 (Add a getter for Frame.loc) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
130b2ab0ed
16
Cargo.lock
16
Cargo.lock
@ -2149,11 +2149,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "measureme"
|
||||
version = "9.0.0"
|
||||
version = "9.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22bf8d885d073610aee20e7fa205c4341ed32a761dbde96da5fd96301a8d3e82"
|
||||
checksum = "4a98e07fe802486895addb2b5467f33f205e82c426bfaf350f5d8109b137767c"
|
||||
dependencies = [
|
||||
"log",
|
||||
"memmap",
|
||||
"parking_lot",
|
||||
"perf-event-open-sys",
|
||||
"rustc-hash",
|
||||
"smallvec 1.6.1",
|
||||
]
|
||||
@ -2550,6 +2553,15 @@ version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
||||
|
||||
[[package]]
|
||||
name = "perf-event-open-sys"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce9bedf5da2c234fdf2391ede2b90fabf585355f33100689bc364a3ea558561a"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pest"
|
||||
version = "2.1.3"
|
||||
|
@ -12,7 +12,7 @@ doctest = false
|
||||
bitflags = "1.0"
|
||||
cstr = "0.2"
|
||||
libc = "0.2"
|
||||
measureme = "9.0.0"
|
||||
measureme = "9.1.0"
|
||||
snap = "1"
|
||||
tracing = "0.1"
|
||||
rustc_middle = { path = "../rustc_middle" }
|
||||
|
@ -25,7 +25,7 @@ rustc-hash = "1.1.0"
|
||||
smallvec = { version = "1.6.1", features = ["union", "may_dangle"] }
|
||||
rustc_index = { path = "../rustc_index", package = "rustc_index" }
|
||||
bitflags = "1.2.1"
|
||||
measureme = "9.0.0"
|
||||
measureme = "9.1.0"
|
||||
libc = "0.2"
|
||||
stacker = "0.1.12"
|
||||
tempfile = "3.0.5"
|
||||
|
@ -28,6 +28,6 @@ rustc_ast = { path = "../rustc_ast" }
|
||||
rustc_span = { path = "../rustc_span" }
|
||||
chalk-ir = "0.55.0"
|
||||
smallvec = { version = "1.6.1", features = ["union", "may_dangle"] }
|
||||
measureme = "9.0.0"
|
||||
measureme = "9.1.0"
|
||||
rustc_session = { path = "../rustc_session" }
|
||||
rustc_type_ir = { path = "../rustc_type_ir" }
|
||||
|
@ -226,6 +226,16 @@ impl<'mir, 'tcx, Tag> Frame<'mir, 'tcx, Tag> {
|
||||
}
|
||||
|
||||
impl<'mir, 'tcx, Tag, Extra> Frame<'mir, 'tcx, Tag, Extra> {
|
||||
/// Get the current location within the Frame.
|
||||
///
|
||||
/// If this is `Err`, we are not currently executing any particular statement in
|
||||
/// this frame (can happen e.g. during frame initialization, and during unwinding on
|
||||
/// frames without cleanup code).
|
||||
/// We basically abuse `Result` as `Either`.
|
||||
pub fn current_loc(&self) -> Result<mir::Location, Span> {
|
||||
self.loc
|
||||
}
|
||||
|
||||
/// Return the `SourceInfo` of the current instruction.
|
||||
pub fn current_source_info(&self) -> Option<&mir::SourceInfo> {
|
||||
self.loc.ok().map(|loc| self.body.source_info(loc))
|
||||
|
@ -239,17 +239,22 @@ where
|
||||
I: Iterator<Item = &'a CodegenUnit<'tcx>>,
|
||||
'tcx: 'a,
|
||||
{
|
||||
if cfg!(debug_assertions) {
|
||||
debug!("{}", label);
|
||||
let dump = move || {
|
||||
use std::fmt::Write;
|
||||
|
||||
let s = &mut String::new();
|
||||
let _ = writeln!(s, "{}", label);
|
||||
for cgu in cgus {
|
||||
debug!("CodegenUnit {} estimated size {} :", cgu.name(), cgu.size_estimate());
|
||||
let _ =
|
||||
writeln!(s, "CodegenUnit {} estimated size {} :", cgu.name(), cgu.size_estimate());
|
||||
|
||||
for (mono_item, linkage) in cgu.items() {
|
||||
let symbol_name = mono_item.symbol_name(tcx).name;
|
||||
let symbol_hash_start = symbol_name.rfind('h');
|
||||
let symbol_hash = symbol_hash_start.map_or("<no hash>", |i| &symbol_name[i..]);
|
||||
|
||||
debug!(
|
||||
let _ = writeln!(
|
||||
s,
|
||||
" - {} [{:?}] [{}] estimated size {}",
|
||||
mono_item,
|
||||
linkage,
|
||||
@ -258,9 +263,13 @@ where
|
||||
);
|
||||
}
|
||||
|
||||
debug!("");
|
||||
}
|
||||
let _ = writeln!(s, "");
|
||||
}
|
||||
|
||||
std::mem::take(s)
|
||||
};
|
||||
|
||||
debug!("{}", dump());
|
||||
}
|
||||
|
||||
#[inline(never)] // give this a place in the profiler
|
||||
|
@ -268,6 +268,9 @@ impl<'a> StringReader<'a> {
|
||||
// tokens like `<<` from `rustc_lexer`, and then add fancier error recovery to it,
|
||||
// as there will be less overall work to do this way.
|
||||
let token = unicode_chars::check_for_substitution(self, start, c, &mut err);
|
||||
if c == '\x00' {
|
||||
err.help("source files must contain UTF-8 encoded text, unexpected null bytes might occur when a different encoding is used");
|
||||
}
|
||||
err.emit();
|
||||
token?
|
||||
}
|
||||
|
@ -64,17 +64,24 @@ pub(super) fn all(obj: &str) -> CrtObjects {
|
||||
|
||||
pub(super) fn pre_musl_fallback() -> CrtObjects {
|
||||
new(&[
|
||||
(LinkOutputKind::DynamicNoPicExe, &["crt1.o", "crti.o"]),
|
||||
(LinkOutputKind::DynamicPicExe, &["Scrt1.o", "crti.o"]),
|
||||
(LinkOutputKind::StaticNoPicExe, &["crt1.o", "crti.o"]),
|
||||
(LinkOutputKind::StaticPicExe, &["rcrt1.o", "crti.o"]),
|
||||
(LinkOutputKind::DynamicDylib, &["crti.o"]),
|
||||
(LinkOutputKind::StaticDylib, &["crti.o"]),
|
||||
(LinkOutputKind::DynamicNoPicExe, &["crt1.o", "crti.o", "crtbegin.o"]),
|
||||
(LinkOutputKind::DynamicPicExe, &["Scrt1.o", "crti.o", "crtbeginS.o"]),
|
||||
(LinkOutputKind::StaticNoPicExe, &["crt1.o", "crti.o", "crtbegin.o"]),
|
||||
(LinkOutputKind::StaticPicExe, &["rcrt1.o", "crti.o", "crtbeginS.o"]),
|
||||
(LinkOutputKind::DynamicDylib, &["crti.o", "crtbeginS.o"]),
|
||||
(LinkOutputKind::StaticDylib, &["crti.o", "crtbeginS.o"]),
|
||||
])
|
||||
}
|
||||
|
||||
pub(super) fn post_musl_fallback() -> CrtObjects {
|
||||
all("crtn.o")
|
||||
new(&[
|
||||
(LinkOutputKind::DynamicNoPicExe, &["crtend.o", "crtn.o"]),
|
||||
(LinkOutputKind::DynamicPicExe, &["crtendS.o", "crtn.o"]),
|
||||
(LinkOutputKind::StaticNoPicExe, &["crtend.o", "crtn.o"]),
|
||||
(LinkOutputKind::StaticPicExe, &["crtendS.o", "crtn.o"]),
|
||||
(LinkOutputKind::DynamicDylib, &["crtendS.o", "crtn.o"]),
|
||||
(LinkOutputKind::StaticDylib, &["crtendS.o", "crtn.o"]),
|
||||
])
|
||||
}
|
||||
|
||||
pub(super) fn pre_mingw_fallback() -> CrtObjects {
|
||||
|
@ -517,21 +517,21 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
}
|
||||
|
||||
if self.is_fn_ty(&rcvr_ty, span) {
|
||||
macro_rules! report_function {
|
||||
($span:expr, $name:expr) => {
|
||||
err.note(&format!(
|
||||
"`{}` is a function, perhaps you wish to call it",
|
||||
$name
|
||||
));
|
||||
};
|
||||
fn report_function<T: std::fmt::Display>(
|
||||
err: &mut DiagnosticBuilder<'_>,
|
||||
name: T,
|
||||
) {
|
||||
err.note(
|
||||
&format!("`{}` is a function, perhaps you wish to call it", name,),
|
||||
);
|
||||
}
|
||||
|
||||
if let SelfSource::MethodCall(expr) = source {
|
||||
if let Ok(expr_string) = tcx.sess.source_map().span_to_snippet(expr.span) {
|
||||
report_function!(expr.span, expr_string);
|
||||
report_function(&mut err, expr_string);
|
||||
} else if let ExprKind::Path(QPath::Resolved(_, ref path)) = expr.kind {
|
||||
if let Some(segment) = path.segments.last() {
|
||||
report_function!(expr.span, segment.ident);
|
||||
report_function(&mut err, segment.ident);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -503,7 +503,7 @@ impl f32 {
|
||||
unsafe { cmath::fdimf(self, other) }
|
||||
}
|
||||
|
||||
/// Returns the cubic root of a number.
|
||||
/// Returns the cube root of a number.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -505,7 +505,7 @@ impl f64 {
|
||||
unsafe { cmath::fdim(self, other) }
|
||||
}
|
||||
|
||||
/// Returns the cubic root of a number.
|
||||
/// Returns the cube root of a number.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -497,7 +497,7 @@ pub struct Stdout {
|
||||
/// A locked reference to the [`Stdout`] handle.
|
||||
///
|
||||
/// This handle implements the [`Write`] trait, and is constructed via
|
||||
/// the [`Stdout::lock`] method.
|
||||
/// the [`Stdout::lock`] method. See its documentation for more.
|
||||
///
|
||||
/// ### Note: Windows Portability Consideration
|
||||
/// When operating in a console, the Windows implementation of this stream does not support
|
||||
@ -711,7 +711,7 @@ pub struct Stderr {
|
||||
/// A locked reference to the [`Stderr`] handle.
|
||||
///
|
||||
/// This handle implements the [`Write`] trait and is constructed via
|
||||
/// the [`Stderr::lock`] method.
|
||||
/// the [`Stderr::lock`] method. See its documentation for more.
|
||||
///
|
||||
/// ### Note: Windows Portability Consideration
|
||||
/// When operating in a console, the Windows implementation of this stream does not support
|
||||
|
@ -23,7 +23,9 @@ use crate::sys_common::rwlock as sys;
|
||||
///
|
||||
/// The priority policy of the lock is dependent on the underlying operating
|
||||
/// system's implementation, and this type does not guarantee that any
|
||||
/// particular policy will be used.
|
||||
/// particular policy will be used. In particular, a writer which is waiting to
|
||||
/// acquire the lock in `write` might or might not block concurrent calls to
|
||||
/// `read`.
|
||||
///
|
||||
/// The type parameter `T` represents the data that this lock protects. It is
|
||||
/// required that `T` satisfies [`Send`] to be shared across threads and
|
||||
|
@ -189,6 +189,12 @@ fn copy_self_contained_objects(
|
||||
DependencyType::TargetSelfContained,
|
||||
);
|
||||
}
|
||||
for &obj in &["crtbegin.o", "crtbeginS.o", "crtend.o", "crtendS.o"] {
|
||||
let src = compiler_file(builder, builder.cc(target), target, obj);
|
||||
let target = libdir_self_contained.join(obj);
|
||||
builder.copy(&src, &target);
|
||||
target_deps.push((target, DependencyType::TargetSelfContained));
|
||||
}
|
||||
} else if target.ends_with("-wasi") {
|
||||
let srcdir = builder.wasi_root(target).unwrap().join("lib/wasm32-wasi");
|
||||
for &obj in &["crt1.o", "crt1-reactor.o"] {
|
||||
|
@ -75,7 +75,7 @@ crate fn render<T: Print, S: Print>(
|
||||
<![endif]-->\
|
||||
{before_content}\
|
||||
<nav class=\"sidebar\">\
|
||||
<div class=\"sidebar-menu\">☰</div>\
|
||||
<div class=\"sidebar-menu\" role=\"button\">☰</div>\
|
||||
{logo}\
|
||||
{sidebar}\
|
||||
</nav>\
|
||||
|
@ -838,6 +838,14 @@ impl<'a, 'tcx> DocFolder for LinkCollector<'a, 'tcx> {
|
||||
debug!("looking for the `Self` type");
|
||||
let self_id = if item.is_fake() {
|
||||
None
|
||||
// Checking if the item is a field in an enum variant
|
||||
} else if (matches!(self.cx.tcx.def_kind(item.def_id), DefKind::Field)
|
||||
&& matches!(
|
||||
self.cx.tcx.def_kind(self.cx.tcx.parent(item.def_id).unwrap()),
|
||||
DefKind::Variant
|
||||
))
|
||||
{
|
||||
self.cx.tcx.parent(item.def_id).and_then(|item_id| self.cx.tcx.parent(item_id))
|
||||
} else if matches!(
|
||||
self.cx.tcx.def_kind(item.def_id),
|
||||
DefKind::AssocConst
|
||||
|
11
src/test/rustdoc/intra-doc/issue-82209.rs
Normal file
11
src/test/rustdoc/intra-doc/issue-82209.rs
Normal file
@ -0,0 +1,11 @@
|
||||
#![crate_name = "foo"]
|
||||
#![deny(broken_intra_doc_links)]
|
||||
pub enum Foo {
|
||||
Bar {
|
||||
abc: i32,
|
||||
/// [Self::Bar::abc]
|
||||
xyz: i32,
|
||||
},
|
||||
}
|
||||
|
||||
// @has foo/enum.Foo.html '//a/@href' '../foo/enum.Foo.html#variant.Bar.field.abc'
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/test/ui/parser/utf16-be-without-bom.rs
Normal file
BIN
src/test/ui/parser/utf16-be-without-bom.rs
Normal file
Binary file not shown.
BIN
src/test/ui/parser/utf16-be-without-bom.stderr
Normal file
BIN
src/test/ui/parser/utf16-be-without-bom.stderr
Normal file
Binary file not shown.
BIN
src/test/ui/parser/utf16-le-without-bom.rs
Normal file
BIN
src/test/ui/parser/utf16-le-without-bom.rs
Normal file
Binary file not shown.
BIN
src/test/ui/parser/utf16-le-without-bom.stderr
Normal file
BIN
src/test/ui/parser/utf16-le-without-bom.stderr
Normal file
Binary file not shown.
@ -132,6 +132,7 @@ const PERMITTED_DEPENDENCIES: &[&str] = &[
|
||||
"parking_lot",
|
||||
"parking_lot_core",
|
||||
"pathdiff",
|
||||
"perf-event-open-sys",
|
||||
"pkg-config",
|
||||
"polonius-engine",
|
||||
"ppv-lite86",
|
||||
|
Loading…
x
Reference in New Issue
Block a user