diff --git a/compiler/rustc_target/src/spec/m68k_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/m68k_unknown_linux_gnu.rs index fff7b25a349..5671b59c63f 100644 --- a/compiler/rustc_target/src/spec/m68k_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/m68k_unknown_linux_gnu.rs @@ -2,7 +2,7 @@ use crate::abi::Endian; use crate::spec::{Target, TargetOptions}; pub fn target() -> Target { - let mut base = super::linux_base::opts(); + let mut base = super::linux_gnu_base::opts(); base.max_atomic_width = Some(32); Target { diff --git a/compiler/rustc_typeck/src/check/generator_interior.rs b/compiler/rustc_typeck/src/check/generator_interior.rs index 2910ce6de68..37e601fa404 100644 --- a/compiler/rustc_typeck/src/check/generator_interior.rs +++ b/compiler/rustc_typeck/src/check/generator_interior.rs @@ -536,22 +536,28 @@ pub fn check_must_not_suspend_ty<'tcx>( } has_emitted } - ty::Tuple(ref tys) => { + ty::Tuple(_) => { let mut has_emitted = false; - let spans = if let Some(hir::ExprKind::Tup(comps)) = data.expr.map(|e| &e.kind) { - debug_assert_eq!(comps.len(), tys.len()); - comps.iter().map(|e| e.span).collect() - } else { - vec![] + let comps = match data.expr.map(|e| &e.kind) { + Some(hir::ExprKind::Tup(comps)) => { + debug_assert_eq!(comps.len(), ty.tuple_fields().count()); + Some(comps) + } + _ => None, }; - for (i, ty) in tys.iter().map(|k| k.expect_ty()).enumerate() { + for (i, ty) in ty.tuple_fields().enumerate() { let descr_post = &format!(" in tuple element {}", i); - let span = *spans.get(i).unwrap_or(&data.source_span); + let span = comps.and_then(|c| c.get(i)).map(|e| e.span).unwrap_or(data.source_span); if check_must_not_suspend_ty( fcx, ty, hir_id, - SuspendCheckData { descr_post, source_span: span, ..data }, + SuspendCheckData { + descr_post, + expr: comps.and_then(|comps| comps.get(i)), + source_span: span, + ..data + }, ) { has_emitted = true; } diff --git a/src/bootstrap/download-ci-llvm-stamp b/src/bootstrap/download-ci-llvm-stamp index 19e5fffcc2d..ef635ee26df 100644 --- a/src/bootstrap/download-ci-llvm-stamp +++ b/src/bootstrap/download-ci-llvm-stamp @@ -1,4 +1,4 @@ Change this file to make users of the `download-ci-llvm` configuration download a new version of LLVM from CI, even if the LLVM submodule hasn’t changed. -Last change is for: https://github.com/rust-lang/rust/pull/88069 +Last change is for: https://github.com/rust-lang/rust/pull/91229 diff --git a/src/doc/rustdoc/src/documentation-tests.md b/src/doc/rustdoc/src/documentation-tests.md index 6be53fb4cfe..aea55d4f4b6 100644 --- a/src/doc/rustdoc/src/documentation-tests.md +++ b/src/doc/rustdoc/src/documentation-tests.md @@ -359,9 +359,8 @@ are added. # fn foo() {} ``` -`edition2018` tells `rustdoc` that the code sample should be compiled using -the 2018 edition of Rust. Similarly, you can specify `edition2015` to compile -the code with the 2015 edition. +`edition2015`, `edition2018` and `edition2021` tell `rustdoc` +that the code sample should be compiled using the respective edition of Rust. ```rust /// Only runs on the 2018 edition. diff --git a/src/test/ui/typeck/issue-91334.rs b/src/test/ui/typeck/issue-91334.rs new file mode 100644 index 00000000000..bf9a5a62620 --- /dev/null +++ b/src/test/ui/typeck/issue-91334.rs @@ -0,0 +1,10 @@ +// Regression test for the ICE described in issue #91334. + +// error-pattern: this file contains an unclosed delimiter +// error-pattern: expected one of +// error-pattern: mismatched closing delimiter +// error-pattern: mismatched types + +#![feature(generators)] + +fn f(){||yield(((){), diff --git a/src/test/ui/typeck/issue-91334.stderr b/src/test/ui/typeck/issue-91334.stderr new file mode 100644 index 00000000000..358cc771b7c --- /dev/null +++ b/src/test/ui/typeck/issue-91334.stderr @@ -0,0 +1,50 @@ +error: this file contains an unclosed delimiter + --> $DIR/issue-91334.rs:10:23 + | +LL | fn f(){||yield(((){), + | - - ^ + | | | + | | unclosed delimiter + | unclosed delimiter + +error: this file contains an unclosed delimiter + --> $DIR/issue-91334.rs:10:23 + | +LL | fn f(){||yield(((){), + | - - ^ + | | | + | | unclosed delimiter + | unclosed delimiter + +error: expected one of `)`, `,`, `.`, `?`, or an operator, found `{` + --> $DIR/issue-91334.rs:10:19 + | +LL | fn f(){||yield(((){), + | ^ + | | + | expected one of `)`, `,`, `.`, `?`, or an operator + | help: missing `,` + +error: mismatched closing delimiter: `)` + --> $DIR/issue-91334.rs:10:19 + | +LL | fn f(){||yield(((){), + | - ^^ mismatched closing delimiter + | | | + | | unclosed delimiter + | closing delimiter possibly meant for this + +error[E0308]: mismatched types + --> $DIR/issue-91334.rs:10:8 + | +LL | fn f(){||yield(((){), + | -^^^^^^^^^^^^^^^ expected `()`, found generator + | | + | help: try adding a return type: `-> [generator@$DIR/issue-91334.rs:10:8: 10:23]` + | + = note: expected unit type `()` + found generator `[generator@$DIR/issue-91334.rs:10:8: 10:23]` + +error: aborting due to 5 previous errors + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/tools/rustdoc-gui/tester.js b/src/tools/rustdoc-gui/tester.js index 0d6a2605d4f..3feb4940d87 100644 --- a/src/tools/rustdoc-gui/tester.js +++ b/src/tools/rustdoc-gui/tester.js @@ -172,11 +172,16 @@ async function main(argv) { } files.sort(); + if (no_headless) { + opts["jobs"] = 1; + console.log("`--no-headless` option is active, disabling concurrency for running tests."); + } + console.log(`Running ${files.length} rustdoc-gui (${opts["jobs"]} concurrently) ...`); if (opts["jobs"] < 1) { process.setMaxListeners(files.length + 1); - } else { + } else if (!no_headless) { process.setMaxListeners(opts["jobs"] + 1); } @@ -217,9 +222,7 @@ async function main(argv) { tests_queue.splice(tests_queue.indexOf(callback), 1); }); tests_queue.push(callback); - if (no_headless) { - await tests_queue[i]; - } else if (opts["jobs"] > 0 && tests_queue.length >= opts["jobs"]) { + if (opts["jobs"] > 0 && tests_queue.length >= opts["jobs"]) { await Promise.race(tests_queue); } }