diff --git a/Cargo.lock b/Cargo.lock index 7bf9527f47d12..eba2ff82fb8a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2451,9 +2451,9 @@ checksum = "dd20eec3dbe4376829cb7d80ae6ac45e0a766831dca50202ff2d40db46a8a024" [[package]] name = "os_info" -version = "3.0.7" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac91020bfed8cc3f8aa450d4c3b5fa1d3373fc091c8a92009f3b27749d5a227" +checksum = "b89dd55b8d8d97dabd0d1adc625d188378fcf87632825bfe9c956acc9a11a72a" dependencies = [ "log", "serde", diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index 6ee1dbe4ae3ee..959e66fbf70ef 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -12,7 +12,7 @@ use rustc_hir::definitions::DefPathData; use rustc_span::hygiene::ExpnId; use rustc_span::source_map::{respan, DesugaringKind, Span, Spanned}; use rustc_span::symbol::{sym, Ident, Symbol}; -use rustc_span::DUMMY_SP; +use rustc_span::{hygiene::ForLoopLoc, BytePos, DUMMY_SP}; impl<'hir> LoweringContext<'_, 'hir> { fn lower_exprs(&mut self, exprs: &[AstP]) -> &'hir [hir::Expr<'hir>] { @@ -864,6 +864,13 @@ impl<'hir> LoweringContext<'_, 'hir> { None => { if movability == Movability::Static { struct_span_err!(self.sess, fn_decl_span, E0697, "closures cannot be static") + .span_suggestion( + fn_decl_span + .with_lo(fn_decl_span.lo() + BytePos("static ".len() as u32)), + "remove the `static` keyword to define a regular closure", + "".into(), + rustc_errors::Applicability::MachineApplicable, + ) .emit(); } None diff --git a/compiler/rustc_codegen_gcc/build.sh b/compiler/rustc_codegen_gcc/build.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/build_sysroot/build_sysroot.sh b/compiler/rustc_codegen_gcc/build_sysroot/build_sysroot.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/build_sysroot/prepare_sysroot_src.sh b/compiler/rustc_codegen_gcc/build_sysroot/prepare_sysroot_src.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/cargo.sh b/compiler/rustc_codegen_gcc/cargo.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/clean_all.sh b/compiler/rustc_codegen_gcc/clean_all.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/prepare.sh b/compiler/rustc_codegen_gcc/prepare.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/prepare_build.sh b/compiler/rustc_codegen_gcc/prepare_build.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/rustup.sh b/compiler/rustc_codegen_gcc/rustup.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_codegen_gcc/test.sh b/compiler/rustc_codegen_gcc/test.sh old mode 100755 new mode 100644 diff --git a/compiler/rustc_passes/src/loops.rs b/compiler/rustc_passes/src/loops.rs index 4bfac1b72983e..a0ba796cdad69 100644 --- a/compiler/rustc_passes/src/loops.rs +++ b/compiler/rustc_passes/src/loops.rs @@ -233,6 +233,12 @@ impl<'a, 'hir> CheckLoopVisitor<'a, 'hir> { Normal | AnonConst => { struct_span_err!(self.sess, span, E0268, "`{}` outside of a loop", name) .span_label(span, format!("cannot `{}` outside of a loop", name)) + .span_suggestion( + span, + &format!("consider removing the `{}`", name), + String::new(), + Applicability::MaybeIncorrect, + ) .emit(); } } diff --git a/src/doc/book b/src/doc/book index 8a0bb3c96e719..fcb5e0ea68112 160000 --- a/src/doc/book +++ b/src/doc/book @@ -1 +1 @@ -Subproject commit 8a0bb3c96e71927b80fa2286d7a5a5f2547c6aa4 +Subproject commit fcb5e0ea68112d85a1d29a7a7335978ef2a02181 diff --git a/src/doc/edition-guide b/src/doc/edition-guide index beea0a3cdc388..2d9b1b9da706d 160000 --- a/src/doc/edition-guide +++ b/src/doc/edition-guide @@ -1 +1 @@ -Subproject commit beea0a3cdc3885375342fd010f9ad658e6a5e09a +Subproject commit 2d9b1b9da706de24650fdc5c3b0182f55c82115d diff --git a/src/doc/embedded-book b/src/doc/embedded-book index 8c395bdd8073d..4c76da9ddb465 160000 --- a/src/doc/embedded-book +++ b/src/doc/embedded-book @@ -1 +1 @@ -Subproject commit 8c395bdd8073deb20ca67e1ed4b14a3a7e315a37 +Subproject commit 4c76da9ddb4650203c129fceffdea95a3466c205 diff --git a/src/doc/nomicon b/src/doc/nomicon index c05c452b36358..fe6227eb3c853 160000 --- a/src/doc/nomicon +++ b/src/doc/nomicon @@ -1 +1 @@ -Subproject commit c05c452b36358821bf4122f9c418674edd1d713d +Subproject commit fe6227eb3c8533200c52dffa42ef1b6f2f02c40e diff --git a/src/doc/reference b/src/doc/reference index 06f9e61931bcf..0e5ed7a4bec06 160000 --- a/src/doc/reference +++ b/src/doc/reference @@ -1 +1 @@ -Subproject commit 06f9e61931bcf58b91dfe6c924057e42ce273ee1 +Subproject commit 0e5ed7a4bec065f0cc18c35d1c904639e095314d diff --git a/src/doc/rust-by-example b/src/doc/rust-by-example index 1ca6a7bd1d73e..9d4132b56c499 160000 --- a/src/doc/rust-by-example +++ b/src/doc/rust-by-example @@ -1 +1 @@ -Subproject commit 1ca6a7bd1d73edc4a3e6c7d6a40f5d4b66c1e517 +Subproject commit 9d4132b56c4999cd3ce1aeca5f1b2f2cb0d11c24 diff --git a/src/doc/rustc-dev-guide b/src/doc/rustc-dev-guide index 9bf0028b55779..9198465b6ca8b 160000 --- a/src/doc/rustc-dev-guide +++ b/src/doc/rustc-dev-guide @@ -1 +1 @@ -Subproject commit 9bf0028b557798ddd07a6f652e4d0c635d3d6620 +Subproject commit 9198465b6ca8bed669df0cbb67c0e6d0b140803c diff --git a/src/llvm-project b/src/llvm-project index 6b3dbcc81a470..cba558df777a0 160000 --- a/src/llvm-project +++ b/src/llvm-project @@ -1 +1 @@ -Subproject commit 6b3dbcc81a470e5da84576d63fcfc19e3b1154cd +Subproject commit cba558df777a045b5657d56c29944e9e8fd3a776 diff --git a/src/test/ui/error-codes/E0025.stderr b/src/test/ui/error-codes/E0025.stderr index dfec6d0276a59..52a646cf515c6 100644 --- a/src/test/ui/error-codes/E0025.stderr +++ b/src/test/ui/error-codes/E0025.stderr @@ -2,8 +2,10 @@ error[E0025]: field `a` bound multiple times in the pattern --> $DIR/E0025.rs:8:21 | LL | let Foo { a: x, a: y, b: 0 } = x; - | ---- ^^^^ multiple uses of `a` in pattern - | | + | ---- ^^^^ + | | | + | | multiple uses of `a` in pattern + | | help: consider removing one usage of: ``a`` | first use of `a` error: aborting due to previous error diff --git a/src/test/ui/error-codes/E0268.stderr b/src/test/ui/error-codes/E0268.stderr index c926f9e487494..2e32d20ee47b7 100644 --- a/src/test/ui/error-codes/E0268.stderr +++ b/src/test/ui/error-codes/E0268.stderr @@ -2,7 +2,10 @@ error[E0268]: `break` outside of a loop --> $DIR/E0268.rs:2:5 | LL | break; - | ^^^^^ cannot `break` outside of a loop + | ^^^^^ + | | + | cannot `break` outside of a loop + | help: consider removing the: `break` error: aborting due to previous error diff --git a/src/test/ui/error-codes/E0697.rs b/src/test/ui/error-codes/E0697.rs new file mode 100644 index 0000000000000..f1afa63aac0d3 --- /dev/null +++ b/src/test/ui/error-codes/E0697.rs @@ -0,0 +1,3 @@ +fn main() { + static || {}; //~ ERROR E0697 +} diff --git a/src/test/ui/error-codes/E0697.stderr b/src/test/ui/error-codes/E0697.stderr new file mode 100644 index 0000000000000..5c862e48e75e0 --- /dev/null +++ b/src/test/ui/error-codes/E0697.stderr @@ -0,0 +1,9 @@ +error[E0697]: closures cannot be static + --> $DIR/E0697.rs:2:5 + | +LL | static || {}; + | ^^^^^^^^^ help: consider removing the: `static` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0697`. diff --git a/src/tools/rust-analyzer b/src/tools/rust-analyzer index 68319187d6370..f1d7f98ed07b9 160000 --- a/src/tools/rust-analyzer +++ b/src/tools/rust-analyzer @@ -1 +1 @@ -Subproject commit 68319187d63707fa36d7c215ed0e444e87d9652a +Subproject commit f1d7f98ed07b9934286b9c4809dd4d7a47537879