summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-04-16 05:28:25 +0000
committerbors <bors@rust-lang.org>2019-04-16 05:28:25 +0000
commita7cef0bf0810d04da3101fe079a0625d2756744a (patch)
treec4bc4ef5c616d0a34c269800d459b0e218884b6d
parent7cb933a616b64303a022a97487c3d658ff4b17ed (diff)
parent67ff8cfde88ecc840a2b85091c5253391f5bea07 (diff)
downloadrust-a7cef0bf0810d04da3101fe079a0625d2756744a.tar.gz
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
-rw-r--r--src/libcore/hint.rs7
-rw-r--r--src/librustc/middle/entry.rs1
-rw-r--r--src/librustc/middle/liveness.rs17
-rw-r--r--src/librustc_interface/passes.rs8
-rw-r--r--src/librustdoc/html/render.rs3
-rw-r--r--src/librustdoc/html/static/rustdoc.css3
-rw-r--r--src/test/rustdoc/static-root-path.rs4
-rw-r--r--src/test/ui/continue-after-missing-main.rs32
-rw-r--r--src/test/ui/continue-after-missing-main.stderr17
-rw-r--r--src/test/ui/lint/issue-54180-unused-ref-field.fixed34
-rw-r--r--src/test/ui/lint/issue-54180-unused-ref-field.rs34
-rw-r--r--src/test/ui/lint/issue-54180-unused-ref-field.stderr39
-rw-r--r--triagebot.toml6
13 files changed, 191 insertions, 14 deletions
diff --git a/src/libcore/hint.rs b/src/libcore/hint.rs
index d43e6c49f4c..89bf3640968 100644
--- a/src/libcore/hint.rs
+++ b/src/libcore/hint.rs
@@ -21,11 +21,10 @@ use intrinsics;
/// difficult-to-debug problems.
///
/// 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
-/// will panic instead when executed.
-///
-/// [`unreachable!()`]: ../macro.unreachable.html
+/// [`unreachable!`]: ../macro.unreachable.html
///
/// # Example
///
diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs
index c20454a8822..df77033ebef 100644
--- a/src/librustc/middle/entry.rs
+++ b/src/librustc/middle/entry.rs
@@ -163,7 +163,6 @@ fn configure_main(
err.span_note(span, "here is a function named 'main'");
}
err.emit();
- tcx.sess.abort_if_errors();
} else {
if let Some(ref filename) = tcx.sess.local_crate_source_file {
err.note(&format!("consider adding a `main` function to `{}`", filename.display()));
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs
index d167b44d42f..b8cde936bde 100644
--- a/src/librustc/middle/liveness.rs
+++ b/src/librustc/middle/liveness.rs
@@ -1626,11 +1626,18 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
);
if self.ir.variable_is_shorthand(var) {
- err.multipart_suggestion(
- "try ignoring the field",
- spans.iter().map(|span| (*span, format!("{}: _", name))).collect(),
- Applicability::MachineApplicable
- );
+ if let Node::Binding(pat) = self.ir.tcx.hir().get_by_hir_id(hir_id) {
+ // Handle `ref` and `ref mut`.
+ let spans = spans.iter()
+ .map(|_span| (pat.span, format!("{}: _", name)))
+ .collect();
+
+ err.multipart_suggestion(
+ "try ignoring the field",
+ spans,
+ Applicability::MachineApplicable,
+ );
+ }
} else {
err.multipart_suggestion(
"consider prefixing with an underscore",
diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs
index 3fd684f5d97..2f01254ed5f 100644
--- a/src/librustc_interface/passes.rs
+++ b/src/librustc_interface/passes.rs
@@ -886,10 +886,11 @@ fn analysis<'tcx>(
assert_eq!(cnum, LOCAL_CRATE);
let sess = tcx.sess;
+ let mut entry_point = None;
time(sess, "misc checking 1", || {
parallel!({
- time(sess, "looking for entry point", || {
+ entry_point = time(sess, "looking for entry point", || {
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.
// 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", || {
if tcx.use_ast_borrowck() {
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 3ee131d8f5c..d91b78c8416 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -2113,7 +2113,8 @@ impl Context {
&final_file);
// 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.description = "Settings of Rustdoc";
page.root_path = "./";
diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css
index 2228e58b0d2..8cf70b9a995 100644
--- a/src/librustdoc/html/static/rustdoc.css
+++ b/src/librustdoc/html/static/rustdoc.css
@@ -166,6 +166,7 @@ nav.sub {
top: 0;
height: 100vh;
overflow: auto;
+ z-index: 1;
}
.sidebar .block > ul > li {
@@ -345,7 +346,7 @@ nav.sub {
margin: 0;
}
.docblock-short code {
- white-space: nowrap;
+ white-space: pre-wrap;
}
.docblock h1, .docblock h2, .docblock h3, .docblock h4, .docblock h5 {
diff --git a/src/test/rustdoc/static-root-path.rs b/src/test/rustdoc/static-root-path.rs
index 84b32f90c89..2f7c89c5f1e 100644
--- a/src/test/rustdoc/static-root-path.rs
+++ b/src/test/rustdoc/static-root-path.rs
@@ -12,3 +12,7 @@ pub struct SomeStruct;
// @!matches - '"\.\./\.\./source-script\.js"'
// @matches - '"\.\./\.\./source-files.js"'
// @!matches - '"/cache/source-files\.js"'
+
+// @has settings.html
+// @matches - '/cache/settings\.js'
+// @!matches - '\./settings\.js'
diff --git a/src/test/ui/continue-after-missing-main.rs b/src/test/ui/continue-after-missing-main.rs
new file mode 100644
index 00000000000..7455c2a431d
--- /dev/null
+++ b/src/test/ui/continue-after-missing-main.rs
@@ -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
+}
diff --git a/src/test/ui/continue-after-missing-main.stderr b/src/test/ui/continue-after-missing-main.stderr
new file mode 100644
index 00000000000..8d64fee8bda
--- /dev/null
+++ b/src/test/ui/continue-after-missing-main.stderr
@@ -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`.
diff --git a/src/test/ui/lint/issue-54180-unused-ref-field.fixed b/src/test/ui/lint/issue-54180-unused-ref-field.fixed
new file mode 100644
index 00000000000..1350b7ca699
--- /dev/null
+++ b/src/test/ui/lint/issue-54180-unused-ref-field.fixed
@@ -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
+ };
+}
diff --git a/src/test/ui/lint/issue-54180-unused-ref-field.rs b/src/test/ui/lint/issue-54180-unused-ref-field.rs
new file mode 100644
index 00000000000..7b3392b609a
--- /dev/null
+++ b/src/test/ui/lint/issue-54180-unused-ref-field.rs
@@ -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
+ };
+}
diff --git a/src/test/ui/lint/issue-54180-unused-ref-field.stderr b/src/test/ui/lint/issue-54180-unused-ref-field.stderr
new file mode 100644
index 00000000000..9f47554a1a6
--- /dev/null
+++ b/src/test/ui/lint/issue-54180-unused-ref-field.stderr
@@ -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
+
diff --git a/triagebot.toml b/triagebot.toml
new file mode 100644
index 00000000000..6f60481600c
--- /dev/null
+++ b/triagebot.toml
@@ -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",
+]