about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/codegen/llvm-ident.rs15
-rw-r--r--tests/codegen/target-feature-inline-closure.rs33
-rw-r--r--tests/run-make/comment-section/Makefile15
-rw-r--r--tests/run-make/llvm-ident/Makefile19
-rw-r--r--tests/rustdoc-gui/item-decl-colors.goml49
-rw-r--r--tests/ui/anonymous-higher-ranked-lifetime.stderr22
-rw-r--r--tests/ui/closures/multiple-fn-bounds.stderr2
-rw-r--r--tests/ui/consts/const-size_of-cycle.stderr3
-rw-r--r--tests/ui/consts/issue-44415.stderr3
-rw-r--r--tests/ui/dropck/explicit-drop-bounds.bad1.stderr4
-rw-r--r--tests/ui/dropck/explicit-drop-bounds.bad2.stderr4
-rw-r--r--tests/ui/dyn-star/param-env-region-infer.next.stderr2
-rw-r--r--tests/ui/generics/issue-32498.rs1
-rw-r--r--tests/ui/layout/issue-113941.rs13
-rw-r--r--tests/ui/layout/valid_range_oob.stderr4
-rw-r--r--tests/ui/lint/invalid_value.stderr6
-rw-r--r--tests/ui/mismatched_types/closure-arg-type-mismatch-issue-45727.stderr4
-rw-r--r--tests/ui/mismatched_types/closure-arg-type-mismatch.stderr2
-rw-r--r--tests/ui/mismatched_types/issue-36053-2.stderr2
-rw-r--r--tests/ui/mismatched_types/suggest-option-asderef-inference-var.stderr2
-rw-r--r--tests/ui/mismatched_types/suggest-option-asderef.fixed2
-rw-r--r--tests/ui/mismatched_types/suggest-option-asderef.rs2
-rw-r--r--tests/ui/mismatched_types/suggest-option-asderef.stderr2
-rw-r--r--tests/ui/parser/async-with-nonterminal-block.rs16
-rw-r--r--tests/ui/parser/try-with-nonterminal-block.rs19
-rw-r--r--tests/ui/recursion/issue-26548-recursion-via-normalize.rs10
-rw-r--r--tests/ui/recursion/issue-26548-recursion-via-normalize.stderr10
-rw-r--r--tests/ui/recursion_limit/zero-overflow.rs2
-rw-r--r--tests/ui/recursion_limit/zero-overflow.stderr4
-rw-r--r--tests/ui/rfcs/rfc-2396-target_feature-11/issue-108655-inline-always-closure.rs18
-rw-r--r--tests/ui/sized/recursive-type-2.rs2
-rw-r--r--tests/ui/sized/recursive-type-2.stderr12
-rw-r--r--tests/ui/specialization/min_specialization/issue-79224.stderr4
-rw-r--r--tests/ui/suggestions/late-bound-in-borrow-closure-sugg.stderr2
-rw-r--r--tests/ui/transmute/transmute-fat-pointers.rs12
-rw-r--r--tests/ui/type-alias-impl-trait/issue-53092-2.stderr2
-rw-r--r--tests/ui/typeck/mismatched-map-under-self.rs17
-rw-r--r--tests/ui/typeck/mismatched-map-under-self.stderr37
38 files changed, 286 insertions, 92 deletions
diff --git a/tests/codegen/llvm-ident.rs b/tests/codegen/llvm-ident.rs
new file mode 100644
index 00000000000..927f0d602ad
--- /dev/null
+++ b/tests/codegen/llvm-ident.rs
@@ -0,0 +1,15 @@
+// Verifies that the `!llvm.ident` named metadata is emitted.
+//
+// revisions: NONE OPT DEBUG
+//
+// [OPT] compile-flags: -Copt-level=2
+// [DEBUG] compile-flags: -Cdebuginfo=2
+
+// The named metadata should contain a single metadata node (see
+// `LLVMRustPrepareThinLTOImport` for details).
+// CHECK: !llvm.ident = !{![[ID:[0-9]+]]}
+
+// In addition, check that the metadata node has the expected content.
+// CHECK: ![[ID]] = !{!"rustc version 1.{{.*}}"}
+
+fn main() {}
diff --git a/tests/codegen/target-feature-inline-closure.rs b/tests/codegen/target-feature-inline-closure.rs
new file mode 100644
index 00000000000..d075706173f
--- /dev/null
+++ b/tests/codegen/target-feature-inline-closure.rs
@@ -0,0 +1,33 @@
+// only-x86_64
+// compile-flags: -Copt-level=3
+
+#![crate_type = "lib"]
+#![feature(target_feature_11)]
+
+#[cfg(target_arch = "x86_64")]
+use std::arch::x86_64::*;
+
+// CHECK-LABEL: @with_avx
+#[no_mangle]
+#[cfg(target_arch = "x86_64")]
+#[target_feature(enable = "avx")]
+fn with_avx(x: __m256) -> __m256 {
+    // CHECK: fadd
+    let add = {
+        #[inline(always)]
+        |x, y| unsafe { _mm256_add_ps(x, y) }
+    };
+    add(x, x)
+}
+
+// CHECK-LABEL: @without_avx
+#[no_mangle]
+#[cfg(target_arch = "x86_64")]
+unsafe fn without_avx(x: __m256) -> __m256 {
+    // CHECK-NOT: fadd
+    let add = {
+        #[inline(always)]
+        |x, y| unsafe { _mm256_add_ps(x, y) }
+    };
+    add(x, x)
+}
diff --git a/tests/run-make/comment-section/Makefile b/tests/run-make/comment-section/Makefile
new file mode 100644
index 00000000000..9f810063cc8
--- /dev/null
+++ b/tests/run-make/comment-section/Makefile
@@ -0,0 +1,15 @@
+include ../tools.mk
+
+# only-linux
+
+all:
+	echo 'fn main(){}' | $(RUSTC) - --emit=link,obj -Csave-temps --target=$(TARGET)
+
+	# Check linked output has a `.comment` section with the expected content.
+	readelf -p '.comment' $(TMPDIR)/rust_out | $(CGREP) -F 'rustc version 1.'
+
+	# Check all object files (including temporary outputs) have a `.comment`
+	# section with the expected content.
+	set -e; for f in $(TMPDIR)/*.o; do \
+		readelf -p '.comment' $$f | $(CGREP) -F 'rustc version 1.'; \
+	done
diff --git a/tests/run-make/llvm-ident/Makefile b/tests/run-make/llvm-ident/Makefile
new file mode 100644
index 00000000000..e583e6018e0
--- /dev/null
+++ b/tests/run-make/llvm-ident/Makefile
@@ -0,0 +1,19 @@
+include ../tools.mk
+
+# only-linux
+
+all:
+	# `-Ccodegen-units=16 -Copt-level=2` is used here to trigger thin LTO
+	# across codegen units to test deduplication of the named metadata
+	# (see `LLVMRustPrepareThinLTOImport` for details).
+	echo 'fn main(){}' | $(RUSTC) - --emit=link,obj -Csave-temps -Ccodegen-units=16 -Copt-level=2 --target=$(TARGET)
+
+	# `llvm-dis` is used here since `--emit=llvm-ir` does not emit LLVM IR
+	# for temporary outputs.
+	"$(LLVM_BIN_DIR)"/llvm-dis $(TMPDIR)/*.bc
+
+	# Check LLVM IR files (including temporary outputs) have `!llvm.ident`
+	# named metadata, reusing the related codegen test.
+	set -e; for f in $(TMPDIR)/*.ll; do \
+		$(LLVM_FILECHECK) --input-file $$f ../../codegen/llvm-ident.rs; \
+	done
diff --git a/tests/rustdoc-gui/item-decl-colors.goml b/tests/rustdoc-gui/item-decl-colors.goml
index 5732dd8eea2..a777842735c 100644
--- a/tests/rustdoc-gui/item-decl-colors.goml
+++ b/tests/rustdoc-gui/item-decl-colors.goml
@@ -20,6 +20,7 @@ define-function: (
     block {
         go-to: "file://" + |DOC_PATH| + "/test_docs/struct.WithGenerics.html"
         show-text: true
+
         set-local-storage: {"rustdoc-theme": |theme|, "rustdoc-use-system-theme": "false"}
         reload:
         assert-css: (".item-decl .code-attribute", {"color": |attr_color|}, ALL)
@@ -40,41 +41,41 @@ call-function: (
     "check-colors",
     {
         "theme": "ayu",
-        "attr_color": "rgb(153, 153, 153)",
-        "trait_color": "rgb(57, 175, 215)",
-        "struct_color": "rgb(255, 160, 165)",
-        "enum_color": "rgb(255, 160, 165)",
-        "primitive_color": "rgb(255, 160, 165)",
-        "constant_color": "rgb(57, 175, 215)",
-        "fn_color": "rgb(253, 214, 135)",
-        "assoc_type_color": "rgb(57, 175, 215)",
+        "attr_color": "#999",
+        "trait_color": "#39afd7",
+        "struct_color": "#ffa0a5",
+        "enum_color": "#ffa0a5",
+        "primitive_color": "#ffa0a5",
+        "constant_color": "#39afd7",
+        "fn_color": "#fdd687",
+        "assoc_type_color": "#39afd7",
     },
 )
 call-function: (
     "check-colors",
     {
         "theme": "dark",
-        "attr_color": "rgb(153, 153, 153)",
-        "trait_color": "rgb(183, 140, 242)",
-        "struct_color": "rgb(45, 191, 184)",
-        "enum_color": "rgb(45, 191, 184)",
-        "primitive_color": "rgb(45, 191, 184)",
-        "constant_color": "rgb(210, 153, 29)",
-        "fn_color": "rgb(43, 171, 99)",
-        "assoc_type_color": "rgb(210, 153, 29)",
+        "attr_color": "#999",
+        "trait_color": "#b78cf2",
+        "struct_color": "#2dbfb8",
+        "enum_color": "#2dbfb8",
+        "primitive_color": "#2dbfb8",
+        "constant_color": "#d2991d",
+        "fn_color": "#2bab63",
+        "assoc_type_color": "#d2991d",
     },
 )
 call-function: (
     "check-colors",
     {
         "theme": "light",
-        "attr_color": "rgb(153, 153, 153)",
-        "trait_color": "rgb(110, 79, 201)",
-        "struct_color": "rgb(173, 55, 138)",
-        "enum_color": "rgb(173, 55, 138)",
-        "primitive_color": "rgb(173, 55, 138)",
-        "constant_color": "rgb(56, 115, 173)",
-        "fn_color": "rgb(173, 124, 55)",
-        "assoc_type_color": "rgb(56, 115, 173)",
+        "attr_color": "#999",
+        "trait_color": "#6e4fc9",
+        "struct_color": "#ad378a",
+        "enum_color": "#ad378a",
+        "primitive_color": "#ad378a",
+        "constant_color": "#3873ad",
+        "fn_color": "#ad7c37",
+        "assoc_type_color": "#3873ad",
     },
 )
diff --git a/tests/ui/anonymous-higher-ranked-lifetime.stderr b/tests/ui/anonymous-higher-ranked-lifetime.stderr
index c023d1b1590..e441cbdc866 100644
--- a/tests/ui/anonymous-higher-ranked-lifetime.stderr
+++ b/tests/ui/anonymous-higher-ranked-lifetime.stderr
@@ -13,7 +13,7 @@ note: required by a bound in `f1`
    |
 LL | fn f1<F>(_: F) where F: Fn(&(), &()) {}
    |                         ^^^^^^^^^^^^ required by this bound in `f1`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     f1(|_: &(), _: &()| {});
    |            +       +
@@ -33,7 +33,7 @@ note: required by a bound in `f2`
    |
 LL | fn f2<F>(_: F) where F: for<'a> Fn(&'a (), &()) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `f2`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     f2(|_: &(), _: &()| {});
    |            +       +
@@ -53,7 +53,7 @@ note: required by a bound in `f3`
    |
 LL | fn f3<'a, F>(_: F) where F: Fn(&'a (), &()) {}
    |                             ^^^^^^^^^^^^^^^ required by this bound in `f3`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     f3(|_: &(), _: &()| {});
    |            +       +
@@ -73,7 +73,7 @@ note: required by a bound in `f4`
    |
 LL | fn f4<F>(_: F) where F: for<'r> Fn(&(), &'r ()) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `f4`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     f4(|_: &(), _: &()| {});
    |            +       +
@@ -93,7 +93,7 @@ note: required by a bound in `f5`
    |
 LL | fn f5<F>(_: F) where F: for<'r> Fn(&'r (), &'r ()) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `f5`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     f5(|_: &(), _: &()| {});
    |            +       +
@@ -113,7 +113,7 @@ note: required by a bound in `g1`
    |
 LL | fn g1<F>(_: F) where F: Fn(&(), Box<dyn Fn(&())>) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `g1`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     g1(|_: &(), _: ()| {});
    |            +
@@ -133,7 +133,7 @@ note: required by a bound in `g2`
    |
 LL | fn g2<F>(_: F) where F: Fn(&(), fn(&())) {}
    |                         ^^^^^^^^^^^^^^^^ required by this bound in `g2`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     g2(|_: &(), _: ()| {});
    |            +
@@ -153,7 +153,7 @@ note: required by a bound in `g3`
    |
 LL | fn g3<F>(_: F) where F: for<'s> Fn(&'s (), Box<dyn Fn(&())>) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `g3`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     g3(|_: &(), _: ()| {});
    |            +
@@ -173,7 +173,7 @@ note: required by a bound in `g4`
    |
 LL | fn g4<F>(_: F) where F: Fn(&(), for<'r> fn(&'r ())) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `g4`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     g4(|_: &(), _: ()| {});
    |            +
@@ -193,7 +193,7 @@ note: required by a bound in `h1`
    |
 LL | fn h1<F>(_: F) where F: Fn(&(), Box<dyn Fn(&())>, &(), fn(&(), &())) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `h1`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     h1(|_: &(), _: (), _: &(), _: ()| {});
    |            +              +
@@ -213,7 +213,7 @@ note: required by a bound in `h2`
    |
 LL | fn h2<F>(_: F) where F: for<'t0> Fn(&(), Box<dyn Fn(&())>, &'t0 (), fn(&(), &())) {}
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `h2`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its arguments
    |
 LL |     h2(|_: &(), _: (), _: &(), _: ()| {});
    |            +              +
diff --git a/tests/ui/closures/multiple-fn-bounds.stderr b/tests/ui/closures/multiple-fn-bounds.stderr
index 32a1edb0024..d94c902f721 100644
--- a/tests/ui/closures/multiple-fn-bounds.stderr
+++ b/tests/ui/closures/multiple-fn-bounds.stderr
@@ -18,7 +18,7 @@ note: required by a bound in `foo`
    |
 LL | fn foo<F: Fn(&char) -> bool + Fn(char) -> bool>(f: F) {
    |                               ^^^^^^^^^^^^^^^^ required by this bound in `foo`
-help: do not borrow the argument
+help: consider adjusting the signature so it does not borrow its argument
    |
 LL |     foo(move |char| v);
    |               ~~~~
diff --git a/tests/ui/consts/const-size_of-cycle.stderr b/tests/ui/consts/const-size_of-cycle.stderr
index 08f0c1563cc..46b432357aa 100644
--- a/tests/ui/consts/const-size_of-cycle.stderr
+++ b/tests/ui/consts/const-size_of-cycle.stderr
@@ -15,8 +15,7 @@ note: ...which requires const-evaluating + checking `Foo::bytes::{constant#0}`..
 LL |     bytes: [u8; std::mem::size_of::<Foo>()]
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which requires computing layout of `Foo`...
-   = note: ...which requires computing layout (naive) of `Foo`...
-   = note: ...which requires computing layout (naive) of `[u8; std::mem::size_of::<Foo>()]`...
+   = note: ...which requires computing layout of `[u8; std::mem::size_of::<Foo>()]`...
    = note: ...which requires normalizing `[u8; std::mem::size_of::<Foo>()]`...
    = note: ...which again requires evaluating type-level constant, completing the cycle
 note: cycle used when checking that `Foo` is well-formed
diff --git a/tests/ui/consts/issue-44415.stderr b/tests/ui/consts/issue-44415.stderr
index 7ff413def86..01d24a62081 100644
--- a/tests/ui/consts/issue-44415.stderr
+++ b/tests/ui/consts/issue-44415.stderr
@@ -15,8 +15,7 @@ note: ...which requires const-evaluating + checking `Foo::bytes::{constant#0}`..
 LL |     bytes: [u8; unsafe { intrinsics::size_of::<Foo>() }],
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which requires computing layout of `Foo`...
-   = note: ...which requires computing layout (naive) of `Foo`...
-   = note: ...which requires computing layout (naive) of `[u8; unsafe { intrinsics::size_of::<Foo>() }]`...
+   = note: ...which requires computing layout of `[u8; unsafe { intrinsics::size_of::<Foo>() }]`...
    = note: ...which requires normalizing `[u8; unsafe { intrinsics::size_of::<Foo>() }]`...
    = note: ...which again requires evaluating type-level constant, completing the cycle
 note: cycle used when checking that `Foo` is well-formed
diff --git a/tests/ui/dropck/explicit-drop-bounds.bad1.stderr b/tests/ui/dropck/explicit-drop-bounds.bad1.stderr
index 3b506c7e7ec..3ef11e2c0bb 100644
--- a/tests/ui/dropck/explicit-drop-bounds.bad1.stderr
+++ b/tests/ui/dropck/explicit-drop-bounds.bad1.stderr
@@ -15,10 +15,10 @@ LL |     [T; 1]: Copy, T: std::marker::Copy // But `[T; 1]: Copy` does not imply
    |                 ~~~~~~~~~~~~~~~~~~~~~~
 
 error[E0277]: the trait bound `T: Copy` is not satisfied
-  --> $DIR/explicit-drop-bounds.rs:32:13
+  --> $DIR/explicit-drop-bounds.rs:32:18
    |
 LL |     fn drop(&mut self) {}
-   |             ^^^^^^^^^ the trait `Copy` is not implemented for `T`
+   |                  ^^^^ the trait `Copy` is not implemented for `T`
    |
 note: required by a bound in `DropMe`
   --> $DIR/explicit-drop-bounds.rs:7:18
diff --git a/tests/ui/dropck/explicit-drop-bounds.bad2.stderr b/tests/ui/dropck/explicit-drop-bounds.bad2.stderr
index 832af3e521a..8138b86ddea 100644
--- a/tests/ui/dropck/explicit-drop-bounds.bad2.stderr
+++ b/tests/ui/dropck/explicit-drop-bounds.bad2.stderr
@@ -15,10 +15,10 @@ LL | impl<T: std::marker::Copy> Drop for DropMe<T>
    |       +++++++++++++++++++
 
 error[E0277]: the trait bound `T: Copy` is not satisfied
-  --> $DIR/explicit-drop-bounds.rs:40:13
+  --> $DIR/explicit-drop-bounds.rs:40:18
    |
 LL |     fn drop(&mut self) {}
-   |             ^^^^^^^^^ the trait `Copy` is not implemented for `T`
+   |                  ^^^^ the trait `Copy` is not implemented for `T`
    |
 note: required by a bound in `DropMe`
   --> $DIR/explicit-drop-bounds.rs:7:18
diff --git a/tests/ui/dyn-star/param-env-region-infer.next.stderr b/tests/ui/dyn-star/param-env-region-infer.next.stderr
index 51df71a373e..28aec533a00 100644
--- a/tests/ui/dyn-star/param-env-region-infer.next.stderr
+++ b/tests/ui/dyn-star/param-env-region-infer.next.stderr
@@ -9,7 +9,7 @@ note: ...which requires type-checking `make_dyn_star`...
    |
 LL | fn make_dyn_star<'a, T: PointerLike + Debug + 'a>(t: T) -> impl PointerLike + Debug + 'a {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which requires computing layout (naive) of `make_dyn_star::{opaque#0}`...
+   = note: ...which requires computing layout of `make_dyn_star::{opaque#0}`...
    = note: ...which requires normalizing `make_dyn_star::{opaque#0}`...
    = note: ...which again requires computing type of `make_dyn_star::{opaque#0}`, completing the cycle
 note: cycle used when checking item types in top-level module
diff --git a/tests/ui/generics/issue-32498.rs b/tests/ui/generics/issue-32498.rs
index 0abd5b1a9b1..1b54401097e 100644
--- a/tests/ui/generics/issue-32498.rs
+++ b/tests/ui/generics/issue-32498.rs
@@ -1,6 +1,5 @@
 // run-pass
 #![allow(dead_code)]
-#![recursion_limit = "129"]
 
 // Making sure that no overflow occurs.
 
diff --git a/tests/ui/layout/issue-113941.rs b/tests/ui/layout/issue-113941.rs
new file mode 100644
index 00000000000..7a54e28b350
--- /dev/null
+++ b/tests/ui/layout/issue-113941.rs
@@ -0,0 +1,13 @@
+// build-pass
+// revisions: normal randomize-layout
+// [randomize-layout]compile-flags: -Zrandomize-layout
+
+enum Void {}
+
+pub struct Struct([*const (); 0], Void);
+
+pub enum Enum {
+    Variant(Struct),
+}
+
+fn main() {}
diff --git a/tests/ui/layout/valid_range_oob.stderr b/tests/ui/layout/valid_range_oob.stderr
index 772113fa5fb..a3a514fb830 100644
--- a/tests/ui/layout/valid_range_oob.stderr
+++ b/tests/ui/layout/valid_range_oob.stderr
@@ -1,6 +1,6 @@
 error: the compiler unexpectedly panicked. this is a bug.
 
 query stack during panic:
-#0 [naive_layout_of] computing layout (naive) of `Foo`
-#1 [layout_of] computing layout of `Foo`
+#0 [layout_of] computing layout of `Foo`
+#1 [eval_to_allocation_raw] const-evaluating + checking `FOO`
 end of query stack
diff --git a/tests/ui/lint/invalid_value.stderr b/tests/ui/lint/invalid_value.stderr
index 066fdccbaad..57531b0968f 100644
--- a/tests/ui/lint/invalid_value.stderr
+++ b/tests/ui/lint/invalid_value.stderr
@@ -34,7 +34,8 @@ LL |         let _val: Wrap<&'static T> = mem::zeroed();
    |                                      this code causes undefined behavior when executed
    |                                      help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
    |
-note: references must be non-null (in this struct field)
+   = note: `Wrap<&T>` must be non-null
+note: because references must be non-null (in this struct field)
   --> $DIR/invalid_value.rs:17:18
    |
 LL | struct Wrap<T> { wrapped: T }
@@ -49,7 +50,8 @@ LL |         let _val: Wrap<&'static T> = mem::uninitialized();
    |                                      this code causes undefined behavior when executed
    |                                      help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
    |
-note: references must be non-null (in this struct field)
+   = note: `Wrap<&T>` must be non-null
+note: because references must be non-null (in this struct field)
   --> $DIR/invalid_value.rs:17:18
    |
 LL | struct Wrap<T> { wrapped: T }
diff --git a/tests/ui/mismatched_types/closure-arg-type-mismatch-issue-45727.stderr b/tests/ui/mismatched_types/closure-arg-type-mismatch-issue-45727.stderr
index fb8af4bb7dd..452cba6b4de 100644
--- a/tests/ui/mismatched_types/closure-arg-type-mismatch-issue-45727.stderr
+++ b/tests/ui/mismatched_types/closure-arg-type-mismatch-issue-45727.stderr
@@ -10,7 +10,7 @@ LL |     let _ = (-10..=10).find(|x: i32| x.signum() == 0);
               found closure signature `fn(i32) -> _`
 note: required by a bound in `find`
   --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     let _ = (-10..=10).find(|x: &i32| x.signum() == 0);
    |                                 +
@@ -27,7 +27,7 @@ LL |     let _ = (-10..=10).find(|x: &&&i32| x.signum() == 0);
               found closure signature `for<'a, 'b, 'c> fn(&'a &'b &'c i32) -> _`
 note: required by a bound in `find`
   --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
-help: do not borrow the argument
+help: consider adjusting the signature so it does not borrow its argument
    |
 LL -     let _ = (-10..=10).find(|x: &&&i32| x.signum() == 0);
 LL +     let _ = (-10..=10).find(|x: &i32| x.signum() == 0);
diff --git a/tests/ui/mismatched_types/closure-arg-type-mismatch.stderr b/tests/ui/mismatched_types/closure-arg-type-mismatch.stderr
index 811ff0533f0..760e3327b77 100644
--- a/tests/ui/mismatched_types/closure-arg-type-mismatch.stderr
+++ b/tests/ui/mismatched_types/closure-arg-type-mismatch.stderr
@@ -10,7 +10,7 @@ LL |     a.iter().map(|_: (u32, u32)| 45);
               found closure signature `fn((u32, u32)) -> _`
 note: required by a bound in `map`
   --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     a.iter().map(|_: &(u32, u32)| 45);
    |                      +
diff --git a/tests/ui/mismatched_types/issue-36053-2.stderr b/tests/ui/mismatched_types/issue-36053-2.stderr
index a6764a1dc6d..4d230ce9a7a 100644
--- a/tests/ui/mismatched_types/issue-36053-2.stderr
+++ b/tests/ui/mismatched_types/issue-36053-2.stderr
@@ -10,7 +10,7 @@ LL |     once::<&str>("str").fuse().filter(|a: &str| true).count();
               found closure signature `for<'a> fn(&'a str) -> _`
 note: required by a bound in `filter`
   --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     once::<&str>("str").fuse().filter(|a: &&str| true).count();
    |                                           +
diff --git a/tests/ui/mismatched_types/suggest-option-asderef-inference-var.stderr b/tests/ui/mismatched_types/suggest-option-asderef-inference-var.stderr
index 71c4729e310..5c4c13266d0 100644
--- a/tests/ui/mismatched_types/suggest-option-asderef-inference-var.stderr
+++ b/tests/ui/mismatched_types/suggest-option-asderef-inference-var.stderr
@@ -13,7 +13,7 @@ LL |     let _has_inference_vars: Option<i32> = Some(0).map(deref_int);
               found function signature `for<'a> fn(&'a i32) -> _`
 note: required by a bound in `Option::<T>::map`
   --> $SRC_DIR/core/src/option.rs:LL:COL
-help: do not borrow the argument
+help: consider adjusting the signature so it does not borrow its argument
    |
 LL - fn deref_int(a: &i32) -> i32 {
 LL + fn deref_int(a: i32) -> i32 {
diff --git a/tests/ui/mismatched_types/suggest-option-asderef.fixed b/tests/ui/mismatched_types/suggest-option-asderef.fixed
index 5c42ece3c5d..fc488b790b3 100644
--- a/tests/ui/mismatched_types/suggest-option-asderef.fixed
+++ b/tests/ui/mismatched_types/suggest-option-asderef.fixed
@@ -17,7 +17,7 @@ fn generic<T>(_: T) -> Option<()> {
 }
 
 fn generic_ref<T>(_: T) -> Option<()> {
-    //~^ HELP do not borrow the argument
+    //~^ HELP consider adjusting the signature so it does not borrow its argument
     Some(())
 }
 
diff --git a/tests/ui/mismatched_types/suggest-option-asderef.rs b/tests/ui/mismatched_types/suggest-option-asderef.rs
index a5278b8fb16..28f46808a39 100644
--- a/tests/ui/mismatched_types/suggest-option-asderef.rs
+++ b/tests/ui/mismatched_types/suggest-option-asderef.rs
@@ -17,7 +17,7 @@ fn generic<T>(_: T) -> Option<()> {
 }
 
 fn generic_ref<T>(_: &T) -> Option<()> {
-    //~^ HELP do not borrow the argument
+    //~^ HELP consider adjusting the signature so it does not borrow its argument
     Some(())
 }
 
diff --git a/tests/ui/mismatched_types/suggest-option-asderef.stderr b/tests/ui/mismatched_types/suggest-option-asderef.stderr
index 01341603dde..bfea0867350 100644
--- a/tests/ui/mismatched_types/suggest-option-asderef.stderr
+++ b/tests/ui/mismatched_types/suggest-option-asderef.stderr
@@ -73,7 +73,7 @@ LL |     let _ = produces_string().and_then(generic_ref);
               found function signature `for<'a> fn(&'a _) -> _`
 note: required by a bound in `Option::<T>::and_then`
   --> $SRC_DIR/core/src/option.rs:LL:COL
-help: do not borrow the argument
+help: consider adjusting the signature so it does not borrow its argument
    |
 LL - fn generic_ref<T>(_: &T) -> Option<()> {
 LL + fn generic_ref<T>(_: T) -> Option<()> {
diff --git a/tests/ui/parser/async-with-nonterminal-block.rs b/tests/ui/parser/async-with-nonterminal-block.rs
new file mode 100644
index 00000000000..96015fd5d82
--- /dev/null
+++ b/tests/ui/parser/async-with-nonterminal-block.rs
@@ -0,0 +1,16 @@
+// check-pass
+// edition:2021
+
+macro_rules! create_async {
+    ($body:block) => {
+        async $body
+    };
+}
+
+async fn other() {}
+
+fn main() {
+    let y = create_async! {{
+        other().await;
+    }};
+}
diff --git a/tests/ui/parser/try-with-nonterminal-block.rs b/tests/ui/parser/try-with-nonterminal-block.rs
new file mode 100644
index 00000000000..2a9652f2e6d
--- /dev/null
+++ b/tests/ui/parser/try-with-nonterminal-block.rs
@@ -0,0 +1,19 @@
+// check-pass
+// edition:2021
+
+#![feature(try_blocks)]
+
+macro_rules! create_try {
+    ($body:block) => {
+        try $body
+    };
+}
+
+fn main() {
+    let x: Option<&str> = create_try! {{
+        None?;
+        "Hello world"
+    }};
+
+    println!("{x:?}");
+}
diff --git a/tests/ui/recursion/issue-26548-recursion-via-normalize.rs b/tests/ui/recursion/issue-26548-recursion-via-normalize.rs
index 14bc74f57f6..6c7fc4beb54 100644
--- a/tests/ui/recursion/issue-26548-recursion-via-normalize.rs
+++ b/tests/ui/recursion/issue-26548-recursion-via-normalize.rs
@@ -1,9 +1,9 @@
-//~ ERROR cycle detected when computing layout (naive) of `core::option::Option<S>`
+//~ ERROR cycle detected when computing layout of `core::option::Option<S>`
 //~| NOTE see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information
-//~| NOTE ...which requires computing layout (naive) of `S`...
-//~| NOTE ...which requires computing layout (naive) of `core::option::Option<<S as Mirror>::It>`...
-//~| NOTE ...which again requires computing layout (naive) of `core::option::Option<S>`, completing the cycle
-//~| NOTE cycle used when computing layout (naive) of `core::option::Option<<S as Mirror>::It>`
+//~| NOTE ...which requires computing layout of `S`...
+//~| NOTE ...which requires computing layout of `core::option::Option<<S as Mirror>::It>`...
+//~| NOTE ...which again requires computing layout of `core::option::Option<S>`, completing the cycle
+//~| NOTE cycle used when computing layout of `core::option::Option<<S as Mirror>::It>`
 
 trait Mirror {
     type It: ?Sized;
diff --git a/tests/ui/recursion/issue-26548-recursion-via-normalize.stderr b/tests/ui/recursion/issue-26548-recursion-via-normalize.stderr
index 109ba278232..514bed60700 100644
--- a/tests/ui/recursion/issue-26548-recursion-via-normalize.stderr
+++ b/tests/ui/recursion/issue-26548-recursion-via-normalize.stderr
@@ -1,9 +1,9 @@
-error[E0391]: cycle detected when computing layout (naive) of `core::option::Option<S>`
+error[E0391]: cycle detected when computing layout of `core::option::Option<S>`
    |
-   = note: ...which requires computing layout (naive) of `S`...
-   = note: ...which requires computing layout (naive) of `core::option::Option<<S as Mirror>::It>`...
-   = note: ...which again requires computing layout (naive) of `core::option::Option<S>`, completing the cycle
-   = note: cycle used when computing layout (naive) of `core::option::Option<<S as Mirror>::It>`
+   = note: ...which requires computing layout of `S`...
+   = note: ...which requires computing layout of `core::option::Option<<S as Mirror>::It>`...
+   = note: ...which again requires computing layout of `core::option::Option<S>`, completing the cycle
+   = note: cycle used when computing layout of `core::option::Option<<S as Mirror>::It>`
    = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information
 
 error: aborting due to previous error
diff --git a/tests/ui/recursion_limit/zero-overflow.rs b/tests/ui/recursion_limit/zero-overflow.rs
index 98b3da65135..77bd8185676 100644
--- a/tests/ui/recursion_limit/zero-overflow.rs
+++ b/tests/ui/recursion_limit/zero-overflow.rs
@@ -1,4 +1,4 @@
-//~ ERROR queries overflow the depth limit!
+//~ ERROR overflow evaluating the requirement `&mut Self: DispatchFromDyn<&mut RustaceansAreAwesome>
 //~| HELP consider increasing the recursion limit
 // build-fail
 
diff --git a/tests/ui/recursion_limit/zero-overflow.stderr b/tests/ui/recursion_limit/zero-overflow.stderr
index 172c767d9f0..9007ec0d784 100644
--- a/tests/ui/recursion_limit/zero-overflow.stderr
+++ b/tests/ui/recursion_limit/zero-overflow.stderr
@@ -1,7 +1,7 @@
-error: queries overflow the depth limit!
+error[E0275]: overflow evaluating the requirement `&mut Self: DispatchFromDyn<&mut RustaceansAreAwesome>`
    |
    = help: consider increasing the recursion limit by adding a `#![recursion_limit = "2"]` attribute to your crate (`zero_overflow`)
-   = note: query depth increased by 2 when computing layout of `()`
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0275`.
diff --git a/tests/ui/rfcs/rfc-2396-target_feature-11/issue-108655-inline-always-closure.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/issue-108655-inline-always-closure.rs
new file mode 100644
index 00000000000..bc886400099
--- /dev/null
+++ b/tests/ui/rfcs/rfc-2396-target_feature-11/issue-108655-inline-always-closure.rs
@@ -0,0 +1,18 @@
+// Tests #108655: closures in `#[target_feature]` functions can still be marked #[inline(always)]
+
+// check-pass
+// revisions: mir thir
+// [thir]compile-flags: -Z thir-unsafeck
+// only-x86_64
+
+#![feature(target_feature_11)]
+
+#[target_feature(enable = "avx")]
+pub unsafe fn test() {
+    ({
+        #[inline(always)]
+        move || {}
+    })();
+}
+
+fn main() {}
diff --git a/tests/ui/sized/recursive-type-2.rs b/tests/ui/sized/recursive-type-2.rs
index 7ee5ee854d4..7d95417a6ff 100644
--- a/tests/ui/sized/recursive-type-2.rs
+++ b/tests/ui/sized/recursive-type-2.rs
@@ -1,5 +1,5 @@
 // build-fail
-//~^ ERROR cycle detected when computing layout (naive) of `Foo<()>`
+//~^ ERROR cycle detected when computing layout of `Foo<()>`
 
 trait A { type Assoc: ?Sized; }
 
diff --git a/tests/ui/sized/recursive-type-2.stderr b/tests/ui/sized/recursive-type-2.stderr
index 502b0a4352c..0f72f74145e 100644
--- a/tests/ui/sized/recursive-type-2.stderr
+++ b/tests/ui/sized/recursive-type-2.stderr
@@ -1,8 +1,12 @@
-error[E0391]: cycle detected when computing layout (naive) of `Foo<()>`
+error[E0391]: cycle detected when computing layout of `Foo<()>`
    |
-   = note: ...which requires computing layout (naive) of `<() as A>::Assoc`...
-   = note: ...which again requires computing layout (naive) of `Foo<()>`, completing the cycle
-   = note: cycle used when computing layout of `Foo<()>`
+   = note: ...which requires computing layout of `<() as A>::Assoc`...
+   = note: ...which again requires computing layout of `Foo<()>`, completing the cycle
+note: cycle used when elaborating drops for `main`
+  --> $DIR/recursive-type-2.rs:11:1
+   |
+LL | fn main() {
+   | ^^^^^^^^^
    = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information
 
 error: aborting due to previous error
diff --git a/tests/ui/specialization/min_specialization/issue-79224.stderr b/tests/ui/specialization/min_specialization/issue-79224.stderr
index 505baa23ca3..9a4d557a152 100644
--- a/tests/ui/specialization/min_specialization/issue-79224.stderr
+++ b/tests/ui/specialization/min_specialization/issue-79224.stderr
@@ -11,10 +11,10 @@ LL | impl<B: ?Sized + std::clone::Clone> Display for Cow<'_, B> {
    |                +++++++++++++++++++
 
 error[E0277]: the trait bound `B: Clone` is not satisfied
-  --> $DIR/issue-79224.rs:20:12
+  --> $DIR/issue-79224.rs:20:13
    |
 LL |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-   |            ^^^^^ the trait `Clone` is not implemented for `B`
+   |             ^^^^ the trait `Clone` is not implemented for `B`
    |
    = note: required for `B` to implement `ToOwned`
 help: consider further restricting this bound
diff --git a/tests/ui/suggestions/late-bound-in-borrow-closure-sugg.stderr b/tests/ui/suggestions/late-bound-in-borrow-closure-sugg.stderr
index 6820af1fd45..a03d4e8ce9f 100644
--- a/tests/ui/suggestions/late-bound-in-borrow-closure-sugg.stderr
+++ b/tests/ui/suggestions/late-bound-in-borrow-closure-sugg.stderr
@@ -16,7 +16,7 @@ note: required by a bound in `Trader::<'a>::set_closure`
    |
 LL |     pub fn set_closure(&mut self, function: impl Fn(&mut Trader) + 'a) {
    |                                                  ^^^^^^^^^^^^^^^ required by this bound in `Trader::<'a>::set_closure`
-help: consider borrowing the argument
+help: consider adjusting the signature so it borrows its argument
    |
 LL |     let closure = |trader : &mut Trader| {
    |                             ++++
diff --git a/tests/ui/transmute/transmute-fat-pointers.rs b/tests/ui/transmute/transmute-fat-pointers.rs
index d373ff5f24a..7c1beffd14e 100644
--- a/tests/ui/transmute/transmute-fat-pointers.rs
+++ b/tests/ui/transmute/transmute-fat-pointers.rs
@@ -30,16 +30,4 @@ fn f<T, U: ?Sized>(x: &T) -> &U {
     unsafe { transmute(x) } //~ ERROR cannot transmute between types of different sizes
 }
 
-fn g<T, U>(x: &T) -> Option<&U> {
-    unsafe { transmute(x) }
-}
-
-fn h<T>(x: &[T]) -> Option<&dyn Send> {
-    unsafe { transmute(x) }
-}
-
-fn i<T>(x: [usize; 1]) -> Option<&'static T> {
-    unsafe { transmute(x) }
-}
-
 fn main() { }
diff --git a/tests/ui/type-alias-impl-trait/issue-53092-2.stderr b/tests/ui/type-alias-impl-trait/issue-53092-2.stderr
index 9d90c6fbc58..6148131b491 100644
--- a/tests/ui/type-alias-impl-trait/issue-53092-2.stderr
+++ b/tests/ui/type-alias-impl-trait/issue-53092-2.stderr
@@ -9,7 +9,7 @@ note: ...which requires type-checking `CONST_BUG`...
    |
 LL | const CONST_BUG: Bug<u8, ()> = unsafe { std::mem::transmute(|_: u8| ()) };
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which requires computing layout (naive) of `Bug<u8, ()>`...
+   = note: ...which requires computing layout of `Bug<u8, ()>`...
    = note: ...which requires normalizing `Bug<u8, ()>`...
    = note: ...which again requires computing type of `Bug::{opaque#0}`, completing the cycle
 note: cycle used when checking item types in top-level module
diff --git a/tests/ui/typeck/mismatched-map-under-self.rs b/tests/ui/typeck/mismatched-map-under-self.rs
new file mode 100644
index 00000000000..bedb7a1907d
--- /dev/null
+++ b/tests/ui/typeck/mismatched-map-under-self.rs
@@ -0,0 +1,17 @@
+pub trait Insertable {
+    type Values;
+
+    fn values(&self) -> Self::Values;
+}
+
+impl<T> Insertable for Option<T> {
+    type Values = ();
+
+    fn values(self) -> Self::Values {
+        //~^ ERROR method `values` has an incompatible type for trait
+        self.map(Insertable::values).unwrap_or_default()
+        //~^ ERROR type mismatch in function arguments
+    }
+}
+
+fn main() {}
diff --git a/tests/ui/typeck/mismatched-map-under-self.stderr b/tests/ui/typeck/mismatched-map-under-self.stderr
new file mode 100644
index 00000000000..51491407c49
--- /dev/null
+++ b/tests/ui/typeck/mismatched-map-under-self.stderr
@@ -0,0 +1,37 @@
+error[E0053]: method `values` has an incompatible type for trait
+  --> $DIR/mismatched-map-under-self.rs:10:15
+   |
+LL |     fn values(self) -> Self::Values {
+   |               ^^^^
+   |               |
+   |               expected `&Option<T>`, found `Option<T>`
+   |               help: change the self-receiver type to match the trait: `&self`
+   |
+note: type in trait
+  --> $DIR/mismatched-map-under-self.rs:4:15
+   |
+LL |     fn values(&self) -> Self::Values;
+   |               ^^^^^
+   = note: expected signature `fn(&Option<T>)`
+              found signature `fn(Option<T>)`
+
+error[E0631]: type mismatch in function arguments
+  --> $DIR/mismatched-map-under-self.rs:12:18
+   |
+LL |     fn values(&self) -> Self::Values;
+   |     --------------------------------- found signature defined here
+...
+LL |         self.map(Insertable::values).unwrap_or_default()
+   |              --- ^^^^^^^^^^^^^^^^^^ expected due to this
+   |              |
+   |              required by a bound introduced by this call
+   |
+   = note: expected function signature `fn(T) -> _`
+              found function signature `for<'a> fn(&'a _) -> _`
+note: required by a bound in `Option::<T>::map`
+  --> $SRC_DIR/core/src/option.rs:LL:COL
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0053, E0631.
+For more information about an error, try `rustc --explain E0053`.