From 8ea53624c9a2c4aa6bd207dd25b8d2b19610c99f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Wed, 30 Jun 2021 16:26:20 -0700 Subject: [PATCH 1/9] Avoid ICE on type error recovery Fix #86756 --- compiler/rustc_typeck/src/astconv/mod.rs | 12 +++++-- src/test/ui/issues/issue-86756.rs | 12 +++++++ src/test/ui/issues/issue-86756.stderr | 46 ++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 src/test/ui/issues/issue-86756.rs create mode 100644 src/test/ui/issues/issue-86756.stderr diff --git a/compiler/rustc_typeck/src/astconv/mod.rs b/compiler/rustc_typeck/src/astconv/mod.rs index 10a7d69d5d3b7..e44a48cdf09c3 100644 --- a/compiler/rustc_typeck/src/astconv/mod.rs +++ b/compiler/rustc_typeck/src/astconv/mod.rs @@ -21,7 +21,7 @@ use rustc_hir::def_id::{DefId, LocalDefId}; use rustc_hir::intravisit::{walk_generics, Visitor as _}; use rustc_hir::lang_items::LangItem; use rustc_hir::{Constness, GenericArg, GenericArgs}; -use rustc_middle::ty::subst::{self, InternalSubsts, Subst, SubstsRef}; +use rustc_middle::ty::subst::{self, GenericArgKind, InternalSubsts, Subst, SubstsRef}; use rustc_middle::ty::GenericParamDefKind; use rustc_middle::ty::{self, Const, DefIdTree, Ty, TyCtxt, TypeFoldable}; use rustc_session::lint::builtin::AMBIGUOUS_ASSOCIATED_ITEMS; @@ -488,12 +488,20 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { tcx.ty_error().into() } else { // This is a default type parameter. + let substs = substs.unwrap(); + if substs.iter().any(|arg| match arg.unpack() { + GenericArgKind::Type(ty) => ty.references_error(), + _ => false, + }) { + // Avoid ICE #86756 when type error recovery goes awry. + return tcx.ty_error().into(); + } self.astconv .normalize_ty( self.span, tcx.at(self.span).type_of(param.def_id).subst_spanned( tcx, - substs.unwrap(), + substs, Some(self.span), ), ) diff --git a/src/test/ui/issues/issue-86756.rs b/src/test/ui/issues/issue-86756.rs new file mode 100644 index 0000000000000..7f864eb285074 --- /dev/null +++ b/src/test/ui/issues/issue-86756.rs @@ -0,0 +1,12 @@ +trait Foo {} +//~^ ERROR the name `T` is already used for a generic parameter in this item's generic parameters + +fn eq() { + eq:: + //~^ ERROR cannot find type `dyn` in this scope + //~| ERROR missing generics for trait `Foo` + //~| WARN trait objects without an explicit `dyn` are deprecated + //~| WARN this is accepted in the current edition +} + +fn main() {} diff --git a/src/test/ui/issues/issue-86756.stderr b/src/test/ui/issues/issue-86756.stderr new file mode 100644 index 0000000000000..1ef2198672660 --- /dev/null +++ b/src/test/ui/issues/issue-86756.stderr @@ -0,0 +1,46 @@ +error[E0403]: the name `T` is already used for a generic parameter in this item's generic parameters + --> $DIR/issue-86756.rs:1:14 + | +LL | trait Foo {} + | - ^ already used + | | + | first use of `T` + +error[E0412]: cannot find type `dyn` in this scope + --> $DIR/issue-86756.rs:5:10 + | +LL | fn eq() { + | - help: you might be missing a type parameter: `, dyn` +LL | eq:: + | ^^^ not found in this scope + +warning: trait objects without an explicit `dyn` are deprecated + --> $DIR/issue-86756.rs:5:15 + | +LL | eq:: + | ^^^ help: use `dyn`: `dyn Foo` + | + = note: `#[warn(bare_trait_objects)]` on by default + = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! + = note: for more information, see issue #80165 + +error[E0107]: missing generics for trait `Foo` + --> $DIR/issue-86756.rs:5:15 + | +LL | eq:: + | ^^^ expected at least 1 generic argument + | +note: trait defined here, with at least 1 generic parameter: `T` + --> $DIR/issue-86756.rs:1:7 + | +LL | trait Foo {} + | ^^^ - +help: add missing generic argument + | +LL | eq::> + | ^^^^^^ + +error: aborting due to 3 previous errors; 1 warning emitted + +Some errors have detailed explanations: E0107, E0403, E0412. +For more information about an error, try `rustc --explain E0107`. From 9792179648abb7bf38a9e54191cfe5a25436b8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Sat, 19 Jun 2021 00:00:00 +0000 Subject: [PATCH 2/9] Add flag to configure `large_assignments` lint The `large_assignments` lints detects moves over specified limit. The limit is configured through `move_size_limit = "N"` attribute placed at the root of a crate. When attribute is absent, the lint is disabled. Make it possible to enable the lint without making any changes to the source code, through a new flag `-Zmove-size-limit=N`. For example, to detect moves exceeding 1023 bytes in a cargo crate, including all dependencies one could use: ``` $ env RUSTFLAGS=-Zmove-size-limit=1024 cargo build -vv ``` --- compiler/rustc_interface/src/tests.rs | 1 + compiler/rustc_middle/src/middle/limits.rs | 7 +++- compiler/rustc_session/src/options.rs | 2 + .../src/compiler-flags/move-size-limit.md | 10 +++++ ...es.stderr => large_moves.attribute.stderr} | 8 ++-- .../ui/async-await/large_moves.option.stderr | 38 +++++++++++++++++++ src/test/ui/async-await/large_moves.rs | 4 +- 7 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 src/doc/unstable-book/src/compiler-flags/move-size-limit.md rename src/test/ui/async-await/{large_moves.stderr => large_moves.attribute.stderr} (88%) create mode 100644 src/test/ui/async-await/large_moves.option.stderr diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs index b252409a92ada..76dc31d187678 100644 --- a/compiler/rustc_interface/src/tests.rs +++ b/compiler/rustc_interface/src/tests.rs @@ -720,6 +720,7 @@ fn test_debugging_options_tracking_hash() { tracked!(merge_functions, Some(MergeFunctions::Disabled)); tracked!(mir_emit_retag, true); tracked!(mir_opt_level, Some(4)); + tracked!(move_size_limit, Some(4096)); tracked!(mutable_noalias, Some(true)); tracked!(new_llvm_pass_manager, Some(true)); tracked!(no_generate_arange_section, true); diff --git a/compiler/rustc_middle/src/middle/limits.rs b/compiler/rustc_middle/src/middle/limits.rs index c4bfd0ebb2fde..7ea4902f4bc39 100644 --- a/compiler/rustc_middle/src/middle/limits.rs +++ b/compiler/rustc_middle/src/middle/limits.rs @@ -21,7 +21,12 @@ use std::num::IntErrorKind; pub fn provide(providers: &mut ty::query::Providers) { providers.limits = |tcx, ()| Limits { recursion_limit: get_recursion_limit(tcx.hir().krate_attrs(), tcx.sess), - move_size_limit: get_limit(tcx.hir().krate_attrs(), tcx.sess, sym::move_size_limit, 0), + move_size_limit: get_limit( + tcx.hir().krate_attrs(), + tcx.sess, + sym::move_size_limit, + tcx.sess.opts.debugging_opts.move_size_limit.unwrap_or(0), + ), type_length_limit: get_limit( tcx.hir().krate_attrs(), tcx.sess, diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 4c40d0c367eca..4232d60481607 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1147,6 +1147,8 @@ options! { (default: no)"), mir_opt_level: Option = (None, parse_opt_number, [TRACKED], "MIR optimization level (0-4; default: 1 in non optimized builds and 2 in optimized builds)"), + move_size_limit: Option = (None, parse_opt_number, [TRACKED], + "the size at which the `large_assignments` lint starts to be emitted"), mutable_noalias: Option = (None, parse_opt_bool, [TRACKED], "emit noalias metadata for mutable references (default: yes for LLVM >= 12, otherwise no)"), new_llvm_pass_manager: Option = (None, parse_opt_bool, [TRACKED], diff --git a/src/doc/unstable-book/src/compiler-flags/move-size-limit.md b/src/doc/unstable-book/src/compiler-flags/move-size-limit.md new file mode 100644 index 0000000000000..88f022af2ecf2 --- /dev/null +++ b/src/doc/unstable-book/src/compiler-flags/move-size-limit.md @@ -0,0 +1,10 @@ +# `move_size_limit` + +-------------------- + +The `-Zmove-size-limit=N` compiler flag enables `large_assignments` lints which +will warn when moving objects whose size exceeds `N` bytes. + +Lint warns only about moves in functions that participate in code generation. +Consequently it will be ineffective for compiler invocatation that emit +metadata only, i.e., `cargo check` like workflows. diff --git a/src/test/ui/async-await/large_moves.stderr b/src/test/ui/async-await/large_moves.attribute.stderr similarity index 88% rename from src/test/ui/async-await/large_moves.stderr rename to src/test/ui/async-await/large_moves.attribute.stderr index 8c47ec0ed9d38..39b7e7cb345bd 100644 --- a/src/test/ui/async-await/large_moves.stderr +++ b/src/test/ui/async-await/large_moves.attribute.stderr @@ -1,5 +1,5 @@ error: moving 10024 bytes - --> $DIR/large_moves.rs:10:13 + --> $DIR/large_moves.rs:12:13 | LL | let x = async { | _____________^ @@ -17,19 +17,19 @@ LL | #![deny(large_assignments)] | ^^^^^^^^^^^^^^^^^ error: moving 10024 bytes - --> $DIR/large_moves.rs:16:14 + --> $DIR/large_moves.rs:18:14 | LL | let z = (x, 42); | ^ value moved from here error: moving 10024 bytes - --> $DIR/large_moves.rs:16:13 + --> $DIR/large_moves.rs:18:13 | LL | let z = (x, 42); | ^^^^^^^ value moved from here error: moving 10024 bytes - --> $DIR/large_moves.rs:18:13 + --> $DIR/large_moves.rs:20:13 | LL | let a = z.0; | ^^^ value moved from here diff --git a/src/test/ui/async-await/large_moves.option.stderr b/src/test/ui/async-await/large_moves.option.stderr new file mode 100644 index 0000000000000..39b7e7cb345bd --- /dev/null +++ b/src/test/ui/async-await/large_moves.option.stderr @@ -0,0 +1,38 @@ +error: moving 10024 bytes + --> $DIR/large_moves.rs:12:13 + | +LL | let x = async { + | _____________^ +LL | | let y = [0; 9999]; +LL | | dbg!(y); +LL | | thing(&y).await; +LL | | dbg!(y); +LL | | }; + | |_____^ value moved from here + | +note: the lint level is defined here + --> $DIR/large_moves.rs:1:9 + | +LL | #![deny(large_assignments)] + | ^^^^^^^^^^^^^^^^^ + +error: moving 10024 bytes + --> $DIR/large_moves.rs:18:14 + | +LL | let z = (x, 42); + | ^ value moved from here + +error: moving 10024 bytes + --> $DIR/large_moves.rs:18:13 + | +LL | let z = (x, 42); + | ^^^^^^^ value moved from here + +error: moving 10024 bytes + --> $DIR/large_moves.rs:20:13 + | +LL | let a = z.0; + | ^^^ value moved from here + +error: aborting due to 4 previous errors + diff --git a/src/test/ui/async-await/large_moves.rs b/src/test/ui/async-await/large_moves.rs index 4fac046beef62..18bb538a81eb1 100644 --- a/src/test/ui/async-await/large_moves.rs +++ b/src/test/ui/async-await/large_moves.rs @@ -1,8 +1,10 @@ #![deny(large_assignments)] #![feature(large_assignments)] -#![move_size_limit = "1000"] +#![cfg_attr(attribute, move_size_limit = "1000")] // build-fail // only-x86_64 +// revisions: attribute option +// [option]compile-flags: -Zmove-size-limit=1000 // edition:2018 From 3b9f8116a2d82ad2a0c10f5cc7d45fb344d77f0e Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 24 Jul 2021 14:08:04 +0200 Subject: [PATCH 3/9] get rid of NoMirFor error variant --- .../rustc_middle/src/mir/interpret/error.rs | 3 --- compiler/rustc_mir/src/const_eval/machine.rs | 19 ++++--------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/compiler/rustc_middle/src/mir/interpret/error.rs b/compiler/rustc_middle/src/mir/interpret/error.rs index 94ac303b109a5..dad23d6255afb 100644 --- a/compiler/rustc_middle/src/mir/interpret/error.rs +++ b/compiler/rustc_middle/src/mir/interpret/error.rs @@ -402,8 +402,6 @@ impl fmt::Display for UndefinedBehaviorInfo<'_> { pub enum UnsupportedOpInfo { /// Free-form case. Only for errors that are never caught! Unsupported(String), - /// Could not find MIR for a function. - NoMirFor(DefId), /// Encountered a pointer where we needed raw bytes. ReadPointerAsBytes, // @@ -421,7 +419,6 @@ impl fmt::Display for UnsupportedOpInfo { match self { Unsupported(ref msg) => write!(f, "{}", msg), ReadExternStatic(did) => write!(f, "cannot read from extern static ({:?})", did), - NoMirFor(did) => write!(f, "no MIR body is available for {:?}", did), ReadPointerAsBytes => write!(f, "unable to turn pointer into raw bytes",), ThreadLocalStatic(did) => write!(f, "cannot access thread local static ({:?})", did), } diff --git a/compiler/rustc_mir/src/const_eval/machine.rs b/compiler/rustc_mir/src/const_eval/machine.rs index c809f4f273aa5..daaf68c1d2bd5 100644 --- a/compiler/rustc_mir/src/const_eval/machine.rs +++ b/compiler/rustc_mir/src/const_eval/machine.rs @@ -212,7 +212,9 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir, if ecx.tcx.is_ctfe_mir_available(def.did) { Ok(ecx.tcx.mir_for_ctfe_opt_const_arg(def)) } else { - throw_unsup!(NoMirFor(def.did)) + let path = ecx.tcx.def_path_str(def.did); + Err(ConstEvalErrKind::NeedsRfc(format!("calling extern function `{}`", path)) + .into()) } } _ => Ok(ecx.tcx.instance_mir(instance)), @@ -247,20 +249,7 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir, } } // This is a const fn. Call it. - Ok(Some(match ecx.load_mir(instance.def, None) { - Ok(body) => body, - Err(err) => { - if let err_unsup!(NoMirFor(did)) = err.kind() { - let path = ecx.tcx.def_path_str(*did); - return Err(ConstEvalErrKind::NeedsRfc(format!( - "calling extern function `{}`", - path - )) - .into()); - } - return Err(err); - } - })) + Ok(Some(ecx.load_mir(instance.def, None)?)) } fn call_intrinsic( From 5407b42cd87c3f42e46e9ed9cfeb5a8a390d2bc0 Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Sun, 25 Jul 2021 06:02:07 +0100 Subject: [PATCH 4/9] macos current_exe using directly libc instead. --- Cargo.lock | 4 ++-- library/std/Cargo.toml | 2 +- library/std/src/sys/unix/os.rs | 7 ++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 553d9d05e57ba..673e609fa6f48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1880,9 +1880,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.93" +version = "0.2.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41" +checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" dependencies = [ "rustc-std-workspace-core", ] diff --git a/library/std/Cargo.toml b/library/std/Cargo.toml index 415d874c7faa6..8494563bcd977 100644 --- a/library/std/Cargo.toml +++ b/library/std/Cargo.toml @@ -16,7 +16,7 @@ cfg-if = { version = "0.1.8", features = ['rustc-dep-of-std'] } panic_unwind = { path = "../panic_unwind", optional = true } panic_abort = { path = "../panic_abort" } core = { path = "../core" } -libc = { version = "0.2.93", default-features = false, features = ['rustc-dep-of-std'] } +libc = { version = "0.2.98", default-features = false, features = ['rustc-dep-of-std'] } compiler_builtins = { version = "0.1.44" } profiler_builtins = { path = "../profiler_builtins", optional = true } unwind = { path = "../unwind" } diff --git a/library/std/src/sys/unix/os.rs b/library/std/src/sys/unix/os.rs index d3c874edf2dc4..cc0802ed709cb 100644 --- a/library/std/src/sys/unix/os.rs +++ b/library/std/src/sys/unix/os.rs @@ -350,17 +350,14 @@ pub fn current_exe() -> io::Result { #[cfg(any(target_os = "macos", target_os = "ios"))] pub fn current_exe() -> io::Result { - extern "C" { - fn _NSGetExecutablePath(buf: *mut libc::c_char, bufsize: *mut u32) -> libc::c_int; - } unsafe { let mut sz: u32 = 0; - _NSGetExecutablePath(ptr::null_mut(), &mut sz); + libc::_NSGetExecutablePath(ptr::null_mut(), &mut sz); if sz == 0 { return Err(io::Error::last_os_error()); } let mut v: Vec = Vec::with_capacity(sz as usize); - let err = _NSGetExecutablePath(v.as_mut_ptr() as *mut i8, &mut sz); + let err = libc::_NSGetExecutablePath(v.as_mut_ptr() as *mut i8, &mut sz); if err != 0 { return Err(io::Error::last_os_error()); } From cccd4e2a27571e47e997cf948c9d8d881e6352f1 Mon Sep 17 00:00:00 2001 From: Chris Midgley Date: Mon, 26 Jul 2021 22:12:35 +0100 Subject: [PATCH 5/9] fix typo: whenver -> whenever --- library/core/src/cell.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/core/src/cell.rs b/library/core/src/cell.rs index 24b0797f93a50..f0c934edf3977 100644 --- a/library/core/src/cell.rs +++ b/library/core/src/cell.rs @@ -583,7 +583,7 @@ impl Cell<[T]> { pub struct RefCell { borrow: Cell, // Stores the location of the earliest currently active borrow. - // This gets updated whenver we go from having zero borrows + // This gets updated whenever we go from having zero borrows // to having a single borrow. When a borrow occurs, this gets included // in the generated `BorrowError/`BorrowMutError` #[cfg(feature = "debug_refcell")] From a397fdcc3858a4c6d63f7dd88994d2214ded4482 Mon Sep 17 00:00:00 2001 From: Ibraheem Ahmed Date: Mon, 26 Jul 2021 20:17:28 -0400 Subject: [PATCH 6/9] Remove ASCII fast path from rustc_lexer::{is_id_continue, is_id_start} --- compiler/rustc_lexer/src/lib.rs | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/compiler/rustc_lexer/src/lib.rs b/compiler/rustc_lexer/src/lib.rs index 4cb2a6ca50f8d..b5e6d256a996a 100644 --- a/compiler/rustc_lexer/src/lib.rs +++ b/compiler/rustc_lexer/src/lib.rs @@ -273,24 +273,14 @@ pub fn is_whitespace(c: char) -> bool { /// a formal definition of valid identifier name. pub fn is_id_start(c: char) -> bool { // This is XID_Start OR '_' (which formally is not a XID_Start). - // We also add fast-path for ascii idents - ('a'..='z').contains(&c) - || ('A'..='Z').contains(&c) - || c == '_' - || (c > '\x7f' && unicode_xid::UnicodeXID::is_xid_start(c)) + c == '_' || unicode_xid::UnicodeXID::is_xid_start(c) } /// True if `c` is valid as a non-first character of an identifier. /// See [Rust language reference](https://doc.rust-lang.org/reference/identifiers.html) for /// a formal definition of valid identifier name. pub fn is_id_continue(c: char) -> bool { - // This is exactly XID_Continue. - // We also add fast-path for ascii idents - ('a'..='z').contains(&c) - || ('A'..='Z').contains(&c) - || ('0'..='9').contains(&c) - || c == '_' - || (c > '\x7f' && unicode_xid::UnicodeXID::is_xid_continue(c)) + unicode_xid::UnicodeXID::is_xid_continue(c) } /// The passed string is lexically an identifier. From de27d68beb6e5b53247a7aaad83680d172ab93ba Mon Sep 17 00:00:00 2001 From: ibraheemdev Date: Mon, 26 Jul 2021 20:55:31 -0400 Subject: [PATCH 7/9] update unicode-xid dependency --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 553d9d05e57ba..b0dbe28352357 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5409,9 +5409,9 @@ dependencies = [ [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unicode_categories" From 38663c07817a6ade0b73401268482eef45a07f67 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 26 Jul 2021 21:39:58 -0700 Subject: [PATCH 8/9] Update cargo --- src/tools/cargo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/cargo b/src/tools/cargo index cebef2951ee69..d21c22870e584 160000 --- a/src/tools/cargo +++ b/src/tools/cargo @@ -1 +1 @@ -Subproject commit cebef2951ee69617852844894164b54ed478a7da +Subproject commit d21c22870e58499d6c31f1bef3bf1255eb021666 From 07727c870f1cf0554c77aeaf4a1098cce9e6b9cf Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 26 Jul 2021 21:46:55 -0700 Subject: [PATCH 9/9] Update books --- src/doc/book | 2 +- src/doc/edition-guide | 2 +- src/doc/nomicon | 2 +- src/doc/reference | 2 +- src/doc/rust-by-example | 2 +- src/doc/rustc-dev-guide | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/doc/book b/src/doc/book index eac5531421051..a07036f864b37 160000 --- a/src/doc/book +++ b/src/doc/book @@ -1 +1 @@ -Subproject commit eac55314210519238652f12b30fec9daea61f7fe +Subproject commit a07036f864b37896b31eb996cd7aedb489f69a1f diff --git a/src/doc/edition-guide b/src/doc/edition-guide index af696ce8ea526..3710b0cae783d 160000 --- a/src/doc/edition-guide +++ b/src/doc/edition-guide @@ -1 +1 @@ -Subproject commit af696ce8ea526445590ae0ca66a8128d2a95a69a +Subproject commit 3710b0cae783d0bcd2b42452a63b081473f5970a diff --git a/src/doc/nomicon b/src/doc/nomicon index 7a13537f96af4..f51734eb5566c 160000 --- a/src/doc/nomicon +++ b/src/doc/nomicon @@ -1 +1 @@ -Subproject commit 7a13537f96af4b9b8e3ea296d6e5c3c7ab72ce9f +Subproject commit f51734eb5566c826b471977747ea3d7d6915bbe9 diff --git a/src/doc/reference b/src/doc/reference index 82d75cf423e4a..3b7be075af5d6 160000 --- a/src/doc/reference +++ b/src/doc/reference @@ -1 +1 @@ -Subproject commit 82d75cf423e4a7824fb36e73ccb18519d6900610 +Subproject commit 3b7be075af5d6e402a18efff672a8a265b4596fd diff --git a/src/doc/rust-by-example b/src/doc/rust-by-example index 1db6bb483cc87..0dc9cd4e89f00 160000 --- a/src/doc/rust-by-example +++ b/src/doc/rust-by-example @@ -1 +1 @@ -Subproject commit 1db6bb483cc87ad3b424d9aba764fe622960a1be +Subproject commit 0dc9cd4e89f00cb5230f120e1a083916386e422b diff --git a/src/doc/rustc-dev-guide b/src/doc/rustc-dev-guide index 93422c21baca5..09343d6f921d2 160000 --- a/src/doc/rustc-dev-guide +++ b/src/doc/rustc-dev-guide @@ -1 +1 @@ -Subproject commit 93422c21baca585dc88357ec886a48f6ddc7d665 +Subproject commit 09343d6f921d2a07c66f8c41ec3d65bf1fa52556