Auto merge of #60007 - Centril:rollup-gdh1er4, r=Centril
Rollup of 6 pull requests Successful merges: - #59717 (improve docs for std::hint::unreachable_unchecked()) - #59903 (Continue evaluating after missing main) - #59973 (Fix rustdoc sidebar z-index) - #59992 (rustdoc: use --static-root-path for settings.js) - #59993 (include mode in unused binding suggestion span) - #60000 (Add repo-specific triagebot configuration) Failed merges: r? @ghost
This commit is contained in:
commit
a7cef0bf08
@ -21,11 +21,10 @@ use intrinsics;
|
|||||||
/// difficult-to-debug problems.
|
/// difficult-to-debug problems.
|
||||||
///
|
///
|
||||||
/// Use this function only when you can prove that the code will never call it.
|
/// Use this function only when you can prove that the code will never call it.
|
||||||
|
/// Otherwise, consider using the [`unreachable!`] macro, which does not allow
|
||||||
|
/// optimizations but will panic when executed.
|
||||||
///
|
///
|
||||||
/// The [`unreachable!()`] macro is the safe counterpart of this function, which
|
/// [`unreachable!`]: ../macro.unreachable.html
|
||||||
/// will panic instead when executed.
|
|
||||||
///
|
|
||||||
/// [`unreachable!()`]: ../macro.unreachable.html
|
|
||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
|
@ -163,7 +163,6 @@ fn configure_main(
|
|||||||
err.span_note(span, "here is a function named 'main'");
|
err.span_note(span, "here is a function named 'main'");
|
||||||
}
|
}
|
||||||
err.emit();
|
err.emit();
|
||||||
tcx.sess.abort_if_errors();
|
|
||||||
} else {
|
} else {
|
||||||
if let Some(ref filename) = tcx.sess.local_crate_source_file {
|
if let Some(ref filename) = tcx.sess.local_crate_source_file {
|
||||||
err.note(&format!("consider adding a `main` function to `{}`", filename.display()));
|
err.note(&format!("consider adding a `main` function to `{}`", filename.display()));
|
||||||
|
@ -1626,11 +1626,18 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if self.ir.variable_is_shorthand(var) {
|
if self.ir.variable_is_shorthand(var) {
|
||||||
err.multipart_suggestion(
|
if let Node::Binding(pat) = self.ir.tcx.hir().get_by_hir_id(hir_id) {
|
||||||
"try ignoring the field",
|
// Handle `ref` and `ref mut`.
|
||||||
spans.iter().map(|span| (*span, format!("{}: _", name))).collect(),
|
let spans = spans.iter()
|
||||||
Applicability::MachineApplicable
|
.map(|_span| (pat.span, format!("{}: _", name)))
|
||||||
);
|
.collect();
|
||||||
|
|
||||||
|
err.multipart_suggestion(
|
||||||
|
"try ignoring the field",
|
||||||
|
spans,
|
||||||
|
Applicability::MachineApplicable,
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err.multipart_suggestion(
|
err.multipart_suggestion(
|
||||||
"consider prefixing with an underscore",
|
"consider prefixing with an underscore",
|
||||||
|
@ -886,10 +886,11 @@ fn analysis<'tcx>(
|
|||||||
assert_eq!(cnum, LOCAL_CRATE);
|
assert_eq!(cnum, LOCAL_CRATE);
|
||||||
|
|
||||||
let sess = tcx.sess;
|
let sess = tcx.sess;
|
||||||
|
let mut entry_point = None;
|
||||||
|
|
||||||
time(sess, "misc checking 1", || {
|
time(sess, "misc checking 1", || {
|
||||||
parallel!({
|
parallel!({
|
||||||
time(sess, "looking for entry point", || {
|
entry_point = time(sess, "looking for entry point", || {
|
||||||
middle::entry::find_entry_point(tcx)
|
middle::entry::find_entry_point(tcx)
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -937,7 +938,10 @@ fn analysis<'tcx>(
|
|||||||
|
|
||||||
// Abort so we don't try to construct MIR with liveness errors.
|
// Abort so we don't try to construct MIR with liveness errors.
|
||||||
// We also won't want to continue with errors from rvalue promotion
|
// We also won't want to continue with errors from rvalue promotion
|
||||||
tcx.sess.abort_if_errors();
|
// We only do so if the only error found so far *isn't* a missing `fn main()`
|
||||||
|
if !(entry_point.is_none() && sess.err_count() == 1) {
|
||||||
|
tcx.sess.abort_if_errors();
|
||||||
|
}
|
||||||
|
|
||||||
time(sess, "borrow checking", || {
|
time(sess, "borrow checking", || {
|
||||||
if tcx.use_ast_borrowck() {
|
if tcx.use_ast_borrowck() {
|
||||||
|
@ -2113,7 +2113,8 @@ impl Context {
|
|||||||
&final_file);
|
&final_file);
|
||||||
|
|
||||||
// Generating settings page.
|
// Generating settings page.
|
||||||
let settings = Settings::new("./", &self.shared.resource_suffix);
|
let settings = Settings::new(self.shared.static_root_path.deref().unwrap_or("./"),
|
||||||
|
&self.shared.resource_suffix);
|
||||||
page.title = "Rustdoc settings";
|
page.title = "Rustdoc settings";
|
||||||
page.description = "Settings of Rustdoc";
|
page.description = "Settings of Rustdoc";
|
||||||
page.root_path = "./";
|
page.root_path = "./";
|
||||||
|
@ -166,6 +166,7 @@ nav.sub {
|
|||||||
top: 0;
|
top: 0;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar .block > ul > li {
|
.sidebar .block > ul > li {
|
||||||
@ -345,7 +346,7 @@ nav.sub {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.docblock-short code {
|
.docblock-short code {
|
||||||
white-space: nowrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.docblock h1, .docblock h2, .docblock h3, .docblock h4, .docblock h5 {
|
.docblock h1, .docblock h2, .docblock h3, .docblock h4, .docblock h5 {
|
||||||
|
@ -12,3 +12,7 @@ pub struct SomeStruct;
|
|||||||
// @!matches - '"\.\./\.\./source-script\.js"'
|
// @!matches - '"\.\./\.\./source-script\.js"'
|
||||||
// @matches - '"\.\./\.\./source-files.js"'
|
// @matches - '"\.\./\.\./source-files.js"'
|
||||||
// @!matches - '"/cache/source-files\.js"'
|
// @!matches - '"/cache/source-files\.js"'
|
||||||
|
|
||||||
|
// @has settings.html
|
||||||
|
// @matches - '/cache/settings\.js'
|
||||||
|
// @!matches - '\./settings\.js'
|
||||||
|
32
src/test/ui/continue-after-missing-main.rs
Normal file
32
src/test/ui/continue-after-missing-main.rs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
// error-pattern:`main` function not found in crate
|
||||||
|
|
||||||
|
struct Tableau<'a, MP> {
|
||||||
|
provider: &'a MP,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'adapted_matrix_provider, 'original_data, MP>
|
||||||
|
Tableau<'adapted_matrix_provider, AdaptedMatrixProvider<'original_data, MP>>
|
||||||
|
{
|
||||||
|
fn provider(&self) -> &'adapted_matrix_provider AdaptedMatrixProvider</*'original_data,*/ MP> {
|
||||||
|
self.provider
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct AdaptedMatrixProvider<'a, T> {
|
||||||
|
original_problem: &'a T,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, T> AdaptedMatrixProvider<'a, T> {
|
||||||
|
fn clone_with_extra_bound(&self) -> Self {
|
||||||
|
AdaptedMatrixProvider { original_problem: self.original_problem }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_and_solve_subproblems<'data_provider, 'original_data, MP>(
|
||||||
|
tableau: Tableau<'data_provider, AdaptedMatrixProvider<'original_data, MP>>,
|
||||||
|
) {
|
||||||
|
let _: AdaptedMatrixProvider<'original_data, MP> = tableau.provider().clone_with_extra_bound();
|
||||||
|
//~^ ERROR lifetime mismatch
|
||||||
|
}
|
17
src/test/ui/continue-after-missing-main.stderr
Normal file
17
src/test/ui/continue-after-missing-main.stderr
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
error[E0601]: `main` function not found in crate `continue_after_missing_main`
|
||||||
|
|
|
||||||
|
= note: consider adding a `main` function to `$DIR/continue-after-missing-main.rs`
|
||||||
|
|
||||||
|
error[E0623]: lifetime mismatch
|
||||||
|
--> $DIR/continue-after-missing-main.rs:30:56
|
||||||
|
|
|
||||||
|
LL | tableau: Tableau<'data_provider, AdaptedMatrixProvider<'original_data, MP>>,
|
||||||
|
| ------------------------------------------------------------------ these two types are declared with different lifetimes...
|
||||||
|
LL | ) {
|
||||||
|
LL | let _: AdaptedMatrixProvider<'original_data, MP> = tableau.provider().clone_with_extra_bound();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...but data from `tableau` flows into `tableau` here
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
Some errors occurred: E0601, E0623.
|
||||||
|
For more information about an error, try `rustc --explain E0601`.
|
34
src/test/ui/lint/issue-54180-unused-ref-field.fixed
Normal file
34
src/test/ui/lint/issue-54180-unused-ref-field.fixed
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// run-rustfix
|
||||||
|
|
||||||
|
#![deny(unused)]
|
||||||
|
|
||||||
|
pub struct S {
|
||||||
|
pub f1: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Point {
|
||||||
|
pub x: i32,
|
||||||
|
pub y: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum E {
|
||||||
|
Variant { field: String }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn foo(arg: &E) {
|
||||||
|
match arg {
|
||||||
|
E::Variant { field: _ } => (), //~ ERROR unused variable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let s = S { f1: 123 };
|
||||||
|
let S { f1: _ } = s; //~ ERROR unused variable
|
||||||
|
|
||||||
|
let points = vec![Point { x: 1, y: 2 }];
|
||||||
|
let _: i32 = points.iter().map(|Point { x: _, y }| y).sum(); //~ ERROR unused variable
|
||||||
|
|
||||||
|
match (Point { x: 1, y: 2 }) {
|
||||||
|
Point { y, x: _ } => y, //~ ERROR unused variable
|
||||||
|
};
|
||||||
|
}
|
34
src/test/ui/lint/issue-54180-unused-ref-field.rs
Normal file
34
src/test/ui/lint/issue-54180-unused-ref-field.rs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// run-rustfix
|
||||||
|
|
||||||
|
#![deny(unused)]
|
||||||
|
|
||||||
|
pub struct S {
|
||||||
|
pub f1: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Point {
|
||||||
|
pub x: i32,
|
||||||
|
pub y: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum E {
|
||||||
|
Variant { field: String }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn foo(arg: &E) {
|
||||||
|
match arg {
|
||||||
|
E::Variant { ref field } => (), //~ ERROR unused variable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let s = S { f1: 123 };
|
||||||
|
let S { ref f1 } = s; //~ ERROR unused variable
|
||||||
|
|
||||||
|
let points = vec![Point { x: 1, y: 2 }];
|
||||||
|
let _: i32 = points.iter().map(|Point { x, y }| y).sum(); //~ ERROR unused variable
|
||||||
|
|
||||||
|
match (Point { x: 1, y: 2 }) {
|
||||||
|
Point { y, ref mut x } => y, //~ ERROR unused variable
|
||||||
|
};
|
||||||
|
}
|
39
src/test/ui/lint/issue-54180-unused-ref-field.stderr
Normal file
39
src/test/ui/lint/issue-54180-unused-ref-field.stderr
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
error: unused variable: `field`
|
||||||
|
--> $DIR/issue-54180-unused-ref-field.rs:20:26
|
||||||
|
|
|
||||||
|
LL | E::Variant { ref field } => (),
|
||||||
|
| ----^^^^^
|
||||||
|
| |
|
||||||
|
| help: try ignoring the field: `field: _`
|
||||||
|
|
|
||||||
|
note: lint level defined here
|
||||||
|
--> $DIR/issue-54180-unused-ref-field.rs:3:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unused)]
|
||||||
|
| ^^^^^^
|
||||||
|
= note: #[deny(unused_variables)] implied by #[deny(unused)]
|
||||||
|
|
||||||
|
error: unused variable: `x`
|
||||||
|
--> $DIR/issue-54180-unused-ref-field.rs:29:45
|
||||||
|
|
|
||||||
|
LL | let _: i32 = points.iter().map(|Point { x, y }| y).sum();
|
||||||
|
| ^ help: try ignoring the field: `x: _`
|
||||||
|
|
||||||
|
error: unused variable: `f1`
|
||||||
|
--> $DIR/issue-54180-unused-ref-field.rs:26:17
|
||||||
|
|
|
||||||
|
LL | let S { ref f1 } = s;
|
||||||
|
| ----^^
|
||||||
|
| |
|
||||||
|
| help: try ignoring the field: `f1: _`
|
||||||
|
|
||||||
|
error: unused variable: `x`
|
||||||
|
--> $DIR/issue-54180-unused-ref-field.rs:32:28
|
||||||
|
|
|
||||||
|
LL | Point { y, ref mut x } => y,
|
||||||
|
| --------^
|
||||||
|
| |
|
||||||
|
| help: try ignoring the field: `x: _`
|
||||||
|
|
||||||
|
error: aborting due to 4 previous errors
|
||||||
|
|
6
triagebot.toml
Normal file
6
triagebot.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[relabel]
|
||||||
|
allow-unauthenticated = [
|
||||||
|
"C-*", "A-*", "E-*", "NLL-*", "O-*", "S-*", "T-*", "WG-*",
|
||||||
|
# I-* without I-nominated
|
||||||
|
"I-compilemem", "I-compiletime", "I-crash", "I-hang", "I-ICE", "I-slow",
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user