about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock20
-rw-r--r--compiler/rustc_abi/Cargo.toml2
-rw-r--r--compiler/rustc_abi/src/callconv.rs3
-rw-r--r--compiler/rustc_abi/src/extern_abi.rs130
-rw-r--r--compiler/rustc_abi/src/extern_abi/tests.rs2
-rw-r--r--compiler/rustc_abi/src/lib.rs4
-rw-r--r--compiler/rustc_ast/src/ast.rs23
-rw-r--r--compiler/rustc_ast/src/expand/autodiff_attrs.rs24
-rw-r--r--compiler/rustc_ast/src/mut_visit.rs20
-rw-r--r--compiler/rustc_ast/src/visit.rs17
-rw-r--r--compiler/rustc_ast_lowering/Cargo.toml1
-rw-r--r--compiler/rustc_ast_lowering/messages.ftl3
-rw-r--r--compiler/rustc_ast_lowering/src/asm.rs9
-rw-r--r--compiler/rustc_ast_lowering/src/delegation.rs4
-rw-r--r--compiler/rustc_ast_lowering/src/errors.rs22
-rw-r--r--compiler/rustc_ast_lowering/src/expr.rs21
-rw-r--r--compiler/rustc_ast_lowering/src/item.rs191
-rw-r--r--compiler/rustc_ast_lowering/src/lib.rs22
-rw-r--r--compiler/rustc_ast_lowering/src/pat.rs80
-rw-r--r--compiler/rustc_ast_lowering/src/stability.rs147
-rw-r--r--compiler/rustc_ast_passes/src/ast_validation.rs4
-rw-r--r--compiler/rustc_ast_passes/src/feature_gate.rs44
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/state.rs24
-rw-r--r--compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs59
-rw-r--r--compiler/rustc_borrowck/src/type_check/canonical.rs12
-rw-r--r--compiler/rustc_borrowck/src/type_check/constraint_conversion.rs21
-rw-r--r--compiler/rustc_borrowck/src/type_check/free_region_relations.rs28
-rw-r--r--compiler/rustc_borrowck/src/type_check/mod.rs2
-rw-r--r--compiler/rustc_builtin_macros/src/contracts.rs23
-rw-r--r--compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs74
-rw-r--r--compiler/rustc_builtin_macros/src/pattern_type.rs18
-rw-r--r--compiler/rustc_codegen_cranelift/patches/0029-stdlib-Disable-f16-and-f128-in-compiler-builtins.patch4
-rw-r--r--compiler/rustc_codegen_gcc/src/int.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/abi.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/allocator.rs4
-rw-r--r--compiler/rustc_codegen_llvm/src/back/archive.rs11
-rw-r--r--compiler/rustc_codegen_llvm/src/back/lto.rs29
-rw-r--r--compiler/rustc_codegen_llvm/src/back/owned_target_machine.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/back/write.rs253
-rw-r--r--compiler/rustc_codegen_llvm/src/builder/autodiff.rs46
-rw-r--r--compiler/rustc_codegen_llvm/src/common.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/consts.rs6
-rw-r--r--compiler/rustc_codegen_llvm/src/context.rs10
-rw-r--r--compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/declare.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/intrinsic.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/lib.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/llvm/ffi.rs3
-rw-r--r--compiler/rustc_codegen_llvm/src/llvm/mod.rs4
-rw-r--r--compiler/rustc_codegen_llvm/src/llvm_util.rs3
-rw-r--r--compiler/rustc_codegen_llvm/src/type_.rs4
-rw-r--r--compiler/rustc_codegen_ssa/src/codegen_attrs.rs7
-rw-r--r--compiler/rustc_const_eval/src/errors.rs10
-rw-r--r--compiler/rustc_const_eval/src/interpret/eval_context.rs3
-rw-r--r--compiler/rustc_const_eval/src/interpret/util.rs44
-rw-r--r--compiler/rustc_driver_impl/Cargo.toml1
-rw-r--r--compiler/rustc_driver_impl/src/lib.rs2
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0802.md94
-rw-r--r--compiler/rustc_error_codes/src/lib.rs1
-rw-r--r--compiler/rustc_errors/src/diagnostic_impls.rs4
-rw-r--r--compiler/rustc_errors/src/emitter.rs2
-rw-r--r--compiler/rustc_expand/src/build.rs39
-rw-r--r--compiler/rustc_feature/src/unstable.rs2
-rw-r--r--compiler/rustc_hir/src/lang_items.rs6
-rw-r--r--compiler/rustc_hir_analysis/messages.ftl10
-rw-r--r--compiler/rustc_hir_analysis/src/coherence/builtin.rs33
-rw-r--r--compiler/rustc_hir_analysis/src/collect.rs7
-rw-r--r--compiler/rustc_hir_analysis/src/errors.rs36
-rw-r--r--compiler/rustc_hir_analysis/src/hir_ty_lowering/errors.rs55
-rw-r--r--compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs62
-rw-r--r--compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs7
-rw-r--r--compiler/rustc_hir_typeck/src/method/confirm.rs24
-rw-r--r--compiler/rustc_lint/messages.ftl3
-rw-r--r--compiler/rustc_lint/src/foreign_modules.rs9
-rw-r--r--compiler/rustc_lint/src/lib.rs1
-rw-r--r--compiler/rustc_lint/src/types.rs148
-rw-r--r--compiler/rustc_llvm/build.rs4
-rw-r--r--compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp22
-rw-r--r--compiler/rustc_middle/src/hir/map/mod.rs3
-rw-r--r--compiler/rustc_middle/src/middle/stability.rs2
-rw-r--r--compiler/rustc_middle/src/mir/generic_graph.rs3
-rw-r--r--compiler/rustc_middle/src/mir/generic_graphviz.rs3
-rw-r--r--compiler/rustc_middle/src/mir/graphviz.rs2
-rw-r--r--compiler/rustc_middle/src/mir/interpret/error.rs4
-rw-r--r--compiler/rustc_middle/src/mir/interpret/mod.rs2
-rw-r--r--compiler/rustc_middle/src/mir/patch.rs3
-rw-r--r--compiler/rustc_middle/src/mir/pretty.rs13
-rw-r--r--compiler/rustc_middle/src/query/erase.rs4
-rw-r--r--compiler/rustc_middle/src/query/on_disk_cache.rs15
-rw-r--r--compiler/rustc_middle/src/thir.rs19
-rw-r--r--compiler/rustc_middle/src/traits/query.rs10
-rw-r--r--compiler/rustc_middle/src/ty/cast.rs2
-rw-r--r--compiler/rustc_middle/src/ty/codec.rs5
-rw-r--r--compiler/rustc_middle/src/ty/context.rs3
-rw-r--r--compiler/rustc_middle/src/ty/instance.rs2
-rw-r--r--compiler/rustc_middle/src/ty/layout.rs7
-rw-r--r--compiler/rustc_middle/src/ty/print/pretty.rs17
-rw-r--r--compiler/rustc_middle/src/ty/typeck_results.rs2
-rw-r--r--compiler/rustc_middle/src/util/mod.rs8
-rw-r--r--compiler/rustc_middle/src/values.rs2
-rw-r--r--compiler/rustc_mir_transform/src/deduplicate_blocks.rs195
-rw-r--r--compiler/rustc_mir_transform/src/lib.rs2
-rw-r--r--compiler/rustc_parse/src/parser/generics.rs14
-rw-r--r--compiler/rustc_passes/Cargo.toml1
-rw-r--r--compiler/rustc_passes/src/abi_test.rs9
-rw-r--r--compiler/rustc_passes/src/naked_functions.rs6
-rw-r--r--compiler/rustc_passes/src/stability.rs5
-rw-r--r--compiler/rustc_resolve/src/diagnostics.rs15
-rw-r--r--compiler/rustc_resolve/src/late.rs15
-rw-r--r--compiler/rustc_session/src/config/cfg.rs2
-rw-r--r--compiler/rustc_session/src/parse.rs5
-rw-r--r--compiler/rustc_span/src/symbol.rs3
-rw-r--r--compiler/rustc_target/src/asm/mod.rs6
-rw-r--r--compiler/rustc_target/src/callconv/mod.rs25
-rw-r--r--compiler/rustc_target/src/spec/mod.rs9
-rw-r--r--compiler/rustc_target/src/spec/targets/i586_unknown_redox.rs (renamed from compiler/rustc_target/src/spec/targets/i686_unknown_redox.rs)2
-rw-r--r--compiler/rustc_target/src/spec/targets/i686_linux_android.rs2
-rw-r--r--compiler/rustc_target/src/spec/targets/i686_unknown_uefi.rs9
-rw-r--r--compiler/rustc_target/src/target_features.rs1
-rw-r--r--compiler/rustc_trait_selection/src/error_reporting/infer/need_type_info.rs87
-rw-r--r--compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs58
-rw-r--r--compiler/rustc_trait_selection/src/traits/wf.rs44
-rw-r--r--compiler/rustc_ty_utils/src/abi.rs12
-rw-r--r--compiler/rustc_type_ir/src/relate/solver_relating.rs6
-rw-r--r--config.example.toml2
-rw-r--r--library/Cargo.lock4
-rw-r--r--library/alloc/Cargo.toml2
-rw-r--r--library/core/src/alloc/mod.rs2
-rw-r--r--library/core/src/any.rs98
-rw-r--r--library/core/src/hint.rs6
-rw-r--r--library/core/src/marker.rs16
-rw-r--r--library/core/src/num/nonzero.rs5
-rw-r--r--library/portable-simd/.github/workflows/ci.yml125
-rw-r--r--library/portable-simd/.github/workflows/doc.yml2
-rw-r--r--library/portable-simd/.gitignore1
-rw-r--r--library/portable-simd/Cargo.toml6
-rw-r--r--library/portable-simd/Cross.toml2
-rw-r--r--library/portable-simd/crates/core_simd/Cargo.toml3
-rw-r--r--library/portable-simd/crates/core_simd/src/lane_count.rs8
-rw-r--r--library/portable-simd/crates/core_simd/src/lib.rs4
-rw-r--r--library/portable-simd/crates/core_simd/src/masks.rs42
-rw-r--r--library/portable-simd/crates/core_simd/src/masks/bitmask.rs17
-rw-r--r--library/portable-simd/crates/core_simd/src/masks/full_masks.rs58
-rw-r--r--library/portable-simd/crates/core_simd/src/ops.rs25
-rw-r--r--library/portable-simd/crates/core_simd/src/simd/cmp/eq.rs2
-rw-r--r--library/portable-simd/crates/core_simd/src/simd/num/float.rs30
-rw-r--r--library/portable-simd/crates/core_simd/src/simd/num/int.rs43
-rw-r--r--library/portable-simd/crates/core_simd/src/simd/num/uint.rs42
-rw-r--r--library/portable-simd/crates/core_simd/src/simd/ptr/const_ptr.rs21
-rw-r--r--library/portable-simd/crates/core_simd/src/simd/ptr/mut_ptr.rs21
-rw-r--r--library/portable-simd/crates/core_simd/src/swizzle.rs257
-rw-r--r--library/portable-simd/crates/core_simd/src/swizzle_dyn.rs59
-rw-r--r--library/portable-simd/crates/core_simd/src/vector.rs43
-rw-r--r--library/portable-simd/crates/core_simd/src/vendor.rs3
-rw-r--r--library/portable-simd/crates/core_simd/src/vendor/loongarch64.rs31
-rw-r--r--library/portable-simd/crates/core_simd/tests/layout.rs35
-rw-r--r--library/portable-simd/crates/core_simd/tests/masks.rs43
-rw-r--r--library/portable-simd/crates/core_simd/tests/ops_macros.rs38
-rw-r--r--library/portable-simd/crates/core_simd/tests/swizzle.rs18
-rw-r--r--library/portable-simd/crates/test_helpers/Cargo.toml3
-rw-r--r--library/portable-simd/crates/test_helpers/src/lib.rs216
-rw-r--r--library/portable-simd/rust-toolchain.toml3
-rwxr-xr-xlibrary/portable-simd/subtree-sync.sh52
-rw-r--r--library/std/Cargo.toml2
-rw-r--r--library/std/src/fs.rs4
-rw-r--r--library/std/src/keyword_docs.rs41
-rw-r--r--library/std/src/sys/pal/uefi/os.rs151
-rw-r--r--src/bootstrap/src/core/build_steps/compile.rs77
-rw-r--r--src/bootstrap/src/core/build_steps/dist.rs6
-rw-r--r--src/bootstrap/src/core/build_steps/llvm.rs42
-rw-r--r--src/bootstrap/src/core/build_steps/test.rs10
-rw-r--r--src/bootstrap/src/core/build_steps/tool.rs19
-rw-r--r--src/bootstrap/src/core/builder/cargo.rs26
-rw-r--r--src/bootstrap/src/core/builder/tests.rs127
-rw-r--r--src/bootstrap/src/core/sanity.rs2
-rw-r--r--src/bootstrap/src/lib.rs37
-rw-r--r--src/bootstrap/src/utils/cc_detect.rs6
-rw-r--r--src/ci/docker/host-x86_64/dist-loongarch64-linux/Dockerfile4
-rw-r--r--src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile4
-rw-r--r--src/ci/docker/host-x86_64/dist-powerpc64le-linux/Dockerfile4
-rw-r--r--src/ci/docker/scripts/crosstool-ng-git.sh17
-rw-r--r--src/ci/docker/scripts/crosstool-ng.sh2
-rw-r--r--src/ci/github-actions/jobs.yml26
m---------src/doc/edition-guide0
m---------src/doc/embedded-book0
m---------src/doc/reference0
m---------src/doc/rust-by-example0
-rw-r--r--src/doc/rustc/src/check-cfg.md2
-rw-r--r--src/doc/rustc/src/platform-support.md8
-rw-r--r--src/doc/rustc/src/platform-support/redox.md4
-rw-r--r--src/librustdoc/passes/strip_aliased_non_local.rs2
-rw-r--r--src/tools/build-manifest/src/main.rs2
-rw-r--r--src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr31
-rw-r--r--src/tools/clippy/tests/ui-toml/doc_valid_idents_append/doc_markdown.stderr5
-rw-r--r--src/tools/clippy/tests/ui-toml/doc_valid_idents_replace/doc_markdown.stderr15
-rw-r--r--src/tools/clippy/tests/ui-toml/enum_variant_size/enum_variant_size.stderr5
-rw-r--r--src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.default.stderr5
-rw-r--r--src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.extend.stderr5
-rw-r--r--src/tools/clippy/tests/ui-toml/unwrap_used/unwrap_used.stderr75
-rw-r--r--src/tools/clippy/tests/ui/assign_ops2.stderr90
-rw-r--r--src/tools/clippy/tests/ui/bind_instead_of_map_multipart.stderr20
-rw-r--r--src/tools/clippy/tests/ui/borrow_deref_ref_unfixable.stderr10
-rw-r--r--src/tools/clippy/tests/ui/cast.stderr103
-rw-r--r--src/tools/clippy/tests/ui/cast_lossless_bool.stderr75
-rw-r--r--src/tools/clippy/tests/ui/cast_lossless_float.stderr65
-rw-r--r--src/tools/clippy/tests/ui/cast_lossless_integer.stderr198
-rw-r--r--src/tools/clippy/tests/ui/cast_size.64bit.stderr45
-rw-r--r--src/tools/clippy/tests/ui/create_dir.stderr10
-rw-r--r--src/tools/clippy/tests/ui/dbg_macro/dbg_macro.stderr81
-rw-r--r--src/tools/clippy/tests/ui/dbg_macro/dbg_macro_unfixable.stderr25
-rw-r--r--src/tools/clippy/tests/ui/doc/doc-fixable.stderr161
-rw-r--r--src/tools/clippy/tests/ui/doc/doc_markdown-issue_13097.stderr5
-rw-r--r--src/tools/clippy/tests/ui/doc/issue_10262.stderr5
-rw-r--r--src/tools/clippy/tests/ui/doc/issue_12795.stderr20
-rw-r--r--src/tools/clippy/tests/ui/doc/issue_9473.stderr5
-rw-r--r--src/tools/clippy/tests/ui/doc/unbalanced_ticks.stderr15
-rw-r--r--src/tools/clippy/tests/ui/eager_transmute.stderr85
-rw-r--r--src/tools/clippy/tests/ui/empty_line_after/doc_comments.stderr5
-rw-r--r--src/tools/clippy/tests/ui/excessive_precision.stderr80
-rw-r--r--src/tools/clippy/tests/ui/fn_to_numeric_cast_any.stderr81
-rw-r--r--src/tools/clippy/tests/ui/for_kv_map.stderr30
-rw-r--r--src/tools/clippy/tests/ui/four_forward_slashes.stderr8
-rw-r--r--src/tools/clippy/tests/ui/four_forward_slashes_first_line.stderr2
-rw-r--r--src/tools/clippy/tests/ui/get_unwrap.stderr85
-rw-r--r--src/tools/clippy/tests/ui/implicit_hasher.stderr15
-rw-r--r--src/tools/clippy/tests/ui/implicit_return.stderr67
-rw-r--r--src/tools/clippy/tests/ui/iter_nth.stderr40
-rw-r--r--src/tools/clippy/tests/ui/join_absolute_paths.stderr40
-rw-r--r--src/tools/clippy/tests/ui/large_enum_variant.64bit.stderr65
-rw-r--r--src/tools/clippy/tests/ui/legacy_numeric_constants.stderr80
-rw-r--r--src/tools/clippy/tests/ui/literals.stderr35
-rw-r--r--src/tools/clippy/tests/ui/lossy_float_literal.stderr55
-rw-r--r--src/tools/clippy/tests/ui/manual_assert.edition2018.stderr10
-rw-r--r--src/tools/clippy/tests/ui/manual_assert.edition2021.stderr10
-rw-r--r--src/tools/clippy/tests/ui/manual_async_fn.stderr60
-rw-r--r--src/tools/clippy/tests/ui/manual_float_methods.stderr45
-rw-r--r--src/tools/clippy/tests/ui/manual_ignore_case_cmp.stderr245
-rw-r--r--src/tools/clippy/tests/ui/manual_is_ascii_check.stderr20
-rw-r--r--src/tools/clippy/tests/ui/map_all_any_identity.stderr10
-rw-r--r--src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges.stderr10
-rw-r--r--src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges_nostd.stderr5
-rw-r--r--src/tools/clippy/tests/ui/match_result_ok.stderr15
-rw-r--r--src/tools/clippy/tests/ui/match_str_case_mismatch.stderr35
-rw-r--r--src/tools/clippy/tests/ui/needless_borrow_pat.stderr10
-rw-r--r--src/tools/clippy/tests/ui/needless_for_each_unfixable.stderr5
-rw-r--r--src/tools/clippy/tests/ui/needless_pass_by_value.stderr20
-rw-r--r--src/tools/clippy/tests/ui/needless_range_loop.stderr70
-rw-r--r--src/tools/clippy/tests/ui/needless_range_loop2.stderr40
-rw-r--r--src/tools/clippy/tests/ui/needless_return.stderr50
-rw-r--r--src/tools/clippy/tests/ui/never_loop.stderr10
-rw-r--r--src/tools/clippy/tests/ui/non_canonical_partial_ord_impl.stderr5
-rw-r--r--src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.stderr15
-rw-r--r--src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.stderr15
-rw-r--r--src/tools/clippy/tests/ui/nonminimal_bool.stderr50
-rw-r--r--src/tools/clippy/tests/ui/octal_escapes.stderr110
-rw-r--r--src/tools/clippy/tests/ui/op_ref.stderr5
-rw-r--r--src/tools/clippy/tests/ui/option_as_ref_cloned.stderr15
-rw-r--r--src/tools/clippy/tests/ui/redundant_guards.stderr5
-rw-r--r--src/tools/clippy/tests/ui/ref_binding_to_reference.stderr10
-rw-r--r--src/tools/clippy/tests/ui/ref_option/ref_option.all.stderr10
-rw-r--r--src/tools/clippy/tests/ui/ref_option/ref_option.private.stderr5
-rw-r--r--src/tools/clippy/tests/ui/repeat_vec_with_capacity.stderr15
-rw-r--r--src/tools/clippy/tests/ui/repeat_vec_with_capacity_nostd.stderr5
-rw-r--r--src/tools/clippy/tests/ui/reversed_empty_ranges_fixable.stderr20
-rw-r--r--src/tools/clippy/tests/ui/reversed_empty_ranges_loops_fixable.stderr30
-rw-r--r--src/tools/clippy/tests/ui/single_range_in_vec_init.stderr90
-rw-r--r--src/tools/clippy/tests/ui/string_lit_chars_any.stderr25
-rw-r--r--src/tools/clippy/tests/ui/suspicious_command_arg_space.stderr10
-rw-r--r--src/tools/clippy/tests/ui/suspicious_doc_comments.stderr15
-rw-r--r--src/tools/clippy/tests/ui/suspicious_to_owned.stderr40
-rw-r--r--src/tools/clippy/tests/ui/suspicious_xor_used_as_pow.stderr35
-rw-r--r--src/tools/clippy/tests/ui/transmute_ptr_to_ptr.stderr55
-rw-r--r--src/tools/clippy/tests/ui/transmutes_expressible_as_ptr_casts.stderr10
-rw-r--r--src/tools/clippy/tests/ui/unit_arg.stderr18
-rw-r--r--src/tools/clippy/tests/ui/unknown_clippy_lints.stderr10
-rw-r--r--src/tools/clippy/tests/ui/unnecessary_lazy_eval.stderr315
-rw-r--r--src/tools/clippy/tests/ui/unnecessary_lazy_eval_unfixable.stderr20
-rw-r--r--src/tools/clippy/tests/ui/unnecessary_literal_unwrap.stderr50
-rw-r--r--src/tools/clippy/tests/ui/unnecessary_map_or.stderr48
-rw-r--r--src/tools/clippy/tests/ui/unnecessary_wraps.stderr44
-rw-r--r--src/tools/clippy/tests/ui/unnested_or_patterns.stderr85
-rw-r--r--src/tools/clippy/tests/ui/unnested_or_patterns2.stderr40
-rw-r--r--src/tools/clippy/tests/ui/unused_enumerate_index.stderr10
-rw-r--r--src/tools/clippy/tests/ui/unused_format_specs.stderr20
-rw-r--r--src/tools/clippy/tests/ui/unused_result_ok.stderr20
m---------src/tools/enzyme0
-rw-r--r--src/tools/miri/tests/pass/intrinsics/portable-simd.rs21
-rw-r--r--src/tools/rustfmt/src/patterns.rs87
-rw-r--r--src/tools/rustfmt/src/spanned.rs2
-rw-r--r--src/tools/rustfmt/src/types.rs16
-rw-r--r--tests/assembly/targets/targets-elf.rs6
-rw-r--r--tests/codegen/autodiff.rs33
-rw-r--r--tests/incremental/feature_gate.rs2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff2
-rw-r--r--tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff100
-rw-r--r--tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff100
-rw-r--r--tests/mir-opt/deduplicate_blocks.rs17
-rw-r--r--tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff2
-rw-r--r--tests/mir-opt/gvn_type_id_polymorphic.cursed_is_i32.GVN.diff12
-rw-r--r--tests/mir-opt/gvn_type_id_polymorphic.rs22
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/run-make/apple-deployment-target/rmake.rs23
-rw-r--r--tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr55
-rw-r--r--tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr5
-rw-r--r--tests/rustdoc-ui/intra-doc/prim-conflict.stderr20
-rw-r--r--tests/rustdoc-ui/intra-doc/value-ctor.stderr25
-rw-r--r--tests/rustdoc-ui/intra-doc/weird-syntax.stderr35
-rw-r--r--tests/rustdoc-ui/issues/ice-generic-type-alias-105742.stderr5
-rw-r--r--tests/rustdoc-ui/issues/ice-typeof-102986.stderr5
-rw-r--r--tests/rustdoc-ui/issues/issue-120444-1.stderr5
-rw-r--r--tests/rustdoc-ui/issues/issue-120444-2.stderr5
-rw-r--r--tests/rustdoc-ui/lints/redundant_explicit_links.stderr300
-rw-r--r--tests/ui/abi/removed-wasm-abi.rs4
-rw-r--r--tests/ui/abi/riscv-discoverability-guidance.riscv32.stderr4
-rw-r--r--tests/ui/abi/riscv-discoverability-guidance.riscv64.stderr4
-rw-r--r--tests/ui/abi/riscv-discoverability-guidance.rs2
-rw-r--r--tests/ui/anon-params/anon-params-denied-2018.stderr5
-rw-r--r--tests/ui/argument-suggestions/basic.stderr20
-rw-r--r--tests/ui/argument-suggestions/complex.stderr5
-rw-r--r--tests/ui/argument-suggestions/display-is-suggestable.stderr5
-rw-r--r--tests/ui/argument-suggestions/extern-fn-arg-names.stderr5
-rw-r--r--tests/ui/argument-suggestions/issue-100478.stderr24
-rw-r--r--tests/ui/argument-suggestions/issue-101097.stderr25
-rw-r--r--tests/ui/argument-suggestions/issue-109831.stderr5
-rw-r--r--tests/ui/argument-suggestions/issue-96638.stderr5
-rw-r--r--tests/ui/argument-suggestions/issue-97197.stderr5
-rw-r--r--tests/ui/argument-suggestions/issue-98894.stderr5
-rw-r--r--tests/ui/argument-suggestions/issue-98897.stderr5
-rw-r--r--tests/ui/argument-suggestions/issue-99482.stderr5
-rw-r--r--tests/ui/argument-suggestions/missing_arguments.stderr95
-rw-r--r--tests/ui/argument-suggestions/mixed_cases.stderr25
-rw-r--r--tests/ui/argument-suggestions/permuted_arguments.stderr10
-rw-r--r--tests/ui/argument-suggestions/swapped_arguments.stderr25
-rw-r--r--tests/ui/array-slice-vec/suggest-array-length.stderr20
-rw-r--r--tests/ui/asm/aarch64/bad-reg.stderr2
-rw-r--r--tests/ui/asm/aarch64/parse-error.stderr40
-rw-r--r--tests/ui/asm/invalid-const-operand.stderr15
-rw-r--r--tests/ui/asm/parse-error.stderr25
-rw-r--r--tests/ui/asm/x86_64/bad-reg.stderr2
-rw-r--r--tests/ui/asm/x86_64/issue-82869.stderr4
-rw-r--r--tests/ui/asm/x86_64/x86_64_parse_error.stderr15
-rw-r--r--tests/ui/associated-consts/associated-const-ambiguity-report.stderr10
-rw-r--r--tests/ui/associated-inherent-types/dont-select-if-disabled.stderr5
-rw-r--r--tests/ui/associated-inherent-types/issue-109071.no_gate.stderr10
-rw-r--r--tests/ui/associated-inherent-types/issue-109768.stderr5
-rw-r--r--tests/ui/associated-item/associated-item-enum.stderr15
-rw-r--r--tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr5
-rw-r--r--tests/ui/associated-type-bounds/elision.stderr10
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/path-ambiguous.stderr20
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/path-higher-ranked.stderr10
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/path-no-qself.stderr5
-rw-r--r--tests/ui/associated-type-bounds/suggest-assoc-ty-bound-on-eq-bound.stderr15
-rw-r--r--tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr60
-rw-r--r--tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr20
-rw-r--r--tests/ui/associated-types/associated-types-eq-1.stderr5
-rw-r--r--tests/ui/associated-types/associated-types-eq-2.stderr23
-rw-r--r--tests/ui/associated-types/associated-types-in-ambiguous-context.stderr30
-rw-r--r--tests/ui/associated-types/associated-types-path-1.stderr10
-rw-r--r--tests/ui/associated-types/associated-types-path-2.stderr5
-rw-r--r--tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr5
-rw-r--r--tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr10
-rw-r--r--tests/ui/associated-types/defaults-specialization.stderr10
-rw-r--r--tests/ui/associated-types/defaults-suitability.current.stderr5
-rw-r--r--tests/ui/associated-types/defaults-suitability.next.stderr5
-rw-r--r--tests/ui/associated-types/impl-wf-cycle-3.stderr5
-rw-r--r--tests/ui/associated-types/invalid-ctor.stderr5
-rw-r--r--tests/ui/associated-types/issue-38821.stderr10
-rw-r--r--tests/ui/associated-types/issue-54108.current.stderr5
-rw-r--r--tests/ui/associated-types/issue-54108.next.stderr5
-rw-r--r--tests/ui/associated-types/issue-59324.stderr5
-rw-r--r--tests/ui/async-await/async-closures/arg-mismatch.stderr5
-rw-r--r--tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr5
-rw-r--r--tests/ui/async-await/in-trait/async-example-desugared-manual.stderr5
-rw-r--r--tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr5
-rw-r--r--tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2015.stderr10
-rw-r--r--tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2018.stderr10
-rw-r--r--tests/ui/async-await/pin-ergonomics/sugar-no-const.stderr5
-rw-r--r--tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr5
-rw-r--r--tests/ui/async-await/suggest-switching-edition-on-await.stderr5
-rw-r--r--tests/ui/async-await/unconstrained-lifetimes.rs9
-rw-r--r--tests/ui/async-await/unconstrained-lifetimes.stderr9
-rw-r--r--tests/ui/attributes/key-value-non-ascii.stderr5
-rw-r--r--tests/ui/attributes/rustc_confusables.stderr15
-rw-r--r--tests/ui/attributes/rustc_confusables_std_cases.stderr45
-rw-r--r--tests/ui/binop/placement-syntax.stderr5
-rw-r--r--tests/ui/block-result/issue-3563.stderr5
-rw-r--r--tests/ui/borrowck/already-borrowed-as-mutable-if-let-133941.stderr10
-rw-r--r--tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr20
-rw-r--r--tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.stderr5
-rw-r--r--tests/ui/borrowck/implied-bound-from-impl-header.rs28
-rw-r--r--tests/ui/borrowck/implied-bound-from-normalized-arg.rs22
-rw-r--r--tests/ui/borrowck/index-mut-help.stderr20
-rw-r--r--tests/ui/borrowck/issue-115259-suggest-iter-mut.stderr5
-rw-r--r--tests/ui/borrowck/issue-62387-suggest-iter-mut-2.stderr5
-rw-r--r--tests/ui/borrowck/issue-62387-suggest-iter-mut.stderr10
-rw-r--r--tests/ui/borrowck/issue-85765-closure.stderr15
-rw-r--r--tests/ui/borrowck/issue-85765.stderr15
-rw-r--r--tests/ui/borrowck/no-invalid-mut-suggestion-for-raw-pointer-issue-127562.stderr5
-rw-r--r--tests/ui/borrowck/suggest-lt-on-ty-alias-w-generics.stderr5
-rw-r--r--tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.stderr5
-rw-r--r--tests/ui/btreemap/btreemap-index-mut-2.stderr15
-rw-r--r--tests/ui/btreemap/btreemap-index-mut.stderr15
-rw-r--r--tests/ui/c-variadic/issue-86053-1.stderr5
-rw-r--r--tests/ui/c-variadic/variadic-ffi-1.stderr10
-rw-r--r--tests/ui/cast/cast-as-bool.stderr25
-rw-r--r--tests/ui/cast/cast-rfc0401-2.stderr5
-rw-r--r--tests/ui/cast/ice-cast-type-with-error-124848.stderr5
-rw-r--r--tests/ui/cast/issue-106883-is-empty.stderr20
-rw-r--r--tests/ui/cfg/cfg-method-receiver.stderr5
-rw-r--r--tests/ui/check-cfg/cfg-value-for-cfg-name-multiple.stderr10
-rw-r--r--tests/ui/check-cfg/diagnotics.cargo.stderr15
-rw-r--r--tests/ui/check-cfg/diagnotics.rustc.stderr15
-rw-r--r--tests/ui/check-cfg/well-known-names.stderr5
-rw-r--r--tests/ui/closures/2229_closure_analysis/bad-pattern.stderr5
-rw-r--r--tests/ui/closures/2229_closure_analysis/issue-118144.stderr5
-rw-r--r--tests/ui/closures/issue-78720.stderr5
-rw-r--r--tests/ui/closures/multiple-fn-bounds.stderr5
-rw-r--r--tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr2
-rw-r--r--tests/ui/cmse-nonsecure/cmse-nonsecure-call/generics.stderr5
-rw-r--r--tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr2
-rw-r--r--tests/ui/codemap_tests/two_files.stderr3
-rw-r--r--tests/ui/compare-method/bad-self-type.stderr10
-rw-r--r--tests/ui/compare-method/issue-90444.stderr10
-rw-r--r--tests/ui/compare-method/region-extra-2.stderr5
-rw-r--r--tests/ui/compare-method/reordered-type-param.stderr5
-rw-r--r--tests/ui/conditional-compilation/cfg-attr-parse.stderr15
-rw-r--r--tests/ui/confuse-field-and-method/issue-33784.stderr5
-rw-r--r--tests/ui/const-generics/adt_const_params/const_param_ty_dyn_compatibility.stderr10
-rw-r--r--tests/ui/const-generics/early/invalid-const-arguments.stderr10
-rw-r--r--tests/ui/const-generics/ensure_is_evaluatable.stderr5
-rw-r--r--tests/ui/const-generics/fn_with_two_const_inputs.stderr5
-rw-r--r--tests/ui/const-generics/forbid-non-structural_match-types.stderr2
-rw-r--r--tests/ui/const-generics/generic_arg_infer/in-signature.stderr30
-rw-r--r--tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr20
-rw-r--r--tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr5
-rw-r--r--tests/ui/const-generics/generic_const_exprs/const_kind_expr/issue_114151.stderr5
-rw-r--r--tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr5
-rw-r--r--tests/ui/const-generics/generic_const_exprs/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.stderr15
-rw-r--r--tests/ui/const-generics/invalid-const-arg-for-type-param.stderr5
-rw-r--r--tests/ui/const-generics/issue-80471.stderr2
-rw-r--r--tests/ui/const-generics/issues/issue-87493.stderr5
-rw-r--r--tests/ui/const-generics/issues/issue-97278.stderr2
-rw-r--r--tests/ui/const-generics/legacy-const-generics-bad.stderr5
-rw-r--r--tests/ui/const-generics/mgca/unexpected-fn-item-in-array.rs13
-rw-r--r--tests/ui/const-generics/mgca/unexpected-fn-item-in-array.stderr19
-rw-r--r--tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr5
-rw-r--r--tests/ui/const-generics/parser-error-recovery/issue-89013.stderr5
-rw-r--r--tests/ui/const-generics/type-dependent/type-mismatch.full.stderr5
-rw-r--r--tests/ui/const-generics/type-dependent/type-mismatch.min.stderr5
-rw-r--r--tests/ui/consts/assoc-const-elided-lifetime.stderr5
-rw-r--r--tests/ui/consts/const-blocks/fn-call-in-non-const.stderr5
-rw-r--r--tests/ui/consts/const-pattern-irrefutable.stderr20
-rw-r--r--tests/ui/consts/const_let_assign2.stderr5
-rw-r--r--tests/ui/consts/ice-bad-input-type-for-cast-83056.stderr5
-rw-r--r--tests/ui/consts/issue-104768.stderr5
-rw-r--r--tests/ui/consts/issue-3521.stderr5
-rw-r--r--tests/ui/consts/issue-91560.stderr10
-rw-r--r--tests/ui/consts/non-const-value-in-const.stderr10
-rw-r--r--tests/ui/consts/refs_check_const_eq-issue-88384.stderr4
-rw-r--r--tests/ui/contracts/associated-item.rs18
-rw-r--r--tests/ui/contracts/associated-item.stderr11
-rw-r--r--tests/ui/contracts/internal_machinery/internal-feature-gating.stderr8
-rw-r--r--tests/ui/coroutine/issue-102645.stderr5
-rw-r--r--tests/ui/coroutine/resume-arg-outlives.stderr10
-rw-r--r--tests/ui/coverage-attr/bad-attr-ice.feat.stderr6
-rw-r--r--tests/ui/coverage-attr/bad-attr-ice.nofeat.stderr6
-rw-r--r--tests/ui/coverage-attr/bad-syntax.stderr80
-rw-r--r--tests/ui/coverage-attr/name-value.stderr72
-rw-r--r--tests/ui/coverage-attr/subword.stderr40
-rw-r--r--tests/ui/coverage-attr/word-only.stderr72
-rw-r--r--tests/ui/deprecation/atomic_initializers.stderr5
-rw-r--r--tests/ui/deprecation/invalid-literal.stderr15
-rw-r--r--tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr15
-rw-r--r--tests/ui/deprecation/suggestion.stderr10
-rw-r--r--tests/ui/deref-patterns/issue-71676-1.stderr5
-rw-r--r--tests/ui/derived-errors/issue-30580.stderr5
-rw-r--r--tests/ui/deriving/auxiliary/malicious-macro.rs31
-rw-r--r--tests/ui/deriving/built-in-proc-macro-scope.stdout2
-rw-r--r--tests/ui/deriving/deriving-coerce-pointee-expanded.stdout13
-rw-r--r--tests/ui/deriving/deriving-coerce-pointee-neg.rs13
-rw-r--r--tests/ui/deriving/deriving-coerce-pointee-neg.stderr69
-rw-r--r--tests/ui/destructuring-assignment/struct_destructure_fail.stderr15
-rw-r--r--tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr10
-rw-r--r--tests/ui/diagnostic_namespace/suggest_typos.stderr15
-rw-r--r--tests/ui/did_you_mean/bad-assoc-ty.stderr90
-rw-r--r--tests/ui/did_you_mean/brackets-to-braces-single-element.stderr15
-rw-r--r--tests/ui/did_you_mean/compatible-variants-in-pat.stderr10
-rw-r--r--tests/ui/did_you_mean/dont-suggest-hygienic-fields.stderr5
-rw-r--r--tests/ui/did_you_mean/issue-36798.stderr5
-rw-r--r--tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr25
-rw-r--r--tests/ui/did_you_mean/issue-42599_available_fields_note.stderr10
-rw-r--r--tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr5
-rw-r--r--tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr25
-rw-r--r--tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr5
-rw-r--r--tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr5
-rw-r--r--tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr40
-rw-r--r--tests/ui/did_you_mean/issue-54109-without-witness.stderr40
-rw-r--r--tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr20
-rw-r--r--tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr10
-rw-r--r--tests/ui/did_you_mean/pub-macro-rules.stderr5
-rw-r--r--tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr5
-rw-r--r--tests/ui/did_you_mean/use_instead_of_import.stderr20
-rw-r--r--tests/ui/drop/if-let-rescope-borrowck-suggestions.stderr5
-rw-r--r--tests/ui/drop/lint-if-let-rescope.stderr20
-rw-r--r--tests/ui/dropck/explicit-drop-bounds.bad1.stderr10
-rw-r--r--tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr5
-rw-r--r--tests/ui/dyn-compatibility/avoid-ice-on-warning-2.new.stderr5
-rw-r--r--tests/ui/dyn-compatibility/avoid-ice-on-warning-3.new.stderr10
-rw-r--r--tests/ui/dyn-compatibility/avoid-ice-on-warning.new.stderr5
-rw-r--r--tests/ui/dyn-compatibility/avoid-ice-on-warning.old.stderr5
-rw-r--r--tests/ui/dyn-compatibility/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.stderr135
-rw-r--r--tests/ui/dyn-compatibility/supertrait-mentions-GAT.stderr5
-rw-r--r--tests/ui/dyn-compatibility/supertrait-mentions-Self.stderr5
-rw-r--r--tests/ui/dyn-keyword/dyn-2021-edition-error.stderr5
-rw-r--r--tests/ui/dyn-keyword/misspelled-associated-item.stderr5
-rw-r--r--tests/ui/empty/empty-struct-braces-expr.stderr60
-rw-r--r--tests/ui/empty/empty-struct-braces-pat-2.stderr40
-rw-r--r--tests/ui/empty/empty-struct-braces-pat-3.stderr20
-rw-r--r--tests/ui/empty/empty-struct-tuple-pat.stderr10
-rw-r--r--tests/ui/empty/empty-struct-unit-pat.stderr60
-rw-r--r--tests/ui/enum-discriminant/discriminant-ill-typed.stderr40
-rw-r--r--tests/ui/enum/assoc-fn-call-on-variant.stderr5
-rw-r--r--tests/ui/env-macro/error-recovery-issue-55897.stderr5
-rw-r--r--tests/ui/error-codes/E0027.stderr60
-rw-r--r--tests/ui/error-codes/E0034.stderr10
-rw-r--r--tests/ui/error-codes/E0040.stderr5
-rw-r--r--tests/ui/error-codes/E0054.stderr5
-rw-r--r--tests/ui/error-codes/E0057.stderr5
-rw-r--r--tests/ui/error-codes/E0060.stderr5
-rw-r--r--tests/ui/error-codes/E0061.stderr10
-rw-r--r--tests/ui/error-codes/E0121.stderr5
-rw-r--r--tests/ui/error-codes/E0214.stderr5
-rw-r--r--tests/ui/error-codes/E0221.stderr15
-rw-r--r--tests/ui/error-codes/E0259.stderr3
-rw-r--r--tests/ui/error-codes/E0260.stderr3
-rw-r--r--tests/ui/error-codes/E0283.stderr5
-rw-r--r--tests/ui/error-codes/E0423.stderr10
-rw-r--r--tests/ui/error-codes/E0435.stderr5
-rw-r--r--tests/ui/error-codes/E0516.stderr5
-rw-r--r--tests/ui/error-codes/E0637.stderr5
-rw-r--r--tests/ui/error-codes/E0642.stderr15
-rw-r--r--tests/ui/error-codes/E0746.stderr10
-rw-r--r--tests/ui/error-codes/ex-E0612.stderr5
-rw-r--r--tests/ui/error-festival.stderr10
-rw-r--r--tests/ui/explicit-tail-calls/become-operator.stderr15
-rw-r--r--tests/ui/explicit/explicit-call-to-dtor.stderr5
-rw-r--r--tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr5
-rw-r--r--tests/ui/expr/if/if-branch-types.stderr5
-rw-r--r--tests/ui/expr/if/if-else-type-mismatch.stderr10
-rw-r--r--tests/ui/expr/issue-22933-2.stderr5
-rw-r--r--tests/ui/extern/extern-const.stderr5
-rw-r--r--tests/ui/extern/extern-crate-rename.stderr5
-rw-r--r--tests/ui/extern/extern-crate-visibility.stderr10
-rw-r--r--tests/ui/extern/fictional-abi.rs3
-rw-r--r--tests/ui/extern/fictional-abi.stderr (renamed from tests/ui/abi/removed-wasm-abi.stderr)9
-rw-r--r--tests/ui/extern/issue-18819.stderr5
-rw-r--r--tests/ui/extern/not-in-block.stderr20
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs28
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr28
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.rs12
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.stderr12
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi.rs38
-rw-r--r--tests/ui/feature-gates/feature-gate-abi.stderr38
-rw-r--r--tests/ui/feature-gates/feature-gate-abi_gpu_kernel.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi_gpu_kernel.stderr14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi_ptx.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi_ptx.stderr14
-rw-r--r--tests/ui/feature-gates/feature-gate-abi_unadjusted.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr2
-rw-r--r--tests/ui/feature-gates/feature-gate-contracts.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-contracts.stderr24
-rw-r--r--tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr5
-rw-r--r--tests/ui/feature-gates/feature-gate-intrinsics.rs4
-rw-r--r--tests/ui/feature-gates/feature-gate-intrinsics.stderr4
-rw-r--r--tests/ui/feature-gates/feature-gate-negate-unsigned.stderr5
-rw-r--r--tests/ui/feature-gates/feature-gate-never_patterns.stderr3
-rw-r--r--tests/ui/feature-gates/feature-gate-rust_cold_cc.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr14
-rw-r--r--tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs8
-rw-r--r--tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr18
-rw-r--r--tests/ui/feature-gates/feature-gate-unboxed-closures.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-unboxed-closures.stderr2
-rw-r--r--tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr5
-rw-r--r--tests/ui/feature-gates/feature-gate-unsized_locals.stderr5
-rw-r--r--tests/ui/feature-gates/feature-gate-vectorcall.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-vectorcall.stderr14
-rw-r--r--tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs2
-rw-r--r--tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr2
-rw-r--r--tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr10
-rw-r--r--tests/ui/fmt/format-args-non-identifier-diagnostics.stderr5
-rw-r--r--tests/ui/fmt/format-string-error-2.stderr5
-rw-r--r--tests/ui/fmt/no-inline-literals-out-of-range.stderr15
-rw-r--r--tests/ui/fmt/struct-field-as-captured-argument.stderr35
-rw-r--r--tests/ui/fmt/suggest-wrongly-order-format-parameter.stderr15
-rw-r--r--tests/ui/fn/error-recovery-mismatch.stderr5
-rw-r--r--tests/ui/fn/fn-pointer-mismatch.stderr10
-rw-r--r--tests/ui/fn/fn-recover-return-sign.stderr20
-rw-r--r--tests/ui/fn/fn-recover-return-sign2.stderr5
-rw-r--r--tests/ui/fn/param-mismatch-foreign.stderr5
-rw-r--r--tests/ui/force-inlining/invalid.stderr24
-rw-r--r--tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr5
-rw-r--r--tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr5
-rw-r--r--tests/ui/generic-associated-types/impl_bounds.stderr5
-rw-r--r--tests/ui/generic-associated-types/issue-70304.stderr5
-rw-r--r--tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr5
-rw-r--r--tests/ui/generic-associated-types/missing-bounds.stderr5
-rw-r--r--tests/ui/generic-const-items/duplicate-where-clause.stderr6
-rw-r--r--tests/ui/generics/issue-95208-ignore-qself.stderr5
-rw-r--r--tests/ui/generics/issue-95208.stderr5
-rw-r--r--tests/ui/generics/overlapping-errors-span-issue-123861.stderr5
-rw-r--r--tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr25
-rw-r--r--tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr5
-rw-r--r--tests/ui/hashmap/hashmap-index-mut.stderr15
-rw-r--r--tests/ui/higher-ranked/trait-bounds/issue-58451.stderr5
-rw-r--r--tests/ui/hygiene/globs.stderr10
-rw-r--r--tests/ui/impl-trait/dyn-incompatible-trait-in-return-position-dyn-trait.stderr5
-rw-r--r--tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr30
-rw-r--r--tests/ui/impl-trait/equality.stderr5
-rw-r--r--tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr5
-rw-r--r--tests/ui/impl-trait/impl-generic-mismatch-ab.stderr5
-rw-r--r--tests/ui/impl-trait/impl-generic-mismatch.stderr10
-rw-r--r--tests/ui/impl-trait/in-assoc-type-unconstrained.stderr5
-rw-r--r--tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr11
-rw-r--r--tests/ui/impl-trait/in-trait/expeced-refree-to-map-to-reearlybound-ice-108580.stderr5
-rw-r--r--tests/ui/impl-trait/in-trait/foreign.stderr10
-rw-r--r--tests/ui/impl-trait/in-trait/method-signature-matches.lt.stderr5
-rw-r--r--tests/ui/impl-trait/in-trait/method-signature-matches.mismatch.stderr5
-rw-r--r--tests/ui/impl-trait/in-trait/method-signature-matches.mismatch_async.stderr5
-rw-r--r--tests/ui/impl-trait/in-trait/opaque-and-lifetime-mismatch.stderr5
-rw-r--r--tests/ui/impl-trait/in-trait/refine-captures.stderr15
-rw-r--r--tests/ui/impl-trait/in-trait/refine.stderr25
-rw-r--r--tests/ui/impl-trait/in-trait/rpitit-hidden-types-self-implied-wf-via-param.stderr4
-rw-r--r--tests/ui/impl-trait/in-trait/specialization-broken.stderr5
-rw-r--r--tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr50
-rw-r--r--tests/ui/impl-trait/no-method-suggested-traits.stderr30
-rw-r--r--tests/ui/impl-trait/opaque-used-in-extraneous-argument.stderr5
-rw-r--r--tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr55
-rw-r--r--tests/ui/impl-trait/precise-capturing/bad-lifetimes.stderr5
-rw-r--r--tests/ui/impl-trait/precise-capturing/hidden-type-suggestion.stderr10
-rw-r--r--tests/ui/impl-trait/precise-capturing/migration-note.stderr5
-rw-r--r--tests/ui/impl-trait/precise-capturing/overcaptures-2024.stderr10
-rw-r--r--tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr10
-rw-r--r--tests/ui/impl-trait/trait_type.stderr5
-rw-r--r--tests/ui/impl-trait/where-allowed.stderr5
-rw-r--r--tests/ui/imports/bad-import-with-rename.stderr10
-rw-r--r--tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr5
-rw-r--r--tests/ui/imports/glob-resolve1.stderr5
-rw-r--r--tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr3
-rw-r--r--tests/ui/imports/issue-45829/import-self.stderr15
-rw-r--r--tests/ui/imports/issue-45829/issue-45829.stderr5
-rw-r--r--tests/ui/imports/issue-45829/rename-extern-vs-use.stderr3
-rw-r--r--tests/ui/imports/issue-45829/rename-extern-with-tab.stderr3
-rw-r--r--tests/ui/imports/issue-45829/rename-extern.stderr3
-rw-r--r--tests/ui/imports/issue-45829/rename-use-vs-extern.stderr5
-rw-r--r--tests/ui/imports/issue-45829/rename-use-with-tabs.stderr5
-rw-r--r--tests/ui/imports/issue-45829/rename-with-path.stderr5
-rw-r--r--tests/ui/imports/issue-45829/rename.stderr5
-rw-r--r--tests/ui/imports/issue-56125.stderr20
-rw-r--r--tests/ui/imports/issue-57015.stderr5
-rw-r--r--tests/ui/imports/issue-59764.stderr10
-rw-r--r--tests/ui/imports/multiple-extern-by-macro-for-buitlin.stderr3
-rw-r--r--tests/ui/imports/multiple-extern-by-macro-for-custom.stderr3
-rw-r--r--tests/ui/imports/multiple-extern-by-macro-for-inexist.stderr3
-rw-r--r--tests/ui/imports/no-std-inject.stderr5
-rw-r--r--tests/ui/imports/private-std-reexport-suggest-public.stderr5
-rw-r--r--tests/ui/imports/suggest-import-issue-120074.edition2015.stderr5
-rw-r--r--tests/ui/imports/suggest-import-issue-120074.edition2021.stderr5
-rw-r--r--tests/ui/include-macros/parent_dir.stderr20
-rw-r--r--tests/ui/inference/ambiguous_type_parameter.stderr5
-rw-r--r--tests/ui/inference/cannot-infer-closure-circular.stderr4
-rw-r--r--tests/ui/inference/char-as-str-single.stderr20
-rw-r--r--tests/ui/inference/erase-type-params-in-label.stderr8
-rw-r--r--tests/ui/inference/inference_unstable.stderr5
-rw-r--r--tests/ui/inference/inference_unstable_featured.stderr10
-rw-r--r--tests/ui/inference/issue-103587.stderr5
-rw-r--r--tests/ui/inference/issue-104649.stderr4
-rw-r--r--tests/ui/inference/issue-12028.stderr5
-rw-r--r--tests/ui/inference/issue-70082.stderr5
-rw-r--r--tests/ui/inference/issue-71584.stderr5
-rw-r--r--tests/ui/inference/issue-72616.stderr10
-rw-r--r--tests/ui/inference/issue-72690.stderr40
-rw-r--r--tests/ui/inference/issue-80816.stderr5
-rw-r--r--tests/ui/inference/issue-83606.stderr4
-rw-r--r--tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.rs10
-rw-r--r--tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.stderr14
-rw-r--r--tests/ui/inference/str-as-char.stderr20
-rw-r--r--tests/ui/infinite/infinite-assoc.stderr5
-rw-r--r--tests/ui/inline-const/cross-const-control-flow-125846.stderr5
-rw-r--r--tests/ui/intrinsics/incorrect-read_via_copy-defn.rs2
-rw-r--r--tests/ui/intrinsics/incorrect-read_via_copy-defn.stderr2
-rw-r--r--tests/ui/intrinsics/incorrect-transmute.rs2
-rw-r--r--tests/ui/intrinsics/incorrect-transmute.stderr2
-rw-r--r--tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.stderr30
-rw-r--r--tests/ui/issues/issue-13497.stderr5
-rw-r--r--tests/ui/issues/issue-17546.stderr20
-rw-r--r--tests/ui/issues/issue-17800.stderr5
-rw-r--r--tests/ui/issues/issue-18107.stderr5
-rw-r--r--tests/ui/issues/issue-18446.stderr5
-rw-r--r--tests/ui/issues/issue-20225.stderr15
-rw-r--r--tests/ui/issues/issue-21332.stderr5
-rw-r--r--tests/ui/issues/issue-23041.stderr5
-rw-r--r--tests/ui/issues/issue-23073.stderr5
-rw-r--r--tests/ui/issues/issue-23217.stderr5
-rw-r--r--tests/ui/issues/issue-23589.stderr10
-rw-r--r--tests/ui/issues/issue-27433.stderr5
-rw-r--r--tests/ui/issues/issue-28971.stderr5
-rw-r--r--tests/ui/issues/issue-32004.stderr10
-rw-r--r--tests/ui/issues/issue-34209.stderr5
-rw-r--r--tests/ui/issues/issue-3521-2.stderr5
-rw-r--r--tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.stderr5
-rw-r--r--tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.stderr5
-rw-r--r--tests/ui/issues/issue-3702-2.stderr10
-rw-r--r--tests/ui/issues/issue-41652/issue-41652.stderr5
-rw-r--r--tests/ui/issues/issue-41726.stderr5
-rw-r--r--tests/ui/issues/issue-42312.stderr5
-rw-r--r--tests/ui/issues/issue-44239.stderr5
-rw-r--r--tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr5
-rw-r--r--tests/ui/issues/issue-4736.stderr5
-rw-r--r--tests/ui/issues/issue-50571.stderr5
-rw-r--r--tests/ui/issues/issue-51874.stderr5
-rw-r--r--tests/ui/issues/issue-5358-1.stderr5
-rw-r--r--tests/ui/issues/issue-56175.stderr10
-rw-r--r--tests/ui/issues/issue-57741-dereference-boxed-value/issue-57741.stderr20
-rw-r--r--tests/ui/issues/issue-5883.stderr5
-rw-r--r--tests/ui/issues/issue-69683.stderr10
-rw-r--r--tests/ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.stderr5
-rw-r--r--tests/ui/issues/issue-76191.stderr5
-rw-r--r--tests/ui/issues/issue-78622.stderr5
-rw-r--r--tests/ui/issues/issue-80607.stderr5
-rw-r--r--tests/ui/issues/issue-8761.stderr10
-rw-r--r--tests/ui/iterators/into-iter-on-arrays-2018.stderr15
-rw-r--r--tests/ui/iterators/into-iter-on-arrays-lint.stderr40
-rw-r--r--tests/ui/iterators/into-iter-on-boxed-slices-2021.stderr15
-rw-r--r--tests/ui/iterators/into-iter-on-boxed-slices-lint.stderr10
-rw-r--r--tests/ui/label/label_misspelled.stderr30
-rw-r--r--tests/ui/let-else/let-else-deref-coercion.stderr10
-rw-r--r--tests/ui/lexer/lex-bad-char-literals-1.stderr10
-rw-r--r--tests/ui/lexer/lex-bad-char-literals-2.stderr5
-rw-r--r--tests/ui/lexer/lex-bad-char-literals-3.stderr10
-rw-r--r--tests/ui/lexer/lex-bad-char-literals-5.stderr10
-rw-r--r--tests/ui/lexer/lex-bad-char-literals-6.stderr15
-rw-r--r--tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr5
-rw-r--r--tests/ui/lexer/lex-bad-str-literal-as-char-2.stderr5
-rw-r--r--tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2015.stderr5
-rw-r--r--tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2018.stderr5
-rw-r--r--tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2021.stderr10
-rw-r--r--tests/ui/lexer/lex-bad-str-literal-as-char-4.stderr10
-rw-r--r--tests/ui/lifetimes/borrowck-let-suggestion.stderr5
-rw-r--r--tests/ui/lifetimes/fullwidth-ampersand.stderr5
-rw-r--r--tests/ui/lifetimes/issue-26638.stderr15
-rw-r--r--tests/ui/lifetimes/issue-90170-elision-mismatch.stderr5
-rw-r--r--tests/ui/lifetimes/raw/immediately-followed-by-lt.e2021.stderr5
-rw-r--r--tests/ui/lint/ambiguous_wide_pointer_comparisons_suggestions.stderr10
-rw-r--r--tests/ui/lint/clashing-extern-fn.rs32
-rw-r--r--tests/ui/lint/clashing-extern-fn.stderr23
-rw-r--r--tests/ui/lint/dead-code/tuple-struct-field.stderr5
-rw-r--r--tests/ui/lint/elided-named-lifetimes/static.stderr5
-rw-r--r--tests/ui/lint/fn-ptr-comparisons.stderr60
-rw-r--r--tests/ui/lint/for_loop_over_fallibles.stderr100
-rw-r--r--tests/ui/lint/issue-109152.stderr5
-rw-r--r--tests/ui/lint/issue-109529.stderr5
-rw-r--r--tests/ui/lint/issue-35075.stderr10
-rw-r--r--tests/ui/lint/let_underscore/issue-119696-err-on-fn.stderr10
-rw-r--r--tests/ui/lint/let_underscore/issue-119697-extra-let.stderr20
-rw-r--r--tests/ui/lint/let_underscore/let_underscore_drop.stderr10
-rw-r--r--tests/ui/lint/let_underscore/let_underscore_lock.stderr30
-rw-r--r--tests/ui/lint/lint-ctypes-enum.rs1
-rw-r--r--tests/ui/lint/lint-ctypes-enum.stderr49
-rw-r--r--tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr5
-rw-r--r--tests/ui/lint/lint-strict-provenance-lossy-casts.stderr10
-rw-r--r--tests/ui/lint/lint_map_unit_fn.stderr15
-rw-r--r--tests/ui/lint/non-snake-case/lint-non-snake-case-identifiers-suggestion-reserved.stderr15
-rw-r--r--tests/ui/lint/recommend-literal.stderr15
-rw-r--r--tests/ui/lint/static-mut-refs.e2021.stderr35
-rw-r--r--tests/ui/lint/static-mut-refs.e2024.stderr35
-rw-r--r--tests/ui/lint/type-overflow.stderr30
-rw-r--r--tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr30
-rw-r--r--tests/ui/lint/wide_pointer_comparisons.stderr180
-rw-r--r--tests/ui/loops/loop-break-value-no-repeat.stderr5
-rw-r--r--tests/ui/loops/loop-break-value.stderr45
-rw-r--r--tests/ui/macros/expand-full-no-resolution.stderr10
-rw-r--r--tests/ui/macros/expr_2021_cargo_fix_edition.stderr10
-rw-r--r--tests/ui/macros/format-foreign.stderr10
-rw-r--r--tests/ui/macros/issue-103529.stderr10
-rw-r--r--tests/ui/macros/issue-109237.stderr5
-rw-r--r--tests/ui/macros/issue-118786.stderr5
-rw-r--r--tests/ui/macros/issue-99265.stderr150
-rw-r--r--tests/ui/macros/macro-backtrace-invalid-internals.stderr10
-rw-r--r--tests/ui/macros/macro-inner-attributes.stderr5
-rw-r--r--tests/ui/macros/macro-use-wrong-name.stderr5
-rw-r--r--tests/ui/macros/recovery-allowed.stderr5
-rw-r--r--tests/ui/malformed/malformed-meta-delim.stderr10
-rw-r--r--tests/ui/malformed/malformed-special-attrs.stderr10
-rw-r--r--tests/ui/match/issue-56685.stderr20
-rw-r--r--tests/ui/match/match-pattern-field-mismatch.stderr5
-rw-r--r--tests/ui/meta/expected-error-correct-rev.a.stderr5
-rw-r--r--tests/ui/meta/meta-expected-error-wrong-rev.a.stderr5
-rw-r--r--tests/ui/methods/disambiguate-associated-function-first-arg.stderr25
-rw-r--r--tests/ui/methods/disambiguate-multiple-blanket-impl.stderr30
-rw-r--r--tests/ui/methods/disambiguate-multiple-impl.stderr30
-rw-r--r--tests/ui/methods/disambiguate-multiple-trait-2.stderr60
-rw-r--r--tests/ui/methods/disambiguate-multiple-trait.stderr30
-rw-r--r--tests/ui/methods/issues/issue-105732.stderr5
-rw-r--r--tests/ui/methods/issues/issue-90315.stderr5
-rw-r--r--tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr5
-rw-r--r--tests/ui/methods/method-ambig-two-traits-cross-crate.stderr10
-rw-r--r--tests/ui/methods/method-ambig-two-traits-from-bounds.stderr10
-rw-r--r--tests/ui/methods/method-ambig-two-traits-from-impls.stderr10
-rw-r--r--tests/ui/methods/method-ambig-two-traits-from-impls2.stderr10
-rw-r--r--tests/ui/methods/method-ambig-two-traits-with-default-method.stderr10
-rw-r--r--tests/ui/methods/method-ambiguity-no-rcvr.stderr10
-rw-r--r--tests/ui/methods/method-call-err-msg.stderr15
-rw-r--r--tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr15
-rw-r--r--tests/ui/methods/method-not-found-but-doc-alias.stderr5
-rw-r--r--tests/ui/methods/method-on-ambiguous-numeric-type.stderr5
-rw-r--r--tests/ui/methods/suggest-convert-ptr-to-ref.stderr10
-rw-r--r--tests/ui/mir/issue-106062.stderr10
-rw-r--r--tests/ui/mir/issue-112269.stderr10
-rw-r--r--tests/ui/mismatched_types/E0053.stderr10
-rw-r--r--tests/ui/mismatched_types/cast-rfc0401.stderr5
-rw-r--r--tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr5
-rw-r--r--tests/ui/mismatched_types/closure-arg-count.stderr35
-rw-r--r--tests/ui/mismatched_types/float-literal-inference-restrictions.stderr5
-rw-r--r--tests/ui/mismatched_types/issue-106182.stderr5
-rw-r--r--tests/ui/mismatched_types/issue-112036.stderr5
-rw-r--r--tests/ui/mismatched_types/issue-13033.stderr5
-rw-r--r--tests/ui/mismatched_types/issue-1362.stderr5
-rw-r--r--tests/ui/mismatched_types/issue-1448-2.stderr5
-rw-r--r--tests/ui/mismatched_types/mismatch-args-crash-issue-128848.stderr5
-rw-r--r--tests/ui/mismatched_types/mismatch-args-crash-issue-130400.stderr5
-rw-r--r--tests/ui/mismatched_types/mismatch-args-vargs-issue-130372.stderr5
-rw-r--r--tests/ui/mismatched_types/numeric-literal-cast.stderr15
-rw-r--r--tests/ui/mismatched_types/overloaded-calls-bad.stderr5
-rw-r--r--tests/ui/mismatched_types/ref-pat-suggestions.stderr5
-rw-r--r--tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr10
-rw-r--r--tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr10
-rw-r--r--tests/ui/mismatched_types/transforming-option-ref-issue-127545.stderr15
-rw-r--r--tests/ui/missing/missing-block-hint.stderr5
-rw-r--r--tests/ui/missing/missing-fields-in-struct-pattern.stderr5
-rw-r--r--tests/ui/missing/missing-items/missing-const-parameter.stderr5
-rw-r--r--tests/ui/missing/missing-items/missing-type-parameter2.stderr25
-rw-r--r--tests/ui/moves/needs-clone-through-deref.stderr5
-rw-r--r--tests/ui/moves/suggest-clone-when-some-obligation-is-unmet.stderr5
-rw-r--r--tests/ui/moves/use_of_moved_value_copy_suggestions.stderr5
-rw-r--r--tests/ui/namespace/namespace-mix.stderr20
-rw-r--r--tests/ui/never_type/dependency-on-fallback-to-unit.stderr5
-rw-r--r--tests/ui/never_type/issue-96335.stderr10
-rw-r--r--tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.stderr5
-rw-r--r--tests/ui/nll/check-normalized-sig-for-wf.current.stderr (renamed from tests/ui/nll/check-normalized-sig-for-wf.stderr)6
-rw-r--r--tests/ui/nll/check-normalized-sig-for-wf.next.stderr47
-rw-r--r--tests/ui/nll/check-normalized-sig-for-wf.rs4
-rw-r--r--tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr10
-rw-r--r--tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr10
-rw-r--r--tests/ui/non-fmt-panic.stderr40
-rw-r--r--tests/ui/not-enough-arguments.stderr10
-rw-r--r--tests/ui/numeric/const-scope.stderr15
-rw-r--r--tests/ui/numeric/numeric-fields.stderr5
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr55
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr55
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr55
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr55
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr55
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr55
-rw-r--r--tests/ui/numeric/numeric-suffix/numeric-suffix.stderr280
-rw-r--r--tests/ui/object-pointer-types.stderr5
-rw-r--r--tests/ui/obsolete-in-place/bad.stderr5
-rw-r--r--tests/ui/on-unimplemented/bad-annotation.stderr6
-rw-r--r--tests/ui/on-unimplemented/issue-104140.stderr10
-rw-r--r--tests/ui/operator-recovery/less-than-greater-than.stderr5
-rw-r--r--tests/ui/or-patterns/multiple-pattern-typo.stderr35
-rw-r--r--tests/ui/or-patterns/remove-leading-vert.stderr30
-rw-r--r--tests/ui/panic-handler/weak-lang-item.stderr3
-rw-r--r--tests/ui/parser/bad-char-literals.stderr10
-rw-r--r--tests/ui/parser/bad-crate-name.stderr5
-rw-r--r--tests/ui/parser/bad-escape-suggest-raw-string.stderr5
-rw-r--r--tests/ui/parser/bad-let-else-statement.stderr10
-rw-r--r--tests/ui/parser/bad-lit-suffixes.stderr6
-rw-r--r--tests/ui/parser/byte-literals.stderr10
-rw-r--r--tests/ui/parser/byte-string-literals.stderr5
-rw-r--r--tests/ui/parser/char/whitespace-character-literal.stderr5
-rw-r--r--tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr5
-rw-r--r--tests/ui/parser/default-on-wrong-item-kind.stderr5
-rw-r--r--tests/ui/parser/do-catch-suggests-try.stderr5
-rw-r--r--tests/ui/parser/dotdotdot-expr.stderr10
-rw-r--r--tests/ui/parser/duplicate-where-clauses.stderr30
-rw-r--r--tests/ui/parser/emoji-identifiers.stderr10
-rw-r--r--tests/ui/parser/eq-gt-to-gt-eq.stderr35
-rw-r--r--tests/ui/parser/expr-rarrow-call.stderr25
-rw-r--r--tests/ui/parser/extern-crate-unexpected-token.stderr5
-rw-r--r--tests/ui/parser/extern-no-fn.stderr5
-rw-r--r--tests/ui/parser/fn-body-eq-expr-semi.stderr40
-rw-r--r--tests/ui/parser/fn-colon-return-type.stderr5
-rw-r--r--tests/ui/parser/foreign-const-semantic-fail.stderr10
-rw-r--r--tests/ui/parser/foreign-const-syntactic-fail.stderr10
-rw-r--r--tests/ui/parser/increment-autofix-2.stderr30
-rw-r--r--tests/ui/parser/increment-autofix.stderr10
-rw-r--r--tests/ui/parser/intersection-patterns-1.stderr10
-rw-r--r--tests/ui/parser/issues/issue-100197-mut-let.stderr5
-rw-r--r--tests/ui/parser/issues/issue-101477-enum.stderr5
-rw-r--r--tests/ui/parser/issues/issue-101477-let.stderr5
-rw-r--r--tests/ui/parser/issues/issue-102806.stderr15
-rw-r--r--tests/ui/parser/issues/issue-103748-ICE-wrong-braces.stderr10
-rw-r--r--tests/ui/parser/issues/issue-104867-inc-dec-2.stderr45
-rw-r--r--tests/ui/parser/issues/issue-104867-inc-dec.stderr25
-rw-r--r--tests/ui/parser/issues/issue-105366.stderr5
-rw-r--r--tests/ui/parser/issues/issue-108495-dec.stderr25
-rw-r--r--tests/ui/parser/issues/issue-110014.stderr5
-rw-r--r--tests/ui/parser/issues/issue-111416.stderr5
-rw-r--r--tests/ui/parser/issues/issue-118530-ice.stderr5
-rw-r--r--tests/ui/parser/issues/issue-17718-const-mut.stderr3
-rw-r--r--tests/ui/parser/issues/issue-23620-invalid-escapes.stderr5
-rw-r--r--tests/ui/parser/issues/issue-24375.stderr5
-rw-r--r--tests/ui/parser/issues/issue-30318.stderr10
-rw-r--r--tests/ui/parser/issues/issue-32214.stderr5
-rw-r--r--tests/ui/parser/issues/issue-34255-1.stderr5
-rw-r--r--tests/ui/parser/issues/issue-44406.stderr5
-rw-r--r--tests/ui/parser/issues/issue-57684.stderr10
-rw-r--r--tests/ui/parser/issues/issue-64732.stderr10
-rw-r--r--tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr30
-rw-r--r--tests/ui/parser/issues/issue-68730.stderr10
-rw-r--r--tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr15
-rw-r--r--tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr10
-rw-r--r--tests/ui/parser/issues/issue-84117.stderr15
-rw-r--r--tests/ui/parser/issues/issue-84148-1.stderr5
-rw-r--r--tests/ui/parser/issues/issue-87086-colon-path-sep.stderr45
-rw-r--r--tests/ui/parser/issues/issue-90993.stderr15
-rw-r--r--tests/ui/parser/issues/issue-99625-enum-struct-mutually-exclusive.stderr5
-rw-r--r--tests/ui/parser/issues/issue-99910-const-let-mutually-exclusive.stderr10
-rw-r--r--tests/ui/parser/issues/recover-ge-as-fat-arrow.stderr5
-rw-r--r--tests/ui/parser/item-kw-case-mismatch.stderr70
-rw-r--r--tests/ui/parser/kw-in-trait-bounds.stderr20
-rw-r--r--tests/ui/parser/lifetime-in-pattern.stderr5
-rw-r--r--tests/ui/parser/lifetime-semicolon.stderr5
-rw-r--r--tests/ui/parser/macros-no-semicolon-items.stderr5
-rw-r--r--tests/ui/parser/match-arm-without-body.stderr3
-rw-r--r--tests/ui/parser/match-arm-without-braces.stderr5
-rw-r--r--tests/ui/parser/missing-fn-issue-65381-2.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/assoc-type.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/async-move.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/const-fn.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/const-generics.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/const.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/for-loop.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/hrdt.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/impl-block.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/impl-return.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/impl-trait-for.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/impl-trait.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/let-else.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/let-mut.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/let.stderr10
-rw-r--r--tests/ui/parser/misspelled-keywords/match.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/mod.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/pub-fn.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/ref.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/return.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/static-mut.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/static.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/struct.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/unsafe-fn.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/use.stderr5
-rw-r--r--tests/ui/parser/misspelled-keywords/where-clause.stderr3
-rw-r--r--tests/ui/parser/misspelled-keywords/while-loop.stderr5
-rw-r--r--tests/ui/parser/mut-patterns.stderr20
-rw-r--r--tests/ui/parser/not-a-pred.stderr5
-rw-r--r--tests/ui/parser/public-instead-of-pub-1.stderr5
-rw-r--r--tests/ui/parser/public-instead-of-pub-3.stderr5
-rw-r--r--tests/ui/parser/public-instead-of-pub.stderr5
-rw-r--r--tests/ui/parser/range-inclusive-extra-equals.stderr5
-rw-r--r--tests/ui/parser/range_inclusive_dotdotdot.stderr40
-rw-r--r--tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr5
-rw-r--r--tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr10
-rw-r--r--tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr5
-rw-r--r--tests/ui/parser/recover/recover-from-bad-variant.stderr15
-rw-r--r--tests/ui/parser/recover/recover-from-homoglyph.stderr5
-rw-r--r--tests/ui/parser/recover/recover-pat-exprs.stderr145
-rw-r--r--tests/ui/parser/recover/recover-pat-issues.stderr15
-rw-r--r--tests/ui/parser/recover/recover-range-pats.stderr25
-rw-r--r--tests/ui/parser/recover/recover-ref-dyn-mut.stderr5
-rw-r--r--tests/ui/parser/recover/turbofish-arg-with-stray-colon.stderr5
-rw-r--r--tests/ui/parser/recover/unicode-double-equals-recovery.stderr10
-rw-r--r--tests/ui/parser/removed-syntax/removed-syntax-box.stderr25
-rw-r--r--tests/ui/parser/suggest-assoc-const.stderr5
-rw-r--r--tests/ui/parser/suggest-remove-compount-assign-let-ice.stderr5
-rw-r--r--tests/ui/parser/trailing-question-in-type.stderr10
-rw-r--r--tests/ui/parser/type-ascription-in-pattern.stderr10
-rw-r--r--tests/ui/parser/typod-const-in-const-param-def.stderr20
-rw-r--r--tests/ui/parser/unicode-character-literal.stderr15
-rw-r--r--tests/ui/parser/unicode-chars.stderr10
-rw-r--r--tests/ui/parser/unicode-control-codepoints.stderr50
-rw-r--r--tests/ui/parser/unicode-quote-chars.stderr10
-rw-r--r--tests/ui/parser/unnecessary-let.stderr5
-rw-r--r--tests/ui/parser/use-colon-as-mod-sep.stderr20
-rw-r--r--tests/ui/parser/utf16-be-without-bom.stderr5
-rw-r--r--tests/ui/parser/utf16-le-without-bom.stderr5
-rw-r--r--tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr15
-rw-r--r--tests/ui/pattern/incorrect-placement-of-pattern-modifiers.stderr5
-rw-r--r--tests/ui/pattern/issue-72574-1.stderr5
-rw-r--r--tests/ui/pattern/issue-72574-2.stderr5
-rw-r--r--tests/ui/pattern/issue-74539.stderr5
-rw-r--r--tests/ui/pattern/issue-74702.stderr5
-rw-r--r--tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr5
-rw-r--r--tests/ui/pattern/pat-tuple-field-count-cross.stderr50
-rw-r--r--tests/ui/pattern/pat-tuple-overfield.stderr70
-rw-r--r--tests/ui/pattern/pat-tuple-underfield.stderr15
-rw-r--r--tests/ui/pattern/patkind-ref-binding-issue-114896.stderr5
-rw-r--r--tests/ui/pattern/patkind-ref-binding-issue-122415.stderr5
-rw-r--r--tests/ui/pattern/pattern-bad-ref-box-order.stderr5
-rw-r--r--tests/ui/pattern/pattern-error-continue.stderr10
-rw-r--r--tests/ui/pattern/range-pattern-meant-to-be-slice-rest-pattern.stderr15
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/feature-gate-ref_pat_eat_one_layer_2024.stderr25
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/mut-ref-mut.classic2024.stderr5
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.classic2024.stderr50
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.stable2021.stderr5
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.structural2024.stderr85
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.classic2024.stderr5
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref_pat_eat_one_layer_2021_fail.stderr25
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/well-typed-edition-2024.stable2021.stderr25
-rw-r--r--tests/ui/pattern/slice-pattern-refutable.stderr15
-rw-r--r--tests/ui/pattern/slice-patterns-ambiguity.stderr15
-rw-r--r--tests/ui/pattern/usefulness/doc-hidden-fields.stderr45
-rw-r--r--tests/ui/pattern/usefulness/stable-gated-fields.stderr15
-rw-r--r--tests/ui/pattern/usefulness/unstable-gated-fields.stderr30
-rw-r--r--tests/ui/pptypedef.stderr10
-rw-r--r--tests/ui/privacy/issue-75907.stderr5
-rw-r--r--tests/ui/privacy/privacy-in-paths.stderr5
-rw-r--r--tests/ui/privacy/privacy-ns1.stderr15
-rw-r--r--tests/ui/privacy/privacy-ns2.stderr10
-rw-r--r--tests/ui/privacy/privacy1.stderr10
-rw-r--r--tests/ui/privacy/privacy5.stderr50
-rw-r--r--tests/ui/privacy/sealed-traits/re-exported-trait.stderr5
-rw-r--r--tests/ui/privacy/suggest-box-new.stderr112
-rw-r--r--tests/ui/privacy/suggest-making-field-public.stderr10
-rw-r--r--tests/ui/privacy/sysroot-private.default.stderr5
-rw-r--r--tests/ui/privacy/sysroot-private.rustc_private_enabled.stderr5
-rw-r--r--tests/ui/proc-macro/disappearing-resolution.stderr5
-rw-r--r--tests/ui/proc-macro/issue-66286.stderr5
-rw-r--r--tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr5
-rw-r--r--tests/ui/pub/pub-ident-fn-or-struct.stderr5
-rw-r--r--tests/ui/pub/pub-restricted.stderr25
-rw-r--r--tests/ui/qualified/qualified-path-params-2.stderr5
-rw-r--r--tests/ui/regions/region-object-lifetime-in-coercion.stderr20
-rw-r--r--tests/ui/regions/regions-close-object-into-object-2.stderr10
-rw-r--r--tests/ui/regions/regions-close-object-into-object-4.stderr10
-rw-r--r--tests/ui/regions/regions-proc-bound-capture.stderr10
-rw-r--r--tests/ui/repeat-expr/repeat_count.stderr10
-rw-r--r--tests/ui/repeat-expr/typo-in-repeat-expr-issue-80173.stderr35
-rw-r--r--tests/ui/resolve/const-with-typo-in-pattern-binding.stderr15
-rw-r--r--tests/ui/resolve/issue-100365.stderr20
-rw-r--r--tests/ui/resolve/issue-101749.stderr5
-rw-r--r--tests/ui/resolve/issue-103202.stderr5
-rw-r--r--tests/ui/resolve/issue-103474.stderr5
-rw-r--r--tests/ui/resolve/issue-112472-multi-generics-suggestion.stderr10
-rw-r--r--tests/ui/resolve/issue-18252.stderr5
-rw-r--r--tests/ui/resolve/issue-22692.stderr40
-rw-r--r--tests/ui/resolve/issue-35675.stderr10
-rw-r--r--tests/ui/resolve/issue-3907.stderr3
-rw-r--r--tests/ui/resolve/issue-39226.stderr10
-rw-r--r--tests/ui/resolve/issue-42944.stderr5
-rw-r--r--tests/ui/resolve/issue-5035.stderr8
-rw-r--r--tests/ui/resolve/issue-5099.stderr15
-rw-r--r--tests/ui/resolve/issue-55673.stderr15
-rw-r--r--tests/ui/resolve/issue-73427.stderr60
-rw-r--r--tests/ui/resolve/privacy-enum-ctor.stderr55
-rw-r--r--tests/ui/resolve/privacy-struct-ctor.stderr10
-rw-r--r--tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr3
-rw-r--r--tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr5
-rw-r--r--tests/ui/resolve/resolve-inconsistent-names.stderr10
-rw-r--r--tests/ui/resolve/resolve-issue-135614-assoc-const.import_trait_associated_functions.stderr5
-rw-r--r--tests/ui/resolve/resolve-issue-135614-assoc-const.normal.stderr5
-rw-r--r--tests/ui/resolve/resolve-variant-assoc-item.stderr10
-rw-r--r--tests/ui/resolve/suggest-path-for-tuple-struct.stderr10
-rw-r--r--tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr50
-rw-r--r--tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr25
-rw-r--r--tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr10
-rw-r--r--tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr3
-rw-r--r--tests/ui/rfcs/rfc-2008-non-exhaustive/struct.stderr15
-rw-r--r--tests/ui/rfcs/rfc-2008-non-exhaustive/variant.stderr10
-rw-r--r--tests/ui/rfcs/rfc-2126-extern-absolute-paths/not-allowed.stderr5
-rw-r--r--tests/ui/rmeta/rmeta_meta_main.stderr5
-rw-r--r--tests/ui/rust-2018/remove-extern-crate.stderr10
-rw-r--r--tests/ui/rust-2018/trait-import-suggestions.stderr20
-rw-r--r--tests/ui/rust-2021/future-prelude-collision-shadow.stderr5
-rw-r--r--tests/ui/rust-2021/ice-return-unsized-can-impl-2.stderr10
-rw-r--r--tests/ui/rust-2021/ice-return-unsized-can-impl.stderr5
-rw-r--r--tests/ui/rust-2021/ice-unsized-fn-params-2.stderr5
-rw-r--r--tests/ui/rust-2021/ice-unsized-fn-params.stderr10
-rw-r--r--tests/ui/self/arbitrary_self_type_mut_difference.stderr10
-rw-r--r--tests/ui/self/arbitrary_self_types_not_allow_call_with_no_deref.stderr10
-rw-r--r--tests/ui/self/invalid-self-dyn-receiver.rs20
-rw-r--r--tests/ui/self/invalid-self-dyn-receiver.stderr12
-rw-r--r--tests/ui/self/self-infer.stderr10
-rw-r--r--tests/ui/simd/portable-intrinsics-arent-exposed.stderr5
-rw-r--r--tests/ui/span/issue-35987.stderr10
-rw-r--r--tests/ui/span/issue-37767.stderr30
-rw-r--r--tests/ui/span/issue-81800.stderr5
-rw-r--r--tests/ui/span/missing-unit-argument.stderr30
-rw-r--r--tests/ui/stability-attribute/const-stability-attribute-implies-using-stable.stderr5
-rw-r--r--tests/ui/stability-attribute/const-stability-attribute-implies-using-unstable.stderr5
-rw-r--r--tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr5
-rw-r--r--tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr5
-rw-r--r--tests/ui/static/static-reference-to-fn-1.stderr5
-rw-r--r--tests/ui/statics/issue-15261.stderr5
-rw-r--r--tests/ui/statics/static-mut-shared-parens.stderr10
-rw-r--r--tests/ui/statics/static-mut-xc.stderr10
-rw-r--r--tests/ui/statics/static-recursive.stderr5
-rw-r--r--tests/ui/stdlib-unit-tests/atomic-from-mut-not-available.alignment_mismatch.stderr5
-rw-r--r--tests/ui/str/str-as-char.stderr5
-rw-r--r--tests/ui/structs-enums/issue-103869.stderr5
-rw-r--r--tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr5
-rw-r--r--tests/ui/structs/default-field-values/non-exhaustive-ctor.disabled.stderr5
-rw-r--r--tests/ui/structs/default-field-values/non-exhaustive-ctor.enabled.stderr5
-rw-r--r--tests/ui/structs/struct-field-cfg.stderr15
-rw-r--r--tests/ui/structs/struct-fields-hints-no-dupe.stderr5
-rw-r--r--tests/ui/structs/struct-fields-hints.stderr5
-rw-r--r--tests/ui/structs/struct-fields-typo.stderr5
-rw-r--r--tests/ui/structs/struct-pat-derived-error.stderr20
-rw-r--r--tests/ui/structs/struct-path-self-type-mismatch.stderr5
-rw-r--r--tests/ui/structs/struct-tuple-field-names.stderr25
-rw-r--r--tests/ui/structs/suggest-private-fields.stderr15
-rw-r--r--tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr60
-rw-r--r--tests/ui/suggestions/ambiguous-assoc-type-path-suggest-similar-item.stderr60
-rw-r--r--tests/ui/suggestions/args-instead-of-tuple-errors.stderr5
-rw-r--r--tests/ui/suggestions/args-instead-of-tuple.stderr5
-rw-r--r--tests/ui/suggestions/assoc-const-as-field.stderr5
-rw-r--r--tests/ui/suggestions/assoc-ct-for-assoc-method.stderr10
-rw-r--r--tests/ui/suggestions/bad-hex-float-lit.stderr30
-rw-r--r--tests/ui/suggestions/bad-infer-in-trait-impl.stderr5
-rw-r--r--tests/ui/suggestions/bool_typo_err_suggest.stderr10
-rw-r--r--tests/ui/suggestions/bound-suggestions.stderr5
-rw-r--r--tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr5
-rw-r--r--tests/ui/suggestions/crate-or-module-typo.stderr15
-rw-r--r--tests/ui/suggestions/deref-path-method.stderr5
-rw-r--r--tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr5
-rw-r--r--tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021-without-dyn.stderr30
-rw-r--r--tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021.stderr10
-rw-r--r--tests/ui/suggestions/dyn-incompatible-trait-should-use-self.stderr10
-rw-r--r--tests/ui/suggestions/dyn-incompatible-trait-should-use-where-sized.stderr10
-rw-r--r--tests/ui/suggestions/field-access.stderr20
-rw-r--r--tests/ui/suggestions/fn-to-method.normal.stderr5
-rw-r--r--tests/ui/suggestions/for-loop-missing-in.stderr5
-rw-r--r--tests/ui/suggestions/ice-unwrap-probe-many-result-125876.stderr5
-rw-r--r--tests/ui/suggestions/imm-ref-trait-object-literal.stderr5
-rw-r--r--tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr50
-rw-r--r--tests/ui/suggestions/impl-trait-missing-lifetime.stderr20
-rw-r--r--tests/ui/suggestions/impl-trait-with-missing-bounds.stderr30
-rw-r--r--tests/ui/suggestions/incorrect-variant-literal.svg918
-rw-r--r--tests/ui/suggestions/issue-101465.stderr5
-rw-r--r--tests/ui/suggestions/issue-102972.stderr10
-rw-r--r--tests/ui/suggestions/issue-109291.stderr5
-rw-r--r--tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr10
-rw-r--r--tests/ui/suggestions/issue-84592.stderr5
-rw-r--r--tests/ui/suggestions/issue-84700.stderr5
-rw-r--r--tests/ui/suggestions/issue-89064.stderr5
-rw-r--r--tests/ui/suggestions/issue-89640.stderr5
-rw-r--r--tests/ui/suggestions/issue-90974.stderr5
-rw-r--r--tests/ui/suggestions/issue-94171.stderr5
-rw-r--r--tests/ui/suggestions/js-style-comparison-op.stderr10
-rw-r--r--tests/ui/suggestions/lifetimes/issue-105544.stderr20
-rw-r--r--tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr15
-rw-r--r--tests/ui/suggestions/lifetimes/type-param-missing-lifetime.stderr10
-rw-r--r--tests/ui/suggestions/missing-impl-trait-block-but-not-ascii.stderr5
-rw-r--r--tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr5
-rw-r--r--tests/ui/suggestions/multibyte-escapes.stderr10
-rw-r--r--tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr40
-rw-r--r--tests/ui/suggestions/parenthesized-deref-suggestion.stderr5
-rw-r--r--tests/ui/suggestions/partialeq_suggest_swap.stderr5
-rw-r--r--tests/ui/suggestions/range-index-instead-of-colon.stderr5
-rw-r--r--tests/ui/suggestions/raw-byte-string-prefix.stderr5
-rw-r--r--tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr15
-rw-r--r--tests/ui/suggestions/shadowed-lplace-method-2.stderr5
-rw-r--r--tests/ui/suggestions/shadowed-lplace-method.stderr5
-rw-r--r--tests/ui/suggestions/silenced-binding-typo.stderr5
-rw-r--r--tests/ui/suggestions/struct-field-type-including-single-colon.stderr10
-rw-r--r--tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr25
-rw-r--r--tests/ui/suggestions/suggest-change-mut.stderr5
-rw-r--r--tests/ui/suggestions/suggest-closure-return-type-1.stderr5
-rw-r--r--tests/ui/suggestions/suggest-deref-in-match-issue-132784.stderr80
-rw-r--r--tests/ui/suggestions/suggest-field-through-deref.stderr20
-rw-r--r--tests/ui/suggestions/suggest-let-and-typo-issue-132483.stderr5
-rw-r--r--tests/ui/suggestions/suggest-let-for-assignment.stderr10
-rw-r--r--tests/ui/suggestions/suggest-methods.stderr15
-rw-r--r--tests/ui/suggestions/suggest-move-types.stderr40
-rw-r--r--tests/ui/suggestions/suggest-null-ptr.stderr20
-rw-r--r--tests/ui/suggestions/suggest-slice-swap.stderr5
-rw-r--r--tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr15
-rw-r--r--tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr15
-rw-r--r--tests/ui/suggestions/suggest-trait-in-ufcs-in-hrtb.stderr10
-rw-r--r--tests/ui/suggestions/suggest-tryinto-edition-change.stderr10
-rw-r--r--tests/ui/suggestions/suggest-using-chars.stderr15
-rw-r--r--tests/ui/suggestions/suggest-variants.stderr20
-rw-r--r--tests/ui/suggestions/suggest_print_over_printf.stderr5
-rw-r--r--tests/ui/suggestions/type-ascription-instead-of-path-2.stderr5
-rw-r--r--tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr5
-rw-r--r--tests/ui/suggestions/type-mismatch-byte-literal.stderr15
-rw-r--r--tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr5
-rw-r--r--tests/ui/suggestions/unnamable-types.stderr5
-rw-r--r--tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr15
-rw-r--r--tests/ui/test-attrs/inaccessible-test-modules.stderr5
-rw-r--r--tests/ui/test-attrs/issue-109816.stderr3
-rw-r--r--tests/ui/test-attrs/test-attr-non-associated-functions.stderr6
-rw-r--r--tests/ui/test-attrs/test-on-not-fn.stderr60
-rw-r--r--tests/ui/trait-bounds/argument-with-unnecessary-method-call.stderr5
-rw-r--r--tests/ui/traits/alias/ambiguous.stderr10
-rw-r--r--tests/ui/traits/alias/dont-elaborate-non-self.stderr5
-rw-r--r--tests/ui/traits/alias/self-in-const-generics.stderr5
-rw-r--r--tests/ui/traits/alias/self-in-generics.stderr5
-rw-r--r--tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr3
-rw-r--r--tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr40
-rw-r--r--tests/ui/traits/bound/not-on-bare-trait-2021.stderr10
-rw-r--r--tests/ui/traits/bound/not-on-bare-trait.stderr5
-rw-r--r--tests/ui/traits/bound/not-on-struct.stderr5
-rw-r--r--tests/ui/traits/const-traits/eval-bad-signature.stderr5
-rw-r--r--tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr5
-rw-r--r--tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr5
-rw-r--r--tests/ui/traits/issue-28576.stderr5
-rw-r--r--tests/ui/traits/issue-35869.stderr20
-rw-r--r--tests/ui/traits/issue-50480.stderr5
-rw-r--r--tests/ui/traits/issue-77982.stderr5
-rw-r--r--tests/ui/traits/issue-78372.stderr5
-rw-r--r--tests/ui/traits/item-privacy.stderr20
-rw-r--r--tests/ui/traits/method-argument-mismatch-variance-ice-119867.stderr5
-rw-r--r--tests/ui/traits/multidispatch-bad.stderr5
-rw-r--r--tests/ui/traits/next-solver/diagnostics/coerce-in-may-coerce.stderr5
-rw-r--r--tests/ui/traits/non_lifetime_binders/missing-assoc-item.stderr5
-rw-r--r--tests/ui/traits/non_lifetime_binders/type-match-with-late-bound.stderr15
-rw-r--r--tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr5
-rw-r--r--tests/ui/traits/suggest-fully-qualified-closure.stderr5
-rw-r--r--tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr45
-rw-r--r--tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr55
-rw-r--r--tests/ui/traits/trait-upcasting/subtrait-method.stderr25
-rw-r--r--tests/ui/traits/wrong-mul-method-signature.stderr15
-rw-r--r--tests/ui/transmutability/assoc-bound.stderr5
-rw-r--r--tests/ui/tuple/tuple-index-not-tuple.stderr5
-rw-r--r--tests/ui/tuple/tuple-index-out-of-bounds.stderr5
-rw-r--r--tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr51
-rw-r--r--tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr5
-rw-r--r--tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr5
-rw-r--r--tests/ui/type-alias-impl-trait/unnameable_type.stderr5
-rw-r--r--tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.eager.stderr5
-rw-r--r--tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.lazy.stderr5
-rw-r--r--tests/ui/type-inference/or_else-multiple-type-params.stderr4
-rw-r--r--tests/ui/type/issue-100584.stderr10
-rw-r--r--tests/ui/type/issue-103271.stderr10
-rw-r--r--tests/ui/type/pattern_types/assoc_const.default.stderr38
-rw-r--r--tests/ui/type/pattern_types/assoc_const.rs12
-rw-r--r--tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.rs2
-rw-r--r--tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.stderr11
-rw-r--r--tests/ui/type/pattern_types/const_block.rs2
-rw-r--r--tests/ui/type/pattern_types/const_block.stderr72
-rw-r--r--tests/ui/type/pattern_types/const_generics.rs4
-rw-r--r--tests/ui/type/pattern_types/feature-gate-pattern_types.rs1
-rw-r--r--tests/ui/type/pattern_types/feature-gate-pattern_types.stderr8
-rw-r--r--tests/ui/type/pattern_types/feature-gate-pattern_types2.rs2
-rw-r--r--tests/ui/type/pattern_types/feature-gate-pattern_types2.stderr8
-rw-r--r--tests/ui/type/pattern_types/pattern_type_mismatch.stderr10
-rw-r--r--tests/ui/type/pattern_types/transmute.rs4
-rw-r--r--tests/ui/type/type-ascription-instead-of-statement-end.stderr5
-rw-r--r--tests/ui/type/type-ascription-with-fn-call.stderr5
-rw-r--r--tests/ui/type/type-check/issue-41314.stderr5
-rw-r--r--tests/ui/type/type-check/point-at-inference-3.stderr5
-rw-r--r--tests/ui/type/type-check/point-at-inference-4.stderr10
-rw-r--r--tests/ui/type/type-dependent-def-issue-49241.stderr5
-rw-r--r--tests/ui/type/wrong-call-return-type-due-to-generic-arg.stderr20
-rw-r--r--tests/ui/typeck/attempted-access-non-fatal.stderr20
-rw-r--r--tests/ui/typeck/check-args-on-fn-err-2.stderr5
-rw-r--r--tests/ui/typeck/cyclic_type_ice.stderr5
-rw-r--r--tests/ui/typeck/deref-multi.stderr10
-rw-r--r--tests/ui/typeck/ice-self-mismatch-const-generics.stderr10
-rw-r--r--tests/ui/typeck/ice-unexpected-region-123863.stderr5
-rw-r--r--tests/ui/typeck/issue-104582.stderr10
-rw-r--r--tests/ui/typeck/issue-110052.stderr10
-rw-r--r--tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr20
-rw-r--r--tests/ui/typeck/issue-114529-illegal-break-with-value.stderr17
-rw-r--r--tests/ui/typeck/issue-29181.stderr5
-rw-r--r--tests/ui/typeck/issue-53712.stderr5
-rw-r--r--tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr15
-rw-r--r--tests/ui/typeck/method-chain-gats.stderr5
-rw-r--r--tests/ui/typeck/mismatched-map-under-self.stderr5
-rw-r--r--tests/ui/typeck/ptr-null-mutability-suggestions.stderr5
-rw-r--r--tests/ui/typeck/remove-semi-but-confused-char.stderr5
-rw-r--r--tests/ui/typeck/struct-enum-wrong-args.stderr20
-rw-r--r--tests/ui/typeck/suggest-arg-comma-delete-ice.stderr5
-rw-r--r--tests/ui/typeck/typeck_type_placeholder_item.stderr165
-rw-r--r--tests/ui/typeck/typeck_type_placeholder_item_help.stderr20
-rw-r--r--tests/ui/typeof/issue-100183.stderr5
-rw-r--r--tests/ui/typeof/issue-29184.stderr5
-rw-r--r--tests/ui/typeof/issue-42060.stderr10
-rw-r--r--tests/ui/typeof/type_mismatch.stderr10
-rw-r--r--tests/ui/ufcs/bad-builder.stderr5
-rw-r--r--tests/ui/ufcs/ufcs-explicit-self-bad.stderr5
-rw-r--r--tests/ui/ufcs/ufcs-partially-resolved.stderr17
-rw-r--r--tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr10
-rw-r--r--tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr5
-rw-r--r--tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr20
-rw-r--r--tests/ui/underscore-lifetime/in-fn-return-illegal.stderr5
-rw-r--r--tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr15
-rw-r--r--tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr5
-rw-r--r--tests/ui/union/union-suggest-field.stderr10
-rw-r--r--tests/ui/unpretty/expanded-exhaustive.stdout2
-rw-r--r--tests/ui/unresolved/unresolved-candidates.stderr5
-rw-r--r--tests/ui/unresolved/unresolved-import-avoid-suggesting-global-path.stderr10
-rw-r--r--tests/ui/unresolved/unresolved-import-suggest-disambiguated-crate-name.stderr5
-rw-r--r--tests/ui/unsigned-literal-negation.stderr15
-rw-r--r--tests/ui/unsized/box-instead-of-dyn-fn.stderr5
-rw-r--r--tests/ui/unsized/issue-91803.stderr5
-rw-r--r--tests/ui/variants/variant-used-as-type.stderr20
-rw-r--r--tests/ui/wf/ice-hir-wf-check-anon-const-issue-122199.stderr5
-rw-r--r--triagebot.toml2
1325 files changed, 14147 insertions, 9517 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 2ee2c52b32a..20b715e59a6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1997,7 +1997,7 @@ dependencies = [
  "anyhow",
  "clap",
  "fs-err",
- "rustc-hash 2.1.0",
+ "rustc-hash 2.1.1",
  "rustdoc-json-types",
  "serde",
  "serde_json",
@@ -3188,7 +3188,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rinja_parser",
- "rustc-hash 2.1.0",
+ "rustc-hash 2.1.1",
  "serde",
  "syn 2.0.96",
 ]
@@ -3252,9 +3252,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustc-hash"
-version = "2.1.0"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
 
 [[package]]
 name = "rustc-main"
@@ -3317,7 +3317,6 @@ dependencies = [
  "rand 0.8.5",
  "rand_xoshiro",
  "rustc_data_structures",
- "rustc_feature",
  "rustc_index",
  "rustc_macros",
  "rustc_serialize",
@@ -3379,6 +3378,7 @@ dependencies = [
  "rustc_ast_pretty",
  "rustc_data_structures",
  "rustc_errors",
+ "rustc_feature",
  "rustc_fluent_macro",
  "rustc_hir",
  "rustc_index",
@@ -3654,7 +3654,7 @@ dependencies = [
  "memmap2",
  "parking_lot",
  "portable-atomic",
- "rustc-hash 2.1.0",
+ "rustc-hash 2.1.1",
  "rustc-rayon",
  "rustc-stable-hash",
  "rustc_arena",
@@ -3683,6 +3683,7 @@ version = "0.0.0"
 dependencies = [
  "ctrlc",
  "libc",
+ "rustc_abi",
  "rustc_ast",
  "rustc_ast_lowering",
  "rustc_ast_passes",
@@ -4337,6 +4338,7 @@ version = "0.0.0"
 dependencies = [
  "rustc_abi",
  "rustc_ast",
+ "rustc_ast_lowering",
  "rustc_ast_pretty",
  "rustc_attr_parsing",
  "rustc_data_structures",
@@ -4360,7 +4362,7 @@ dependencies = [
 name = "rustc_pattern_analysis"
 version = "0.0.0"
 dependencies = [
- "rustc-hash 2.1.0",
+ "rustc-hash 2.1.1",
  "rustc_abi",
  "rustc_apfloat",
  "rustc_arena",
@@ -4755,7 +4757,7 @@ name = "rustdoc-json-types"
 version = "0.1.0"
 dependencies = [
  "bincode",
- "rustc-hash 2.1.0",
+ "rustc-hash 2.1.1",
  "serde",
  "serde_json",
 ]
@@ -5406,7 +5408,7 @@ dependencies = [
  "ignore",
  "miropt-test-tools",
  "regex",
- "rustc-hash 2.1.0",
+ "rustc-hash 2.1.1",
  "semver",
  "serde",
  "similar",
diff --git a/compiler/rustc_abi/Cargo.toml b/compiler/rustc_abi/Cargo.toml
index 3acd25e5461..1013f1d3958 100644
--- a/compiler/rustc_abi/Cargo.toml
+++ b/compiler/rustc_abi/Cargo.toml
@@ -9,7 +9,6 @@ bitflags = "2.4.1"
 rand = { version = "0.8.4", default-features = false, optional = true }
 rand_xoshiro = { version = "0.6.0", optional = true }
 rustc_data_structures = { path = "../rustc_data_structures", optional = true  }
-rustc_feature = { path = "../rustc_feature", optional = true }
 rustc_index = { path = "../rustc_index", default-features = false }
 rustc_macros = { path = "../rustc_macros", optional = true }
 rustc_serialize = { path = "../rustc_serialize", optional = true  }
@@ -24,7 +23,6 @@ default = ["nightly", "randomize"]
 # without depending on rustc_data_structures, rustc_macros and rustc_serialize
 nightly = [
     "dep:rustc_data_structures",
-    "dep:rustc_feature",
     "dep:rustc_macros",
     "dep:rustc_serialize",
     "dep:rustc_span",
diff --git a/compiler/rustc_abi/src/callconv.rs b/compiler/rustc_abi/src/callconv.rs
index daa365bf6e1..9fb70b80c9e 100644
--- a/compiler/rustc_abi/src/callconv.rs
+++ b/compiler/rustc_abi/src/callconv.rs
@@ -1,6 +1,5 @@
 #[cfg(feature = "nightly")]
-use crate::{BackendRepr, FieldsShape, TyAbiInterface, TyAndLayout};
-use crate::{Primitive, Size, Variants};
+use crate::{BackendRepr, FieldsShape, Primitive, Size, TyAbiInterface, TyAndLayout, Variants};
 
 mod reg;
 
diff --git a/compiler/rustc_abi/src/extern_abi.rs b/compiler/rustc_abi/src/extern_abi.rs
index 130834d560f..f3cf7f583ce 100644
--- a/compiler/rustc_abi/src/extern_abi.rs
+++ b/compiler/rustc_abi/src/extern_abi.rs
@@ -1,7 +1,6 @@
 use std::fmt;
 
 use rustc_macros::{Decodable, Encodable, HashStable_Generic};
-use rustc_span::{Span, Symbol, sym};
 
 #[cfg(test)]
 mod tests;
@@ -95,14 +94,14 @@ impl Abi {
 
 #[derive(Copy, Clone)]
 pub struct AbiData {
-    abi: Abi,
+    pub abi: Abi,
 
     /// Name of this ABI as we like it called.
-    name: &'static str,
+    pub name: &'static str,
 }
 
 #[allow(non_upper_case_globals)]
-const AbiDatas: &[AbiData] = &[
+pub const AbiDatas: &[AbiData] = &[
     AbiData { abi: Abi::Rust, name: "Rust" },
     AbiData { abi: Abi::C { unwind: false }, name: "C" },
     AbiData { abi: Abi::C { unwind: true }, name: "C-unwind" },
@@ -142,129 +141,18 @@ const AbiDatas: &[AbiData] = &[
 ];
 
 #[derive(Copy, Clone, Debug)]
-pub enum AbiUnsupported {
-    Unrecognized,
-    Reason { explain: &'static str },
-}
-
+pub struct AbiUnsupported {}
 /// Returns the ABI with the given name (if any).
 pub fn lookup(name: &str) -> Result<Abi, AbiUnsupported> {
-    AbiDatas.iter().find(|abi_data| name == abi_data.name).map(|&x| x.abi).ok_or_else(|| match name {
-        "riscv-interrupt" => AbiUnsupported::Reason {
-            explain: "please use one of riscv-interrupt-m or riscv-interrupt-s for machine- or supervisor-level interrupts, respectively",
-        },
-        "riscv-interrupt-u" => AbiUnsupported::Reason {
-            explain: "user-mode interrupt handlers have been removed from LLVM pending standardization, see: https://reviews.llvm.org/D149314",
-        },
-        "wasm" => AbiUnsupported::Reason {
-            explain: "non-standard wasm ABI is no longer supported",
-        },
-
-        _ => AbiUnsupported::Unrecognized,
-
-    })
-}
-
-pub fn all_names() -> Vec<&'static str> {
-    AbiDatas.iter().map(|d| d.name).collect()
-}
-
-pub fn enabled_names(features: &rustc_feature::Features, span: Span) -> Vec<&'static str> {
     AbiDatas
         .iter()
-        .map(|d| d.name)
-        .filter(|name| is_enabled(features, span, name).is_ok())
-        .collect()
+        .find(|abi_data| name == abi_data.name)
+        .map(|&x| x.abi)
+        .ok_or_else(|| AbiUnsupported {})
 }
 
-pub enum AbiDisabled {
-    Unstable { feature: Symbol, explain: &'static str },
-    Unrecognized,
-}
-
-pub fn is_enabled(
-    features: &rustc_feature::Features,
-    span: Span,
-    name: &str,
-) -> Result<(), AbiDisabled> {
-    let s = is_stable(name);
-    if let Err(AbiDisabled::Unstable { feature, .. }) = s {
-        if features.enabled(feature) || span.allows_unstable(feature) {
-            return Ok(());
-        }
-    }
-    s
-}
-
-/// Returns whether the ABI is stable to use.
-///
-/// Note that there is a separate check determining whether the ABI is even supported
-/// on the current target; see `fn is_abi_supported` in `rustc_target::spec`.
-pub fn is_stable(name: &str) -> Result<(), AbiDisabled> {
-    match name {
-        // Stable
-        "Rust" | "C" | "C-unwind" | "cdecl" | "cdecl-unwind" | "stdcall" | "stdcall-unwind"
-        | "fastcall" | "fastcall-unwind" | "aapcs" | "aapcs-unwind" | "win64" | "win64-unwind"
-        | "sysv64" | "sysv64-unwind" | "system" | "system-unwind" | "efiapi" | "thiscall"
-        | "thiscall-unwind" => Ok(()),
-        "rust-intrinsic" => Err(AbiDisabled::Unstable {
-            feature: sym::intrinsics,
-            explain: "intrinsics are subject to change",
-        }),
-        "vectorcall" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_vectorcall,
-            explain: "vectorcall is experimental and subject to change",
-        }),
-        "vectorcall-unwind" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_vectorcall,
-            explain: "vectorcall-unwind ABI is experimental and subject to change",
-        }),
-        "rust-call" => Err(AbiDisabled::Unstable {
-            feature: sym::unboxed_closures,
-            explain: "rust-call ABI is subject to change",
-        }),
-        "rust-cold" => Err(AbiDisabled::Unstable {
-            feature: sym::rust_cold_cc,
-            explain: "rust-cold is experimental and subject to change",
-        }),
-        "ptx-kernel" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_ptx,
-            explain: "PTX ABIs are experimental and subject to change",
-        }),
-        "unadjusted" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_unadjusted,
-            explain: "unadjusted ABI is an implementation detail and perma-unstable",
-        }),
-        "msp430-interrupt" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_msp430_interrupt,
-            explain: "msp430-interrupt ABI is experimental and subject to change",
-        }),
-        "x86-interrupt" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_x86_interrupt,
-            explain: "x86-interrupt ABI is experimental and subject to change",
-        }),
-        "gpu-kernel" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_gpu_kernel,
-            explain: "gpu-kernel ABI is experimental and subject to change",
-        }),
-        "avr-interrupt" | "avr-non-blocking-interrupt" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_avr_interrupt,
-            explain: "avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change",
-        }),
-        "riscv-interrupt-m" | "riscv-interrupt-s" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_riscv_interrupt,
-            explain: "riscv-interrupt ABIs are experimental and subject to change",
-        }),
-        "C-cmse-nonsecure-call" => Err(AbiDisabled::Unstable {
-            feature: sym::abi_c_cmse_nonsecure_call,
-            explain: "C-cmse-nonsecure-call ABI is experimental and subject to change",
-        }),
-        "C-cmse-nonsecure-entry" => Err(AbiDisabled::Unstable {
-            feature: sym::cmse_nonsecure_entry,
-            explain: "C-cmse-nonsecure-entry ABI is experimental and subject to change",
-        }),
-        _ => Err(AbiDisabled::Unrecognized),
-    }
+pub fn all_names() -> Vec<&'static str> {
+    AbiDatas.iter().map(|d| d.name).collect()
 }
 
 impl Abi {
diff --git a/compiler/rustc_abi/src/extern_abi/tests.rs b/compiler/rustc_abi/src/extern_abi/tests.rs
index 4823058dd69..72c0f183d50 100644
--- a/compiler/rustc_abi/src/extern_abi/tests.rs
+++ b/compiler/rustc_abi/src/extern_abi/tests.rs
@@ -18,7 +18,7 @@ fn lookup_cdecl() {
 #[test]
 fn lookup_baz() {
     let abi = lookup("baz");
-    assert_matches!(abi, Err(AbiUnsupported::Unrecognized));
+    assert_matches!(abi, Err(AbiUnsupported {}));
 }
 
 #[test]
diff --git a/compiler/rustc_abi/src/lib.rs b/compiler/rustc_abi/src/lib.rs
index fc34b288933..259f1c18ea8 100644
--- a/compiler/rustc_abi/src/lib.rs
+++ b/compiler/rustc_abi/src/lib.rs
@@ -66,9 +66,7 @@ mod extern_abi;
 
 pub use callconv::{Heterogeneous, HomogeneousAggregate, Reg, RegKind};
 #[cfg(feature = "nightly")]
-pub use extern_abi::{
-    AbiDisabled, AbiUnsupported, ExternAbi, all_names, enabled_names, is_enabled, is_stable, lookup,
-};
+pub use extern_abi::{AbiDatas, AbiUnsupported, ExternAbi, all_names, lookup};
 #[cfg(feature = "nightly")]
 pub use layout::{FIRST_VARIANT, FieldIdx, Layout, TyAbiInterface, TyAndLayout, VariantIdx};
 pub use layout::{LayoutCalculator, LayoutCalculatorError};
diff --git a/compiler/rustc_ast/src/ast.rs b/compiler/rustc_ast/src/ast.rs
index deee3a597ae..29c1d34a125 100644
--- a/compiler/rustc_ast/src/ast.rs
+++ b/compiler/rustc_ast/src/ast.rs
@@ -2249,7 +2249,7 @@ pub enum TyKind {
     CVarArgs,
     /// Pattern types like `pattern_type!(u32 is 1..=)`, which is the same as `NonZero<u32>`,
     /// just as part of the type system.
-    Pat(P<Ty>, P<Pat>),
+    Pat(P<Ty>, P<TyPat>),
     /// Sometimes we need a dummy value when no error has occurred.
     Dummy,
     /// Placeholder for a kind that has failed to be defined.
@@ -2277,6 +2277,27 @@ impl TyKind {
     }
 }
 
+/// A pattern type pattern.
+#[derive(Clone, Encodable, Decodable, Debug)]
+pub struct TyPat {
+    pub id: NodeId,
+    pub kind: TyPatKind,
+    pub span: Span,
+    pub tokens: Option<LazyAttrTokenStream>,
+}
+
+/// All the different flavors of pattern that Rust recognizes.
+//
+// Adding a new variant? Please update `test_pat` in `tests/ui/macros/stringify.rs`.
+#[derive(Clone, Encodable, Decodable, Debug)]
+pub enum TyPatKind {
+    /// A range pattern (e.g., `1...2`, `1..2`, `1..`, `..2`, `1..=2`, `..=2`).
+    Range(Option<P<AnonConst>>, Option<P<AnonConst>>, Spanned<RangeEnd>),
+
+    /// Placeholder for a pattern that wasn't syntactically well formed in some way.
+    Err(ErrorGuaranteed),
+}
+
 /// Syntax used to declare a trait object.
 #[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
 #[repr(u8)]
diff --git a/compiler/rustc_ast/src/expand/autodiff_attrs.rs b/compiler/rustc_ast/src/expand/autodiff_attrs.rs
index ecc522ec39d..70222f4acab 100644
--- a/compiler/rustc_ast/src/expand/autodiff_attrs.rs
+++ b/compiler/rustc_ast/src/expand/autodiff_attrs.rs
@@ -30,14 +30,6 @@ pub enum DiffMode {
     Forward,
     /// The target function, to be created using reverse mode AD.
     Reverse,
-    /// The target function, to be created using forward mode AD.
-    /// This target function will also be used as a source for higher order derivatives,
-    /// so compute it before all Forward/Reverse targets and optimize it through llvm.
-    ForwardFirst,
-    /// The target function, to be created using reverse mode AD.
-    /// This target function will also be used as a source for higher order derivatives,
-    /// so compute it before all Forward/Reverse targets and optimize it through llvm.
-    ReverseFirst,
 }
 
 /// Dual and Duplicated (and their Only variants) are getting lowered to the same Enzyme Activity.
@@ -92,10 +84,10 @@ pub struct AutoDiffAttrs {
 
 impl DiffMode {
     pub fn is_rev(&self) -> bool {
-        matches!(self, DiffMode::Reverse | DiffMode::ReverseFirst)
+        matches!(self, DiffMode::Reverse)
     }
     pub fn is_fwd(&self) -> bool {
-        matches!(self, DiffMode::Forward | DiffMode::ForwardFirst)
+        matches!(self, DiffMode::Forward)
     }
 }
 
@@ -106,8 +98,6 @@ impl Display for DiffMode {
             DiffMode::Source => write!(f, "Source"),
             DiffMode::Forward => write!(f, "Forward"),
             DiffMode::Reverse => write!(f, "Reverse"),
-            DiffMode::ForwardFirst => write!(f, "ForwardFirst"),
-            DiffMode::ReverseFirst => write!(f, "ReverseFirst"),
         }
     }
 }
@@ -125,12 +115,12 @@ pub fn valid_ret_activity(mode: DiffMode, activity: DiffActivity) -> bool {
     match mode {
         DiffMode::Error => false,
         DiffMode::Source => false,
-        DiffMode::Forward | DiffMode::ForwardFirst => {
+        DiffMode::Forward => {
             activity == DiffActivity::Dual
                 || activity == DiffActivity::DualOnly
                 || activity == DiffActivity::Const
         }
-        DiffMode::Reverse | DiffMode::ReverseFirst => {
+        DiffMode::Reverse => {
             activity == DiffActivity::Const
                 || activity == DiffActivity::Active
                 || activity == DiffActivity::ActiveOnly
@@ -166,10 +156,10 @@ pub fn valid_input_activity(mode: DiffMode, activity: DiffActivity) -> bool {
     return match mode {
         DiffMode::Error => false,
         DiffMode::Source => false,
-        DiffMode::Forward | DiffMode::ForwardFirst => {
+        DiffMode::Forward => {
             matches!(activity, Dual | DualOnly | Const)
         }
-        DiffMode::Reverse | DiffMode::ReverseFirst => {
+        DiffMode::Reverse => {
             matches!(activity, Active | ActiveOnly | Duplicated | DuplicatedOnly | Const)
         }
     };
@@ -200,8 +190,6 @@ impl FromStr for DiffMode {
             "Source" => Ok(DiffMode::Source),
             "Forward" => Ok(DiffMode::Forward),
             "Reverse" => Ok(DiffMode::Reverse),
-            "ForwardFirst" => Ok(DiffMode::ForwardFirst),
-            "ReverseFirst" => Ok(DiffMode::ReverseFirst),
             _ => Err(()),
         }
     }
diff --git a/compiler/rustc_ast/src/mut_visit.rs b/compiler/rustc_ast/src/mut_visit.rs
index a9961cca583..de9f049704a 100644
--- a/compiler/rustc_ast/src/mut_visit.rs
+++ b/compiler/rustc_ast/src/mut_visit.rs
@@ -210,6 +210,10 @@ pub trait MutVisitor: Sized {
         walk_ty(self, t);
     }
 
+    fn visit_ty_pat(&mut self, t: &mut P<TyPat>) {
+        walk_ty_pat(self, t);
+    }
+
     fn visit_lifetime(&mut self, l: &mut Lifetime) {
         walk_lifetime(self, l);
     }
@@ -570,7 +574,7 @@ pub fn walk_ty<T: MutVisitor>(vis: &mut T, ty: &mut P<Ty>) {
         TyKind::Paren(ty) => vis.visit_ty(ty),
         TyKind::Pat(ty, pat) => {
             vis.visit_ty(ty);
-            vis.visit_pat(pat);
+            vis.visit_ty_pat(pat);
         }
         TyKind::Path(qself, path) => {
             vis.visit_qself(qself);
@@ -594,6 +598,20 @@ pub fn walk_ty<T: MutVisitor>(vis: &mut T, ty: &mut P<Ty>) {
     vis.visit_span(span);
 }
 
+pub fn walk_ty_pat<T: MutVisitor>(vis: &mut T, ty: &mut P<TyPat>) {
+    let TyPat { id, kind, span, tokens } = ty.deref_mut();
+    vis.visit_id(id);
+    match kind {
+        TyPatKind::Range(start, end, _include_end) => {
+            visit_opt(start, |c| vis.visit_anon_const(c));
+            visit_opt(end, |c| vis.visit_anon_const(c));
+        }
+        TyPatKind::Err(_) => {}
+    }
+    visit_lazy_tts(vis, tokens);
+    vis.visit_span(span);
+}
+
 fn walk_foreign_mod<T: MutVisitor>(vis: &mut T, foreign_mod: &mut ForeignMod) {
     let ForeignMod { extern_span: _, safety, abi: _, items } = foreign_mod;
     visit_safety(vis, safety);
diff --git a/compiler/rustc_ast/src/visit.rs b/compiler/rustc_ast/src/visit.rs
index 714b074f930..3242d414595 100644
--- a/compiler/rustc_ast/src/visit.rs
+++ b/compiler/rustc_ast/src/visit.rs
@@ -179,6 +179,9 @@ pub trait Visitor<'ast>: Sized {
     fn visit_ty(&mut self, t: &'ast Ty) -> Self::Result {
         walk_ty(self, t)
     }
+    fn visit_ty_pat(&mut self, t: &'ast TyPat) -> Self::Result {
+        walk_ty_pat(self, t)
+    }
     fn visit_generic_param(&mut self, param: &'ast GenericParam) -> Self::Result {
         walk_generic_param(self, param)
     }
@@ -534,7 +537,7 @@ pub fn walk_ty<'a, V: Visitor<'a>>(visitor: &mut V, typ: &'a Ty) -> V::Result {
         }
         TyKind::Pat(ty, pat) => {
             try_visit!(visitor.visit_ty(ty));
-            try_visit!(visitor.visit_pat(pat));
+            try_visit!(visitor.visit_ty_pat(pat));
         }
         TyKind::Array(ty, length) => {
             try_visit!(visitor.visit_ty(ty));
@@ -555,6 +558,18 @@ pub fn walk_ty<'a, V: Visitor<'a>>(visitor: &mut V, typ: &'a Ty) -> V::Result {
     V::Result::output()
 }
 
+pub fn walk_ty_pat<'a, V: Visitor<'a>>(visitor: &mut V, tp: &'a TyPat) -> V::Result {
+    let TyPat { id: _, kind, span: _, tokens: _ } = tp;
+    match kind {
+        TyPatKind::Range(start, end, _include_end) => {
+            visit_opt!(visitor, visit_anon_const, start);
+            visit_opt!(visitor, visit_anon_const, end);
+        }
+        TyPatKind::Err(_) => {}
+    }
+    V::Result::output()
+}
+
 fn walk_qself<'a, V: Visitor<'a>>(visitor: &mut V, qself: &'a Option<P<QSelf>>) -> V::Result {
     if let Some(qself) = qself {
         let QSelf { ty, path_span: _, position: _ } = &**qself;
diff --git a/compiler/rustc_ast_lowering/Cargo.toml b/compiler/rustc_ast_lowering/Cargo.toml
index 754f3c1a6e9..ce95f4dfa1b 100644
--- a/compiler/rustc_ast_lowering/Cargo.toml
+++ b/compiler/rustc_ast_lowering/Cargo.toml
@@ -13,6 +13,7 @@ rustc_ast = { path = "../rustc_ast" }
 rustc_ast_pretty = { path = "../rustc_ast_pretty" }
 rustc_data_structures = { path = "../rustc_data_structures" }
 rustc_errors = { path = "../rustc_errors" }
+rustc_feature = { path = "../rustc_feature" }
 rustc_fluent_macro = { path = "../rustc_fluent_macro" }
 rustc_hir = { path = "../rustc_hir" }
 rustc_index = { path = "../rustc_index" }
diff --git a/compiler/rustc_ast_lowering/messages.ftl b/compiler/rustc_ast_lowering/messages.ftl
index f96c9fe8e32..1b91c33742d 100644
--- a/compiler/rustc_ast_lowering/messages.ftl
+++ b/compiler/rustc_ast_lowering/messages.ftl
@@ -112,7 +112,8 @@ ast_lowering_invalid_register =
     invalid register `{$reg}`: {$error}
 
 ast_lowering_invalid_register_class =
-    invalid register class `{$reg_class}`: {$error}
+    invalid register class `{$reg_class}`: unknown register class
+    .note = the following register classes are supported on this target: {$supported_register_classes}
 
 ast_lowering_match_arm_with_no_body =
     `match` arm with no body
diff --git a/compiler/rustc_ast_lowering/src/asm.rs b/compiler/rustc_ast_lowering/src/asm.rs
index 2f1f1269ece..96c230ec243 100644
--- a/compiler/rustc_ast_lowering/src/asm.rs
+++ b/compiler/rustc_ast_lowering/src/asm.rs
@@ -152,11 +152,16 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
                     InlineAsmRegOrRegClass::RegClass(reg_class) => {
                         asm::InlineAsmRegOrRegClass::RegClass(if let Some(asm_arch) = asm_arch {
                             asm::InlineAsmRegClass::parse(asm_arch, reg_class).unwrap_or_else(
-                                |error| {
+                                |supported_register_classes| {
+                                    let mut register_classes =
+                                        format!("`{}`", supported_register_classes[0]);
+                                    for m in &supported_register_classes[1..] {
+                                        let _ = write!(register_classes, ", `{m}`");
+                                    }
                                     self.dcx().emit_err(InvalidRegisterClass {
                                         op_span: *op_sp,
                                         reg_class,
-                                        error,
+                                        supported_register_classes: register_classes,
                                     });
                                     asm::InlineAsmRegClass::Err
                                 },
diff --git a/compiler/rustc_ast_lowering/src/delegation.rs b/compiler/rustc_ast_lowering/src/delegation.rs
index f9fe4938ca8..d8b7cb0c322 100644
--- a/compiler/rustc_ast_lowering/src/delegation.rs
+++ b/compiler/rustc_ast_lowering/src/delegation.rs
@@ -41,13 +41,13 @@ use std::iter;
 use ast::visit::Visitor;
 use hir::def::{DefKind, PartialRes, Res};
 use hir::{BodyId, HirId};
+use rustc_abi::ExternAbi;
 use rustc_ast::*;
 use rustc_errors::ErrorGuaranteed;
 use rustc_hir::def_id::DefId;
 use rustc_middle::span_bug;
 use rustc_middle::ty::{Asyncness, ResolverAstLowering};
 use rustc_span::{Ident, Span};
-use rustc_target::spec::abi;
 use {rustc_ast as ast, rustc_hir as hir};
 
 use super::{GenericArgsMode, ImplTraitContext, LoweringContext, ParamMode};
@@ -398,7 +398,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
             safety: hir::Safety::Safe.into(),
             constness: hir::Constness::NotConst,
             asyncness: hir::IsAsync::NotAsync,
-            abi: abi::Abi::Rust,
+            abi: ExternAbi::Rust,
         }
     }
 
diff --git a/compiler/rustc_ast_lowering/src/errors.rs b/compiler/rustc_ast_lowering/src/errors.rs
index f727691bf47..f31e2db051d 100644
--- a/compiler/rustc_ast_lowering/src/errors.rs
+++ b/compiler/rustc_ast_lowering/src/errors.rs
@@ -1,5 +1,5 @@
+use rustc_errors::DiagArgFromDisplay;
 use rustc_errors::codes::*;
-use rustc_errors::{Diag, DiagArgFromDisplay, EmissionGuarantee, SubdiagMessageOp, Subdiagnostic};
 use rustc_macros::{Diagnostic, Subdiagnostic};
 use rustc_span::{Ident, Span, Symbol};
 
@@ -32,8 +32,6 @@ pub(crate) struct InvalidAbi {
     pub abi: Symbol,
     pub command: String,
     #[subdiagnostic]
-    pub explain: Option<InvalidAbiReason>,
-    #[subdiagnostic]
     pub suggestion: Option<InvalidAbiSuggestion>,
 }
 
@@ -45,19 +43,6 @@ pub(crate) struct TupleStructWithDefault {
     pub span: Span,
 }
 
-pub(crate) struct InvalidAbiReason(pub &'static str);
-
-impl Subdiagnostic for InvalidAbiReason {
-    fn add_to_diag_with<G: EmissionGuarantee, F: SubdiagMessageOp<G>>(
-        self,
-        diag: &mut Diag<'_, G>,
-        _: &F,
-    ) {
-        #[allow(rustc::untranslatable_diagnostic)]
-        diag.note(self.0);
-    }
-}
-
 #[derive(Subdiagnostic)]
 #[suggestion(
     ast_lowering_invalid_abi_suggestion,
@@ -212,12 +197,13 @@ pub(crate) struct InvalidRegister<'a> {
 }
 
 #[derive(Diagnostic)]
+#[note]
 #[diag(ast_lowering_invalid_register_class)]
-pub(crate) struct InvalidRegisterClass<'a> {
+pub(crate) struct InvalidRegisterClass {
     #[primary_span]
     pub op_span: Span,
     pub reg_class: Symbol,
-    pub error: &'a str,
+    pub supported_register_classes: String,
 }
 
 #[derive(Diagnostic)]
diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs
index 923fd65dcca..af53c7ec215 100644
--- a/compiler/rustc_ast_lowering/src/expr.rs
+++ b/compiler/rustc_ast_lowering/src/expr.rs
@@ -379,16 +379,16 @@ impl<'hir> LoweringContext<'_, 'hir> {
         })
     }
 
-    /// Create an `ExprKind::Ret` that is preceded by a call to check contract ensures clause.
+    /// Create an `ExprKind::Ret` that is optionally wrapped by a call to check
+    /// a contract ensures clause, if it exists.
     fn checked_return(&mut self, opt_expr: Option<&'hir hir::Expr<'hir>>) -> hir::ExprKind<'hir> {
-        let checked_ret = if let Some(Some((span, fresh_ident))) =
-            self.contract.as_ref().map(|c| c.ensures.as_ref().map(|e| (e.expr.span, e.fresh_ident)))
-        {
-            let expr = opt_expr.unwrap_or_else(|| self.expr_unit(span));
-            Some(self.inject_ensures_check(expr, span, fresh_ident.0, fresh_ident.2))
-        } else {
-            opt_expr
-        };
+        let checked_ret =
+            if let Some((check_span, check_ident, check_hir_id)) = self.contract_ensures {
+                let expr = opt_expr.unwrap_or_else(|| self.expr_unit(check_span));
+                Some(self.inject_ensures_check(expr, check_span, check_ident, check_hir_id))
+            } else {
+                opt_expr
+            };
         hir::ExprKind::Ret(checked_ret)
     }
 
@@ -1090,7 +1090,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
             } else {
                 None
             };
-            let body_id = this.lower_fn_body(decl, |this| {
+            // FIXME(contracts): Support contracts on closures?
+            let body_id = this.lower_fn_body(decl, None, |this| {
                 this.coroutine_kind = coroutine_kind;
                 let e = this.lower_expr_mut(body);
                 coroutine_kind = this.coroutine_kind;
diff --git a/compiler/rustc_ast_lowering/src/item.rs b/compiler/rustc_ast_lowering/src/item.rs
index 7379a3d2cde..85642c8ccb5 100644
--- a/compiler/rustc_ast_lowering/src/item.rs
+++ b/compiler/rustc_ast_lowering/src/item.rs
@@ -17,9 +17,9 @@ use thin_vec::ThinVec;
 use tracing::instrument;
 
 use super::errors::{
-    InvalidAbi, InvalidAbiReason, InvalidAbiSuggestion, MisplacedRelaxTraitBound,
-    TupleStructWithDefault,
+    InvalidAbi, InvalidAbiSuggestion, MisplacedRelaxTraitBound, TupleStructWithDefault,
 };
+use super::stability::{enabled_names, gate_unstable_abi};
 use super::{
     AstOwner, FnDeclKind, ImplTraitContext, ImplTraitPosition, LoweringContext, ParamMode,
     ResolverAstLoweringExt,
@@ -211,36 +211,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
                 ..
             }) => {
                 self.with_new_scopes(*fn_sig_span, |this| {
-                    assert!(this.contract.is_none());
-                    if let Some(contract) = contract {
-                        let requires = contract.requires.clone();
-                        let ensures = contract.ensures.clone();
-                        let ensures = ensures.map(|ens| {
-                            // FIXME: this needs to be a fresh (or illegal) identifier to prevent
-                            // accidental capture of a parameter or global variable.
-                            let checker_ident: Ident =
-                                Ident::from_str_and_span("__ensures_checker", ens.span);
-                            let (checker_pat, checker_hir_id) = this.pat_ident_binding_mode_mut(
-                                ens.span,
-                                checker_ident,
-                                hir::BindingMode::NONE,
-                            );
-
-                            crate::FnContractLoweringEnsures {
-                                expr: ens,
-                                fresh_ident: (checker_ident, checker_pat, checker_hir_id),
-                            }
-                        });
-
-                        // Note: `with_new_scopes` will reinstall the outer
-                        // item's contract (if any) after its callback finishes.
-                        this.contract.replace(crate::FnContractLoweringInfo {
-                            span,
-                            requires,
-                            ensures,
-                        });
-                    }
-
                     // Note: we don't need to change the return type from `T` to
                     // `impl Future<Output = T>` here because lower_body
                     // only cares about the input argument patterns in the function
@@ -254,6 +224,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
                         coroutine_kind,
                         body.as_deref(),
                         attrs,
+                        contract.as_deref(),
                     );
 
                     let itctx = ImplTraitContext::Universal;
@@ -803,6 +774,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
                 (generics, kind, expr.is_some())
             }
             AssocItemKind::Fn(box Fn { sig, generics, body: None, .. }) => {
+                // FIXME(contracts): Deny contract here since it won't apply to
+                // any impl method or callees.
                 let names = self.lower_fn_params_to_names(&sig.decl);
                 let (generics, sig) = self.lower_method_sig(
                     generics,
@@ -814,7 +787,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
                 );
                 (generics, hir::TraitItemKind::Fn(sig, hir::TraitFn::Required(names)), false)
             }
-            AssocItemKind::Fn(box Fn { sig, generics, body: Some(body), .. }) => {
+            AssocItemKind::Fn(box Fn { sig, generics, body: Some(body), contract, .. }) => {
                 let body_id = self.lower_maybe_coroutine_body(
                     sig.span,
                     i.span,
@@ -823,6 +796,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
                     sig.header.coroutine_kind,
                     Some(body),
                     attrs,
+                    contract.as_deref(),
                 );
                 let (generics, sig) = self.lower_method_sig(
                     generics,
@@ -931,7 +905,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
                     hir::ImplItemKind::Const(ty, body)
                 },
             ),
-            AssocItemKind::Fn(box Fn { sig, generics, body, .. }) => {
+            AssocItemKind::Fn(box Fn { sig, generics, body, contract, .. }) => {
                 let body_id = self.lower_maybe_coroutine_body(
                     sig.span,
                     i.span,
@@ -940,6 +914,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
                     sig.header.coroutine_kind,
                     body.as_deref(),
                     attrs,
+                    contract.as_deref(),
                 );
                 let (generics, sig) = self.lower_method_sig(
                     generics,
@@ -1088,72 +1063,89 @@ impl<'hir> LoweringContext<'_, 'hir> {
     pub(super) fn lower_fn_body(
         &mut self,
         decl: &FnDecl,
+        contract: Option<&FnContract>,
         body: impl FnOnce(&mut Self) -> hir::Expr<'hir>,
     ) -> hir::BodyId {
         self.lower_body(|this| {
             let params =
                 this.arena.alloc_from_iter(decl.inputs.iter().map(|x| this.lower_param(x)));
-            let result = body(this);
-
-            let opt_contract = this.contract.take();
 
+            // Optionally lower the fn contract, which turns:
+            //
             // { body }
-            // ==>
-            // { contract_requires(PRECOND); { body } }
-            let Some(contract) = opt_contract else { return (params, result) };
-            let result_ref = this.arena.alloc(result);
-            let lit_unit = |this: &mut LoweringContext<'_, 'hir>| {
-                this.expr(contract.span, hir::ExprKind::Tup(&[]))
-            };
-
-            let precond: hir::Stmt<'hir> = if let Some(req) = contract.requires {
-                let lowered_req = this.lower_expr_mut(&req);
-                let precond = this.expr_call_lang_item_fn_mut(
-                    req.span,
-                    hir::LangItem::ContractCheckRequires,
-                    &*arena_vec![this; lowered_req],
-                );
-                this.stmt_expr(req.span, precond)
-            } else {
-                let u = lit_unit(this);
-                this.stmt_expr(contract.span, u)
-            };
-
-            let (postcond_checker, result) = if let Some(ens) = contract.ensures {
-                let crate::FnContractLoweringEnsures { expr: ens, fresh_ident } = ens;
-                let lowered_ens: hir::Expr<'hir> = this.lower_expr_mut(&ens);
-                let postcond_checker = this.expr_call_lang_item_fn(
-                    ens.span,
-                    hir::LangItem::ContractBuildCheckEnsures,
-                    &*arena_vec![this; lowered_ens],
-                );
-                let checker_binding_pat = fresh_ident.1;
-                (
-                    this.stmt_let_pat(
+            //
+            // into:
+            //
+            // { contract_requires(PRECOND); let __postcond = |ret_val| POSTCOND; postcond({ body }) }
+            if let Some(contract) = contract {
+                let precond = if let Some(req) = &contract.requires {
+                    // Lower the precondition check intrinsic.
+                    let lowered_req = this.lower_expr_mut(&req);
+                    let precond = this.expr_call_lang_item_fn_mut(
+                        req.span,
+                        hir::LangItem::ContractCheckRequires,
+                        &*arena_vec![this; lowered_req],
+                    );
+                    Some(this.stmt_expr(req.span, precond))
+                } else {
+                    None
+                };
+                let (postcond, body) = if let Some(ens) = &contract.ensures {
+                    let ens_span = this.lower_span(ens.span);
+                    // Set up the postcondition `let` statement.
+                    let check_ident: Ident =
+                        Ident::from_str_and_span("__ensures_checker", ens_span);
+                    let (checker_pat, check_hir_id) = this.pat_ident_binding_mode_mut(
+                        ens_span,
+                        check_ident,
+                        hir::BindingMode::NONE,
+                    );
+                    let lowered_ens = this.lower_expr_mut(&ens);
+                    let postcond_checker = this.expr_call_lang_item_fn(
+                        ens_span,
+                        hir::LangItem::ContractBuildCheckEnsures,
+                        &*arena_vec![this; lowered_ens],
+                    );
+                    let postcond = this.stmt_let_pat(
                         None,
-                        ens.span,
+                        ens_span,
                         Some(postcond_checker),
-                        this.arena.alloc(checker_binding_pat),
+                        this.arena.alloc(checker_pat),
                         hir::LocalSource::Contract,
-                    ),
-                    this.inject_ensures_check(result_ref, ens.span, fresh_ident.0, fresh_ident.2),
-                )
-            } else {
-                let u = lit_unit(this);
-                (this.stmt_expr(contract.span, u), &*result_ref)
-            };
+                    );
 
-            let block = this.block_all(
-                contract.span,
-                arena_vec![this; precond, postcond_checker],
-                Some(result),
-            );
-            (params, this.expr_block(block))
+                    // Install contract_ensures so we will intercept `return` statements,
+                    // then lower the body.
+                    this.contract_ensures = Some((ens_span, check_ident, check_hir_id));
+                    let body = this.arena.alloc(body(this));
+
+                    // Finally, inject an ensures check on the implicit return of the body.
+                    let body = this.inject_ensures_check(body, ens_span, check_ident, check_hir_id);
+                    (Some(postcond), body)
+                } else {
+                    let body = &*this.arena.alloc(body(this));
+                    (None, body)
+                };
+                // Flatten the body into precond, then postcond, then wrapped body.
+                let wrapped_body = this.block_all(
+                    body.span,
+                    this.arena.alloc_from_iter([precond, postcond].into_iter().flatten()),
+                    Some(body),
+                );
+                (params, this.expr_block(wrapped_body))
+            } else {
+                (params, body(this))
+            }
         })
     }
 
-    fn lower_fn_body_block(&mut self, decl: &FnDecl, body: &Block) -> hir::BodyId {
-        self.lower_fn_body(decl, |this| this.lower_block_expr(body))
+    fn lower_fn_body_block(
+        &mut self,
+        decl: &FnDecl,
+        body: &Block,
+        contract: Option<&FnContract>,
+    ) -> hir::BodyId {
+        self.lower_fn_body(decl, contract, |this| this.lower_block_expr(body))
     }
 
     pub(super) fn lower_const_body(&mut self, span: Span, expr: Option<&Expr>) -> hir::BodyId {
@@ -1179,12 +1171,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
         coroutine_kind: Option<CoroutineKind>,
         body: Option<&Block>,
         attrs: &'hir [hir::Attribute],
+        contract: Option<&FnContract>,
     ) -> hir::BodyId {
         let Some(body) = body else {
             // Functions without a body are an error, except if this is an intrinsic. For those we
             // create a fake body so that the entire rest of the compiler doesn't have to deal with
             // this as a special case.
-            return self.lower_fn_body(decl, |this| {
+            return self.lower_fn_body(decl, contract, |this| {
                 if attrs.iter().any(|a| a.name_or_empty() == sym::rustc_intrinsic) {
                     let span = this.lower_span(span);
                     let empty_block = hir::Block {
@@ -1209,8 +1202,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
         };
         let Some(coroutine_kind) = coroutine_kind else {
             // Typical case: not a coroutine.
-            return self.lower_fn_body_block(decl, body);
+            return self.lower_fn_body_block(decl, body, contract);
         };
+        // FIXME(contracts): Support contracts on async fn.
         self.lower_body(|this| {
             let (parameters, expr) = this.lower_coroutine_body_with_moved_arguments(
                 decl,
@@ -1479,11 +1473,16 @@ impl<'hir> LoweringContext<'_, 'hir> {
         }
     }
 
-    pub(super) fn lower_abi(&mut self, abi: StrLit) -> ExternAbi {
-        rustc_abi::lookup(abi.symbol_unescaped.as_str()).unwrap_or_else(|err| {
-            self.error_on_invalid_abi(abi, err);
+    pub(super) fn lower_abi(&mut self, abi_str: StrLit) -> ExternAbi {
+        let ast::StrLit { symbol_unescaped, span, .. } = abi_str;
+        let extern_abi = rustc_abi::lookup(symbol_unescaped.as_str()).unwrap_or_else(|_| {
+            self.error_on_invalid_abi(abi_str);
             ExternAbi::Rust
-        })
+        });
+        let sess = self.tcx.sess;
+        let features = self.tcx.features();
+        gate_unstable_abi(sess, features, span, extern_abi);
+        extern_abi
     }
 
     pub(super) fn lower_extern(&mut self, ext: Extern) -> ExternAbi {
@@ -1494,8 +1493,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
         }
     }
 
-    fn error_on_invalid_abi(&self, abi: StrLit, err: rustc_abi::AbiUnsupported) {
-        let abi_names = rustc_abi::enabled_names(self.tcx.features(), abi.span)
+    fn error_on_invalid_abi(&self, abi: StrLit) {
+        let abi_names = enabled_names(self.tcx.features(), abi.span)
             .iter()
             .map(|s| Symbol::intern(s))
             .collect::<Vec<_>>();
@@ -1503,10 +1502,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
         self.dcx().emit_err(InvalidAbi {
             abi: abi.symbol_unescaped,
             span: abi.span,
-            explain: match err {
-                rustc_abi::AbiUnsupported::Reason { explain } => Some(InvalidAbiReason(explain)),
-                _ => None,
-            },
             suggestion: suggested_name.map(|suggested_name| InvalidAbiSuggestion {
                 span: abi.span,
                 suggestion: format!("\"{suggested_name}\""),
diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs
index 127b7e3684e..facc9414b20 100644
--- a/compiler/rustc_ast_lowering/src/lib.rs
+++ b/compiler/rustc_ast_lowering/src/lib.rs
@@ -84,22 +84,10 @@ mod index;
 mod item;
 mod pat;
 mod path;
+pub mod stability;
 
 rustc_fluent_macro::fluent_messages! { "../messages.ftl" }
 
-#[derive(Debug, Clone)]
-struct FnContractLoweringInfo<'hir> {
-    pub span: Span,
-    pub requires: Option<ast::ptr::P<ast::Expr>>,
-    pub ensures: Option<FnContractLoweringEnsures<'hir>>,
-}
-
-#[derive(Debug, Clone)]
-struct FnContractLoweringEnsures<'hir> {
-    expr: ast::ptr::P<ast::Expr>,
-    fresh_ident: (Ident, hir::Pat<'hir>, HirId),
-}
-
 struct LoweringContext<'a, 'hir> {
     tcx: TyCtxt<'hir>,
     resolver: &'a mut ResolverAstLowering,
@@ -114,7 +102,7 @@ struct LoweringContext<'a, 'hir> {
     /// Collect items that were created by lowering the current owner.
     children: Vec<(LocalDefId, hir::MaybeOwner<'hir>)>,
 
-    contract: Option<FnContractLoweringInfo<'hir>>,
+    contract_ensures: Option<(Span, Ident, HirId)>,
 
     coroutine_kind: Option<hir::CoroutineKind>,
 
@@ -164,7 +152,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
             bodies: Vec::new(),
             attrs: SortedMap::default(),
             children: Vec::default(),
-            contract: None,
+            contract_ensures: None,
             current_hir_id_owner: hir::CRATE_OWNER_ID,
             item_local_id_counter: hir::ItemLocalId::ZERO,
             ident_and_label_to_local_id: Default::default(),
@@ -851,7 +839,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
         let was_in_loop_condition = self.is_in_loop_condition;
         self.is_in_loop_condition = false;
 
-        let old_contract = self.contract.take();
+        let old_contract = self.contract_ensures.take();
 
         let catch_scope = self.catch_scope.take();
         let loop_scope = self.loop_scope.take();
@@ -859,7 +847,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
         self.catch_scope = catch_scope;
         self.loop_scope = loop_scope;
 
-        self.contract = old_contract;
+        self.contract_ensures = old_contract;
 
         self.is_in_loop_condition = was_in_loop_condition;
 
diff --git a/compiler/rustc_ast_lowering/src/pat.rs b/compiler/rustc_ast_lowering/src/pat.rs
index bb9b2a13185..e1f3afbcf59 100644
--- a/compiler/rustc_ast_lowering/src/pat.rs
+++ b/compiler/rustc_ast_lowering/src/pat.rs
@@ -4,10 +4,10 @@ use rustc_ast::ptr::P;
 use rustc_ast::*;
 use rustc_data_structures::stack::ensure_sufficient_stack;
 use rustc_hir as hir;
-use rustc_hir::def::{DefKind, Res};
+use rustc_hir::def::Res;
 use rustc_middle::span_bug;
 use rustc_span::source_map::{Spanned, respan};
-use rustc_span::{Ident, Span, kw};
+use rustc_span::{Ident, Span};
 
 use super::errors::{
     ArbitraryExpressionInPattern, ExtraDoubleDot, MisplacedDoubleDot, SubTupleBinding,
@@ -430,78 +430,20 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
         self.arena.alloc(hir::PatExpr { hir_id: self.lower_node_id(expr.id), span, kind })
     }
 
-    pub(crate) fn lower_ty_pat(&mut self, pattern: &Pat) -> &'hir hir::TyPat<'hir> {
+    pub(crate) fn lower_ty_pat(&mut self, pattern: &TyPat) -> &'hir hir::TyPat<'hir> {
         self.arena.alloc(self.lower_ty_pat_mut(pattern))
     }
 
-    fn lower_ty_pat_mut(&mut self, mut pattern: &Pat) -> hir::TyPat<'hir> {
+    fn lower_ty_pat_mut(&mut self, pattern: &TyPat) -> hir::TyPat<'hir> {
         // loop here to avoid recursion
         let pat_hir_id = self.lower_node_id(pattern.id);
-        let node = loop {
-            match &pattern.kind {
-                PatKind::Range(e1, e2, Spanned { node: end, .. }) => {
-                    // FIXME(pattern_types): remove this closure and call `lower_const_arg` instead.
-                    // That requires first modifying the AST to have const args here.
-                    let mut lower_expr = |e: &Expr| -> &_ {
-                        if let ExprKind::Path(None, path) = &e.kind
-                            && let Some(res) = self
-                                .resolver
-                                .get_partial_res(e.id)
-                                .and_then(|partial_res| partial_res.full_res())
-                        {
-                            self.lower_const_path_to_const_arg(path, res, e.id, e.span)
-                        } else {
-                            let node_id = self.next_node_id();
-                            let def_id = self.create_def(
-                                self.current_hir_id_owner.def_id,
-                                node_id,
-                                kw::Empty,
-                                DefKind::AnonConst,
-                                e.span,
-                            );
-                            let hir_id = self.lower_node_id(node_id);
-                            let ac = self.arena.alloc(hir::AnonConst {
-                                def_id,
-                                hir_id,
-                                body: self.lower_const_body(pattern.span, Some(e)),
-                                span: self.lower_span(pattern.span),
-                            });
-                            self.arena.alloc(hir::ConstArg {
-                                hir_id: self.next_id(),
-                                kind: hir::ConstArgKind::Anon(ac),
-                            })
-                        }
-                    };
-                    break hir::TyPatKind::Range(
-                        e1.as_deref().map(|e| lower_expr(e)),
-                        e2.as_deref().map(|e| lower_expr(e)),
-                        self.lower_range_end(end, e2.is_some()),
-                    );
-                }
-                // return inner to be processed in next loop
-                PatKind::Paren(inner) => pattern = inner,
-                PatKind::MacCall(_) => panic!("{:?} shouldn't exist here", pattern.span),
-                PatKind::Err(guar) => break hir::TyPatKind::Err(*guar),
-                PatKind::Deref(..)
-                | PatKind::Box(..)
-                | PatKind::Or(..)
-                | PatKind::Struct(..)
-                | PatKind::TupleStruct(..)
-                | PatKind::Tuple(..)
-                | PatKind::Ref(..)
-                | PatKind::Expr(..)
-                | PatKind::Guard(..)
-                | PatKind::Slice(_)
-                | PatKind::Ident(..)
-                | PatKind::Path(..)
-                | PatKind::Wild
-                | PatKind::Never
-                | PatKind::Rest => {
-                    break hir::TyPatKind::Err(
-                        self.dcx().span_err(pattern.span, "pattern not supported in pattern types"),
-                    );
-                }
-            }
+        let node = match &pattern.kind {
+            TyPatKind::Range(e1, e2, Spanned { node: end, .. }) => hir::TyPatKind::Range(
+                e1.as_deref().map(|e| self.lower_anon_const_to_const_arg(e)),
+                e2.as_deref().map(|e| self.lower_anon_const_to_const_arg(e)),
+                self.lower_range_end(end, e2.is_some()),
+            ),
+            TyPatKind::Err(guar) => hir::TyPatKind::Err(*guar),
         };
 
         hir::TyPat { hir_id: pat_hir_id, kind: node, span: self.lower_span(pattern.span) }
diff --git a/compiler/rustc_ast_lowering/src/stability.rs b/compiler/rustc_ast_lowering/src/stability.rs
new file mode 100644
index 00000000000..e7c166850a4
--- /dev/null
+++ b/compiler/rustc_ast_lowering/src/stability.rs
@@ -0,0 +1,147 @@
+use std::fmt;
+
+use rustc_abi::ExternAbi;
+use rustc_feature::Features;
+use rustc_session::Session;
+use rustc_session::parse::feature_err;
+use rustc_span::symbol::sym;
+use rustc_span::{Span, Symbol};
+
+pub(crate) fn enabled_names(features: &rustc_feature::Features, span: Span) -> Vec<&'static str> {
+    rustc_abi::AbiDatas
+        .iter()
+        .filter(|data| extern_abi_enabled(features, span, data.abi).is_ok())
+        .map(|d| d.name)
+        .collect()
+}
+
+pub(crate) fn extern_abi_enabled(
+    features: &rustc_feature::Features,
+    span: Span,
+    abi: ExternAbi,
+) -> Result<(), UnstableAbi> {
+    extern_abi_stability(abi).or_else(|unstable @ UnstableAbi { feature, .. }| {
+        if features.enabled(feature) || span.allows_unstable(feature) {
+            Ok(())
+        } else {
+            Err(unstable)
+        }
+    })
+}
+
+#[allow(rustc::untranslatable_diagnostic)]
+pub(crate) fn gate_unstable_abi(sess: &Session, features: &Features, span: Span, abi: ExternAbi) {
+    match extern_abi_enabled(features, span, abi) {
+        Ok(_) => (),
+        Err(unstable_abi) => {
+            let explain = unstable_abi.to_string();
+            feature_err(sess, unstable_abi.feature, span, explain).emit();
+        }
+    }
+}
+
+pub struct UnstableAbi {
+    abi: ExternAbi,
+    feature: Symbol,
+    explain: GateReason,
+}
+
+enum GateReason {
+    Experimental,
+    ImplDetail,
+}
+
+impl fmt::Display for UnstableAbi {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        let Self { abi, .. } = self;
+        let name = abi.to_string();
+        let name = name.trim_matches('"');
+        match self.explain {
+            GateReason::Experimental => {
+                write!(f, r#"the extern "{name}" ABI is experimental and subject to change"#)
+            }
+            GateReason::ImplDetail => {
+                write!(
+                    f,
+                    r#"the extern "{name}" ABI is an implementation detail and perma-unstable"#
+                )
+            }
+        }
+    }
+}
+
+pub fn extern_abi_stability(abi: ExternAbi) -> Result<(), UnstableAbi> {
+    match abi {
+        // stable ABIs
+        ExternAbi::Rust
+        | ExternAbi::C { .. }
+        | ExternAbi::Cdecl { .. }
+        | ExternAbi::Stdcall { .. }
+        | ExternAbi::Fastcall { .. }
+        | ExternAbi::Thiscall { .. }
+        | ExternAbi::Aapcs { .. }
+        | ExternAbi::Win64 { .. }
+        | ExternAbi::SysV64 { .. }
+        | ExternAbi::System { .. }
+        | ExternAbi::EfiApi => Ok(()),
+        // implementation details
+        ExternAbi::RustIntrinsic => {
+            Err(UnstableAbi { abi, feature: sym::intrinsics, explain: GateReason::ImplDetail })
+        }
+        ExternAbi::Unadjusted => {
+            Err(UnstableAbi { abi, feature: sym::abi_unadjusted, explain: GateReason::ImplDetail })
+        }
+        // experimental
+        ExternAbi::Vectorcall { .. } => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_vectorcall,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::RustCall => Err(UnstableAbi {
+            abi,
+            feature: sym::unboxed_closures,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::RustCold => {
+            Err(UnstableAbi { abi, feature: sym::rust_cold_cc, explain: GateReason::Experimental })
+        }
+        ExternAbi::GpuKernel => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_gpu_kernel,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::PtxKernel => {
+            Err(UnstableAbi { abi, feature: sym::abi_ptx, explain: GateReason::Experimental })
+        }
+        ExternAbi::Msp430Interrupt => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_msp430_interrupt,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::X86Interrupt => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_x86_interrupt,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::AvrInterrupt | ExternAbi::AvrNonBlockingInterrupt => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_avr_interrupt,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::RiscvInterruptM | ExternAbi::RiscvInterruptS => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_riscv_interrupt,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::CCmseNonSecureCall => Err(UnstableAbi {
+            abi,
+            feature: sym::abi_c_cmse_nonsecure_call,
+            explain: GateReason::Experimental,
+        }),
+        ExternAbi::CCmseNonSecureEntry => Err(UnstableAbi {
+            abi,
+            feature: sym::cmse_nonsecure_entry,
+            explain: GateReason::Experimental,
+        }),
+    }
+}
diff --git a/compiler/rustc_ast_passes/src/ast_validation.rs b/compiler/rustc_ast_passes/src/ast_validation.rs
index 0049c5b4823..f9f4035cb22 100644
--- a/compiler/rustc_ast_passes/src/ast_validation.rs
+++ b/compiler/rustc_ast_passes/src/ast_validation.rs
@@ -20,6 +20,7 @@ use std::mem;
 use std::ops::{Deref, DerefMut};
 
 use itertools::{Either, Itertools};
+use rustc_abi::ExternAbi;
 use rustc_ast::ptr::P;
 use rustc_ast::visit::{AssocCtxt, BoundKind, FnCtxt, FnKind, Visitor, walk_list};
 use rustc_ast::*;
@@ -35,7 +36,6 @@ use rustc_session::lint::builtin::{
 };
 use rustc_session::lint::{BuiltinLintDiag, LintBuffer};
 use rustc_span::{Ident, Span, kw, sym};
-use rustc_target::spec::abi;
 use thin_vec::thin_vec;
 
 use crate::errors::{self, TildeConstReason};
@@ -723,7 +723,7 @@ impl<'a> AstValidator<'a> {
                 MISSING_ABI,
                 id,
                 span,
-                BuiltinLintDiag::MissingAbi(span, abi::Abi::FALLBACK),
+                BuiltinLintDiag::MissingAbi(span, ExternAbi::FALLBACK),
             )
         }
     }
diff --git a/compiler/rustc_ast_passes/src/feature_gate.rs b/compiler/rustc_ast_passes/src/feature_gate.rs
index 13294efdaf6..e5d8013058f 100644
--- a/compiler/rustc_ast_passes/src/feature_gate.rs
+++ b/compiler/rustc_ast_passes/src/feature_gate.rs
@@ -1,9 +1,9 @@
 use rustc_ast as ast;
 use rustc_ast::visit::{self, AssocCtxt, FnCtxt, FnKind, Visitor};
 use rustc_ast::{NodeId, PatKind, attr, token};
-use rustc_feature::{AttributeGate, BUILTIN_ATTRIBUTE_MAP, BuiltinAttribute, Features, GateIssue};
+use rustc_feature::{AttributeGate, BUILTIN_ATTRIBUTE_MAP, BuiltinAttribute, Features};
 use rustc_session::Session;
-use rustc_session::parse::{feature_err, feature_err_issue, feature_warn};
+use rustc_session::parse::{feature_err, feature_warn};
 use rustc_span::source_map::Spanned;
 use rustc_span::{Span, Symbol, sym};
 use thin_vec::ThinVec;
@@ -72,35 +72,6 @@ struct PostExpansionVisitor<'a> {
 }
 
 impl<'a> PostExpansionVisitor<'a> {
-    #[allow(rustc::untranslatable_diagnostic)] // FIXME: make this translatable
-    fn check_abi(&self, abi: ast::StrLit) {
-        let ast::StrLit { symbol_unescaped, span, .. } = abi;
-
-        match rustc_abi::is_enabled(self.features, span, symbol_unescaped.as_str()) {
-            Ok(()) => (),
-            Err(rustc_abi::AbiDisabled::Unstable { feature, explain }) => {
-                feature_err_issue(&self.sess, feature, span, GateIssue::Language, explain).emit();
-            }
-            Err(rustc_abi::AbiDisabled::Unrecognized) => {
-                if self.sess.opts.pretty.is_none_or(|ppm| ppm.needs_hir()) {
-                    self.sess.dcx().span_delayed_bug(
-                        span,
-                        format!(
-                            "unrecognized ABI not caught in lowering: {}",
-                            symbol_unescaped.as_str()
-                        ),
-                    );
-                }
-            }
-        }
-    }
-
-    fn check_extern(&self, ext: ast::Extern) {
-        if let ast::Extern::Explicit(abi, _) = ext {
-            self.check_abi(abi);
-        }
-    }
-
     /// Feature gate `impl Trait` inside `type Alias = $type_expr;`.
     fn check_impl_trait(&self, ty: &ast::Ty, in_associated_ty: bool) {
         struct ImplTraitVisitor<'a> {
@@ -223,12 +194,9 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
 
     fn visit_item(&mut self, i: &'a ast::Item) {
         match &i.kind {
-            ast::ItemKind::ForeignMod(foreign_module) => {
-                if let Some(abi) = foreign_module.abi {
-                    self.check_abi(abi);
-                }
+            ast::ItemKind::ForeignMod(_foreign_module) => {
+                // handled during lowering
             }
-
             ast::ItemKind::Struct(..) | ast::ItemKind::Enum(..) | ast::ItemKind::Union(..) => {
                 for attr in attr::filter_by_name(&i.attrs, sym::repr) {
                     for item in attr.meta_item_list().unwrap_or_else(ThinVec::new) {
@@ -315,7 +283,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
         match &ty.kind {
             ast::TyKind::BareFn(bare_fn_ty) => {
                 // Function pointers cannot be `const`
-                self.check_extern(bare_fn_ty.ext);
                 self.check_late_bound_lifetime_defs(&bare_fn_ty.generic_params);
             }
             ast::TyKind::Never => {
@@ -418,9 +385,8 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
     }
 
     fn visit_fn(&mut self, fn_kind: FnKind<'a>, span: Span, _: NodeId) {
-        if let Some(header) = fn_kind.header() {
+        if let Some(_header) = fn_kind.header() {
             // Stability of const fn methods are covered in `visit_assoc_item` below.
-            self.check_extern(header.ext);
         }
 
         if let FnKind::Closure(ast::ClosureBinder::For { generic_params, .. }, ..) = fn_kind {
diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs
index eeec24e5ea4..0bf5de3ef89 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state.rs
@@ -1148,6 +1148,28 @@ impl<'a> State<'a> {
         }
     }
 
+    pub fn print_ty_pat(&mut self, pat: &ast::TyPat) {
+        match &pat.kind {
+            rustc_ast::TyPatKind::Range(start, end, include_end) => {
+                if let Some(start) = start {
+                    self.print_expr_anon_const(start, &[]);
+                }
+                self.word("..");
+                if let Some(end) = end {
+                    if let RangeEnd::Included(_) = include_end.node {
+                        self.word("=");
+                    }
+                    self.print_expr_anon_const(end, &[]);
+                }
+            }
+            rustc_ast::TyPatKind::Err(_) => {
+                self.popen();
+                self.word("/*ERROR*/");
+                self.pclose();
+            }
+        }
+    }
+
     pub fn print_type(&mut self, ty: &ast::Ty) {
         self.maybe_print_comment(ty.span.lo());
         self.ibox(0);
@@ -1252,7 +1274,7 @@ impl<'a> State<'a> {
             ast::TyKind::Pat(ty, pat) => {
                 self.print_type(ty);
                 self.word(" is ");
-                self.print_pat(pat);
+                self.print_ty_pat(pat);
             }
         }
         self.end();
diff --git a/compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs b/compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs
index 30b0a358580..aa968a1e40f 100644
--- a/compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs
+++ b/compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs
@@ -9,8 +9,8 @@ use rustc_infer::infer::{
 };
 use rustc_infer::traits::ObligationCause;
 use rustc_infer::traits::query::{
-    CanonicalTypeOpAscribeUserTypeGoal, CanonicalTypeOpNormalizeGoal,
-    CanonicalTypeOpProvePredicateGoal,
+    CanonicalTypeOpAscribeUserTypeGoal, CanonicalTypeOpDeeplyNormalizeGoal,
+    CanonicalTypeOpNormalizeGoal, CanonicalTypeOpProvePredicateGoal,
 };
 use rustc_middle::ty::error::TypeError;
 use rustc_middle::ty::{
@@ -109,6 +109,14 @@ impl<'tcx, T: Copy + fmt::Display + TypeFoldable<TyCtxt<'tcx>> + 'tcx> ToUnivers
     }
 }
 
+impl<'tcx, T: Copy + fmt::Display + TypeFoldable<TyCtxt<'tcx>> + 'tcx> ToUniverseInfo<'tcx>
+    for CanonicalTypeOpDeeplyNormalizeGoal<'tcx, T>
+{
+    fn to_universe_info(self, base_universe: ty::UniverseIndex) -> UniverseInfo<'tcx> {
+        UniverseInfo::TypeOp(Rc::new(DeeplyNormalizeQuery { canonical_query: self, base_universe }))
+    }
+}
+
 impl<'tcx> ToUniverseInfo<'tcx> for CanonicalTypeOpAscribeUserTypeGoal<'tcx> {
     fn to_universe_info(self, base_universe: ty::UniverseIndex) -> UniverseInfo<'tcx> {
         UniverseInfo::TypeOp(Rc::new(AscribeUserTypeQuery { canonical_query: self, base_universe }))
@@ -285,6 +293,53 @@ where
     }
 }
 
+struct DeeplyNormalizeQuery<'tcx, T> {
+    canonical_query: CanonicalTypeOpDeeplyNormalizeGoal<'tcx, T>,
+    base_universe: ty::UniverseIndex,
+}
+
+impl<'tcx, T> TypeOpInfo<'tcx> for DeeplyNormalizeQuery<'tcx, T>
+where
+    T: Copy + fmt::Display + TypeFoldable<TyCtxt<'tcx>> + 'tcx,
+{
+    fn fallback_error(&self, tcx: TyCtxt<'tcx>, span: Span) -> Diag<'tcx> {
+        tcx.dcx().create_err(HigherRankedLifetimeError {
+            cause: Some(HigherRankedErrorCause::CouldNotNormalize {
+                value: self.canonical_query.canonical.value.value.value.to_string(),
+            }),
+            span,
+        })
+    }
+
+    fn base_universe(&self) -> ty::UniverseIndex {
+        self.base_universe
+    }
+
+    fn nice_error<'infcx>(
+        &self,
+        mbcx: &mut MirBorrowckCtxt<'_, 'infcx, 'tcx>,
+        cause: ObligationCause<'tcx>,
+        placeholder_region: ty::Region<'tcx>,
+        error_region: Option<ty::Region<'tcx>>,
+    ) -> Option<Diag<'infcx>> {
+        let (infcx, key, _) =
+            mbcx.infcx.tcx.infer_ctxt().build_with_canonical(cause.span, &self.canonical_query);
+        let ocx = ObligationCtxt::new(&infcx);
+
+        let (param_env, value) = key.into_parts();
+        let _ = ocx.deeply_normalize(&cause, param_env, value.value);
+
+        let diag = try_extract_error_from_fulfill_cx(
+            &ocx,
+            mbcx.mir_def_id(),
+            placeholder_region,
+            error_region,
+        )?
+        .with_dcx(mbcx.dcx());
+        Some(diag)
+    }
+}
+
 struct AscribeUserTypeQuery<'tcx> {
     canonical_query: CanonicalTypeOpAscribeUserTypeGoal<'tcx>,
     base_universe: ty::UniverseIndex,
diff --git a/compiler/rustc_borrowck/src/type_check/canonical.rs b/compiler/rustc_borrowck/src/type_check/canonical.rs
index bffd9f38334..b3fa786a517 100644
--- a/compiler/rustc_borrowck/src/type_check/canonical.rs
+++ b/compiler/rustc_borrowck/src/type_check/canonical.rs
@@ -149,6 +149,18 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
         self.normalize_with_category(value, location, ConstraintCategory::Boring)
     }
 
+    pub(super) fn deeply_normalize<T>(&mut self, value: T, location: impl NormalizeLocation) -> T
+    where
+        T: type_op::normalize::Normalizable<'tcx> + fmt::Display + Copy + 'tcx,
+    {
+        let result: Result<_, ErrorGuaranteed> = self.fully_perform_op(
+            location.to_locations(),
+            ConstraintCategory::Boring,
+            self.infcx.param_env.and(type_op::normalize::DeeplyNormalize { value }),
+        );
+        result.unwrap_or(value)
+    }
+
     #[instrument(skip(self), level = "debug")]
     pub(super) fn normalize_with_category<T>(
         &mut self,
diff --git a/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs b/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs
index 4b7f5321388..3b48ca305c4 100644
--- a/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs
+++ b/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs
@@ -4,15 +4,12 @@ use rustc_infer::infer::outlives::env::RegionBoundPairs;
 use rustc_infer::infer::outlives::obligations::{TypeOutlives, TypeOutlivesDelegate};
 use rustc_infer::infer::region_constraints::{GenericKind, VerifyBound};
 use rustc_infer::infer::{self, InferCtxt, SubregionOrigin};
+use rustc_infer::traits::query::type_op::DeeplyNormalize;
 use rustc_middle::bug;
 use rustc_middle::mir::{ClosureOutlivesSubject, ClosureRegionRequirements, ConstraintCategory};
-use rustc_middle::traits::ObligationCause;
-use rustc_middle::traits::query::NoSolution;
 use rustc_middle::ty::fold::fold_regions;
 use rustc_middle::ty::{self, GenericArgKind, Ty, TyCtxt, TypeFoldable, TypeVisitableExt};
 use rustc_span::Span;
-use rustc_trait_selection::traits::ScrubbedTraitError;
-use rustc_trait_selection::traits::query::type_op::custom::CustomTypeOp;
 use rustc_trait_selection::traits::query::type_op::{TypeOp, TypeOpOutput};
 use tracing::{debug, instrument};
 
@@ -270,20 +267,8 @@ impl<'a, 'tcx> ConstraintConversion<'a, 'tcx> {
             ConstraintCategory<'tcx>,
         )>,
     ) -> Ty<'tcx> {
-        let result = CustomTypeOp::new(
-            |ocx| {
-                ocx.deeply_normalize(
-                    &ObligationCause::dummy_with_span(self.span),
-                    self.param_env,
-                    ty,
-                )
-                .map_err(|_: Vec<ScrubbedTraitError<'tcx>>| NoSolution)
-            },
-            "normalize type outlives obligation",
-        )
-        .fully_perform(self.infcx, self.span);
-
-        match result {
+        match self.param_env.and(DeeplyNormalize { value: ty }).fully_perform(self.infcx, self.span)
+        {
             Ok(TypeOpOutput { output: ty, constraints, .. }) => {
                 if let Some(QueryRegionConstraints { outlives }) = constraints {
                     next_outlives_predicates.extend(outlives.iter().copied());
diff --git a/compiler/rustc_borrowck/src/type_check/free_region_relations.rs b/compiler/rustc_borrowck/src/type_check/free_region_relations.rs
index edf612f4e97..efbae1e1535 100644
--- a/compiler/rustc_borrowck/src/type_check/free_region_relations.rs
+++ b/compiler/rustc_borrowck/src/type_check/free_region_relations.rs
@@ -5,14 +5,11 @@ use rustc_infer::infer::canonical::QueryRegionConstraints;
 use rustc_infer::infer::outlives::env::RegionBoundPairs;
 use rustc_infer::infer::region_constraints::GenericKind;
 use rustc_infer::infer::{InferCtxt, outlives};
-use rustc_infer::traits::ScrubbedTraitError;
+use rustc_infer::traits::query::type_op::DeeplyNormalize;
 use rustc_middle::mir::ConstraintCategory;
-use rustc_middle::traits::ObligationCause;
 use rustc_middle::traits::query::OutlivesBound;
 use rustc_middle::ty::{self, RegionVid, Ty, TypeVisitableExt};
 use rustc_span::{ErrorGuaranteed, Span};
-use rustc_trait_selection::solve::NoSolution;
-use rustc_trait_selection::traits::query::type_op::custom::CustomTypeOp;
 use rustc_trait_selection::traits::query::type_op::{self, TypeOp};
 use tracing::{debug, instrument};
 use type_op::TypeOpOutput;
@@ -267,7 +264,7 @@ impl<'tcx> UniversalRegionRelationsBuilder<'_, 'tcx> {
             }
             let TypeOpOutput { output: norm_ty, constraints: constraints_normalize, .. } =
                 param_env
-                    .and(type_op::normalize::Normalize { value: ty })
+                    .and(DeeplyNormalize { value: ty })
                     .fully_perform(self.infcx, span)
                     .unwrap_or_else(|guar| TypeOpOutput {
                         output: Ty::new_error(self.infcx.tcx, guar),
@@ -303,9 +300,8 @@ impl<'tcx> UniversalRegionRelationsBuilder<'_, 'tcx> {
         // Add implied bounds from impl header.
         if matches!(tcx.def_kind(defining_ty_def_id), DefKind::AssocFn | DefKind::AssocConst) {
             for &(ty, _) in tcx.assumed_wf_types(tcx.local_parent(defining_ty_def_id)) {
-                let result: Result<_, ErrorGuaranteed> = param_env
-                    .and(type_op::normalize::Normalize { value: ty })
-                    .fully_perform(self.infcx, span);
+                let result: Result<_, ErrorGuaranteed> =
+                    param_env.and(DeeplyNormalize { value: ty }).fully_perform(self.infcx, span);
                 let Ok(TypeOpOutput { output: norm_ty, constraints: c, .. }) = result else {
                     continue;
                 };
@@ -360,18 +356,10 @@ impl<'tcx> UniversalRegionRelationsBuilder<'_, 'tcx> {
                 output: normalized_outlives,
                 constraints: constraints_normalize,
                 error_info: _,
-            }) = CustomTypeOp::new(
-                |ocx| {
-                    ocx.deeply_normalize(
-                        &ObligationCause::dummy_with_span(span),
-                        self.param_env,
-                        outlives,
-                    )
-                    .map_err(|_: Vec<ScrubbedTraitError<'tcx>>| NoSolution)
-                },
-                "normalize type outlives obligation",
-            )
-            .fully_perform(self.infcx, span)
+            }) = self
+                .param_env
+                .and(DeeplyNormalize { value: outlives })
+                .fully_perform(self.infcx, span)
             else {
                 self.infcx.dcx().delayed_bug(format!("could not normalize {outlives:?}"));
                 return;
diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs
index 26a5d438edb..93081919ec7 100644
--- a/compiler/rustc_borrowck/src/type_check/mod.rs
+++ b/compiler/rustc_borrowck/src/type_check/mod.rs
@@ -1116,7 +1116,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
                     ConstraintCategory::Boring,
                 );
 
-                let sig = self.normalize(unnormalized_sig, term_location);
+                let sig = self.deeply_normalize(unnormalized_sig, term_location);
                 // HACK(#114936): `WF(sig)` does not imply `WF(normalized(sig))`
                 // with built-in `Fn` implementations, since the impl may not be
                 // well-formed itself.
diff --git a/compiler/rustc_builtin_macros/src/contracts.rs b/compiler/rustc_builtin_macros/src/contracts.rs
index 85a30f7bdc9..6a24af361fe 100644
--- a/compiler/rustc_builtin_macros/src/contracts.rs
+++ b/compiler/rustc_builtin_macros/src/contracts.rs
@@ -1,11 +1,9 @@
-#![allow(unused_imports, unused_variables)]
-
 use rustc_ast::token;
 use rustc_ast::tokenstream::{DelimSpacing, DelimSpan, Spacing, TokenStream, TokenTree};
 use rustc_errors::ErrorGuaranteed;
 use rustc_expand::base::{AttrProcMacro, ExtCtxt};
 use rustc_span::Span;
-use rustc_span::symbol::{Ident, Symbol, kw, sym};
+use rustc_span::symbol::{Ident, Symbol, kw};
 
 pub(crate) struct ExpandRequires;
 
@@ -121,23 +119,19 @@ fn expand_contract_clause(
         }
     }
 
-    // Record the span as a contract attribute expansion.
-    // This is used later to stop users from using the extended syntax directly
-    // which is gated via `contracts_internals`.
-    ecx.psess().contract_attribute_spans.push(attr_span);
-
     Ok(new_tts)
 }
 
 fn expand_requires_tts(
-    _ecx: &mut ExtCtxt<'_>,
+    ecx: &mut ExtCtxt<'_>,
     attr_span: Span,
     annotation: TokenStream,
     annotated: TokenStream,
 ) -> Result<TokenStream, ErrorGuaranteed> {
-    expand_contract_clause(_ecx, attr_span, annotated, |new_tts| {
+    let feature_span = ecx.with_def_site_ctxt(attr_span);
+    expand_contract_clause(ecx, attr_span, annotated, |new_tts| {
         new_tts.push_tree(TokenTree::Token(
-            token::Token::from_ast_ident(Ident::new(kw::ContractRequires, attr_span)),
+            token::Token::from_ast_ident(Ident::new(kw::ContractRequires, feature_span)),
             Spacing::Joint,
         ));
         new_tts.push_tree(TokenTree::Token(
@@ -155,14 +149,15 @@ fn expand_requires_tts(
 }
 
 fn expand_ensures_tts(
-    _ecx: &mut ExtCtxt<'_>,
+    ecx: &mut ExtCtxt<'_>,
     attr_span: Span,
     annotation: TokenStream,
     annotated: TokenStream,
 ) -> Result<TokenStream, ErrorGuaranteed> {
-    expand_contract_clause(_ecx, attr_span, annotated, |new_tts| {
+    let feature_span = ecx.with_def_site_ctxt(attr_span);
+    expand_contract_clause(ecx, attr_span, annotated, |new_tts| {
         new_tts.push_tree(TokenTree::Token(
-            token::Token::from_ast_ident(Ident::new(kw::ContractEnsures, attr_span)),
+            token::Token::from_ast_ident(Ident::new(kw::ContractEnsures, feature_span)),
             Spacing::Joint,
         ));
         new_tts.push_tree(TokenTree::Delimited(
diff --git a/compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs b/compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs
index 82417a86dd9..5aed9f76f14 100644
--- a/compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs
+++ b/compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs
@@ -3,11 +3,11 @@ use ast::ptr::P;
 use rustc_ast::mut_visit::MutVisitor;
 use rustc_ast::visit::BoundKind;
 use rustc_ast::{
-    self as ast, GenericArg, GenericBound, GenericParamKind, ItemKind, MetaItem,
+    self as ast, GenericArg, GenericBound, GenericParamKind, Generics, ItemKind, MetaItem,
     TraitBoundModifiers, VariantData, WherePredicate,
 };
-use rustc_attr_parsing as attr;
 use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
+use rustc_errors::E0802;
 use rustc_expand::base::{Annotatable, ExtCtxt};
 use rustc_macros::Diagnostic;
 use rustc_span::{Ident, Span, Symbol, sym};
@@ -32,15 +32,6 @@ pub(crate) fn expand_deriving_coerce_pointee(
     let (name_ident, generics) = if let Annotatable::Item(aitem) = item
         && let ItemKind::Struct(struct_data, g) = &aitem.kind
     {
-        let is_transparent = aitem.attrs.iter().any(|attr| {
-            attr::find_repr_attrs(cx.sess, attr)
-                .into_iter()
-                .any(|r| matches!(r, attr::ReprTransparent))
-        });
-        if !is_transparent {
-            cx.dcx().emit_err(RequireTransparent { span });
-            return;
-        }
         if !matches!(
             struct_data,
             VariantData::Struct { fields, recovered: _ } | VariantData::Tuple(fields, _)
@@ -88,8 +79,7 @@ pub(crate) fn expand_deriving_coerce_pointee(
     } else {
         let mut pointees = type_params
             .iter()
-            .filter_map(|&(idx, span, is_pointee)| is_pointee.then_some((idx, span)))
-            .fuse();
+            .filter_map(|&(idx, span, is_pointee)| is_pointee.then_some((idx, span)));
         match (pointees.next(), pointees.next()) {
             (Some((idx, _span)), None) => idx,
             (None, _) => {
@@ -110,6 +100,52 @@ pub(crate) fn expand_deriving_coerce_pointee(
     // Declare helper function that adds implementation blocks.
     // FIXME(dingxiangfei2009): Investigate the set of attributes on target struct to be propagated to impls
     let attrs = thin_vec![cx.attr_word(sym::automatically_derived, span),];
+    // # Validity assertion which will be checked later in `rustc_hir_analysis::coherence::builtins`.
+    {
+        let trait_path =
+            cx.path_all(span, true, path!(span, core::marker::CoercePointeeValidated), vec![]);
+        let trait_ref = cx.trait_ref(trait_path);
+        push(Annotatable::Item(
+            cx.item(
+                span,
+                Ident::empty(),
+                attrs.clone(),
+                ast::ItemKind::Impl(Box::new(ast::Impl {
+                    safety: ast::Safety::Default,
+                    polarity: ast::ImplPolarity::Positive,
+                    defaultness: ast::Defaultness::Final,
+                    constness: ast::Const::No,
+                    generics: Generics {
+                        params: generics
+                            .params
+                            .iter()
+                            .map(|p| match &p.kind {
+                                GenericParamKind::Lifetime => {
+                                    cx.lifetime_param(p.span(), p.ident, p.bounds.clone())
+                                }
+                                GenericParamKind::Type { default: _ } => {
+                                    cx.typaram(p.span(), p.ident, p.bounds.clone(), None)
+                                }
+                                GenericParamKind::Const { ty, kw_span: _, default: _ } => cx
+                                    .const_param(
+                                        p.span(),
+                                        p.ident,
+                                        p.bounds.clone(),
+                                        ty.clone(),
+                                        None,
+                                    ),
+                            })
+                            .collect(),
+                        where_clause: generics.where_clause.clone(),
+                        span: generics.span,
+                    },
+                    of_trait: Some(trait_ref),
+                    self_ty: self_type.clone(),
+                    items: ThinVec::new(),
+                })),
+            ),
+        ));
+    }
     let mut add_impl_block = |generics, trait_symbol, trait_args| {
         let mut parts = path!(span, core::ops);
         parts.push(Ident::new(trait_symbol, span));
@@ -430,35 +466,35 @@ impl<'a, 'b> rustc_ast::visit::Visitor<'a> for AlwaysErrorOnGenericParam<'a, 'b>
 }
 
 #[derive(Diagnostic)]
-#[diag(builtin_macros_coerce_pointee_requires_transparent)]
+#[diag(builtin_macros_coerce_pointee_requires_transparent, code = E0802)]
 struct RequireTransparent {
     #[primary_span]
     span: Span,
 }
 
 #[derive(Diagnostic)]
-#[diag(builtin_macros_coerce_pointee_requires_one_field)]
+#[diag(builtin_macros_coerce_pointee_requires_one_field, code = E0802)]
 struct RequireOneField {
     #[primary_span]
     span: Span,
 }
 
 #[derive(Diagnostic)]
-#[diag(builtin_macros_coerce_pointee_requires_one_generic)]
+#[diag(builtin_macros_coerce_pointee_requires_one_generic, code = E0802)]
 struct RequireOneGeneric {
     #[primary_span]
     span: Span,
 }
 
 #[derive(Diagnostic)]
-#[diag(builtin_macros_coerce_pointee_requires_one_pointee)]
+#[diag(builtin_macros_coerce_pointee_requires_one_pointee, code = E0802)]
 struct RequireOnePointee {
     #[primary_span]
     span: Span,
 }
 
 #[derive(Diagnostic)]
-#[diag(builtin_macros_coerce_pointee_too_many_pointees)]
+#[diag(builtin_macros_coerce_pointee_too_many_pointees, code = E0802)]
 struct TooManyPointees {
     #[primary_span]
     one: Span,
@@ -467,7 +503,7 @@ struct TooManyPointees {
 }
 
 #[derive(Diagnostic)]
-#[diag(builtin_macros_coerce_pointee_requires_maybe_sized)]
+#[diag(builtin_macros_coerce_pointee_requires_maybe_sized, code = E0802)]
 struct RequiresMaybeSized {
     #[primary_span]
     span: Span,
diff --git a/compiler/rustc_builtin_macros/src/pattern_type.rs b/compiler/rustc_builtin_macros/src/pattern_type.rs
index a600a9f316a..a55c7e962d0 100644
--- a/compiler/rustc_builtin_macros/src/pattern_type.rs
+++ b/compiler/rustc_builtin_macros/src/pattern_type.rs
@@ -1,6 +1,6 @@
 use rustc_ast::ptr::P;
 use rustc_ast::tokenstream::TokenStream;
-use rustc_ast::{Pat, Ty, ast};
+use rustc_ast::{AnonConst, DUMMY_NODE_ID, Ty, TyPat, TyPatKind, ast};
 use rustc_errors::PResult;
 use rustc_expand::base::{self, DummyResult, ExpandResult, ExtCtxt, MacroExpanderResult};
 use rustc_parse::exp;
@@ -21,12 +21,24 @@ pub(crate) fn expand<'cx>(
     ExpandResult::Ready(base::MacEager::ty(cx.ty(sp, ast::TyKind::Pat(ty, pat))))
 }
 
-fn parse_pat_ty<'a>(cx: &mut ExtCtxt<'a>, stream: TokenStream) -> PResult<'a, (P<Ty>, P<Pat>)> {
+fn parse_pat_ty<'a>(cx: &mut ExtCtxt<'a>, stream: TokenStream) -> PResult<'a, (P<Ty>, P<TyPat>)> {
     let mut parser = cx.new_parser_from_tts(stream);
 
     let ty = parser.parse_ty()?;
     parser.expect_keyword(exp!(Is))?;
-    let pat = parser.parse_pat_no_top_alt(None, None)?;
+    let pat = parser.parse_pat_no_top_alt(None, None)?.into_inner();
+
+    let kind = match pat.kind {
+        ast::PatKind::Range(start, end, include_end) => TyPatKind::Range(
+            start.map(|value| P(AnonConst { id: DUMMY_NODE_ID, value })),
+            end.map(|value| P(AnonConst { id: DUMMY_NODE_ID, value })),
+            include_end,
+        ),
+        ast::PatKind::Err(guar) => TyPatKind::Err(guar),
+        _ => TyPatKind::Err(cx.dcx().span_err(pat.span, "pattern not supported in pattern types")),
+    };
+
+    let pat = P(TyPat { id: pat.id, kind, span: pat.span, tokens: pat.tokens });
 
     Ok((ty, pat))
 }
diff --git a/compiler/rustc_codegen_cranelift/patches/0029-stdlib-Disable-f16-and-f128-in-compiler-builtins.patch b/compiler/rustc_codegen_cranelift/patches/0029-stdlib-Disable-f16-and-f128-in-compiler-builtins.patch
index bac411d1eb0..e3a9512dda9 100644
--- a/compiler/rustc_codegen_cranelift/patches/0029-stdlib-Disable-f16-and-f128-in-compiler-builtins.patch
+++ b/compiler/rustc_codegen_cranelift/patches/0029-stdlib-Disable-f16-and-f128-in-compiler-builtins.patch
@@ -16,8 +16,8 @@ index 7165c3e48af..968552ad435 100644
  
  [dependencies]
  core = { path = "../core" }
--compiler_builtins = { version = "=0.1.145", features = ['rustc-dep-of-std'] }
-+compiler_builtins = { version = "=0.1.145", features = ['rustc-dep-of-std', 'no-f16-f128'] }
+-compiler_builtins = { version = "=0.1.146", features = ['rustc-dep-of-std'] }
++compiler_builtins = { version = "=0.1.146", features = ['rustc-dep-of-std', 'no-f16-f128'] }
  
  [dev-dependencies]
  rand = { version = "0.8.5", default-features = false, features = ["alloc"] }
diff --git a/compiler/rustc_codegen_gcc/src/int.rs b/compiler/rustc_codegen_gcc/src/int.rs
index 4a1db8d662a..f3552d9b12f 100644
--- a/compiler/rustc_codegen_gcc/src/int.rs
+++ b/compiler/rustc_codegen_gcc/src/int.rs
@@ -400,7 +400,7 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
             conv: Conv::C,
             can_unwind: false,
         };
-        fn_abi.adjust_for_foreign_abi(self.cx, ExternAbi::C { unwind: false }).unwrap();
+        fn_abi.adjust_for_foreign_abi(self.cx, ExternAbi::C { unwind: false });
 
         let ret_indirect = matches!(fn_abi.ret.mode, PassMode::Indirect { .. });
 
diff --git a/compiler/rustc_codegen_llvm/src/abi.rs b/compiler/rustc_codegen_llvm/src/abi.rs
index 685b2f37c9c..13846c8ab4b 100644
--- a/compiler/rustc_codegen_llvm/src/abi.rs
+++ b/compiler/rustc_codegen_llvm/src/abi.rs
@@ -664,7 +664,7 @@ impl<'tcx> AbiBuilderMethods<'tcx> for Builder<'_, '_, 'tcx> {
 }
 
 impl llvm::CallConv {
-    pub fn from_conv(conv: Conv, arch: &str) -> Self {
+    pub(crate) fn from_conv(conv: Conv, arch: &str) -> Self {
         match conv {
             Conv::C
             | Conv::Rust
diff --git a/compiler/rustc_codegen_llvm/src/allocator.rs b/compiler/rustc_codegen_llvm/src/allocator.rs
index 149ded28356..66723cbf882 100644
--- a/compiler/rustc_codegen_llvm/src/allocator.rs
+++ b/compiler/rustc_codegen_llvm/src/allocator.rs
@@ -81,13 +81,13 @@ pub(crate) unsafe fn codegen(
         llvm::set_visibility(ll_g, llvm::Visibility::from_generic(tcx.sess.default_visibility()));
         let val = tcx.sess.opts.unstable_opts.oom.should_panic();
         let llval = llvm::LLVMConstInt(i8, val as u64, False);
-        llvm::LLVMSetInitializer(ll_g, llval);
+        llvm::set_initializer(ll_g, llval);
 
         let name = NO_ALLOC_SHIM_IS_UNSTABLE;
         let ll_g = llvm::LLVMRustGetOrInsertGlobal(llmod, name.as_c_char_ptr(), name.len(), i8);
         llvm::set_visibility(ll_g, llvm::Visibility::from_generic(tcx.sess.default_visibility()));
         let llval = llvm::LLVMConstInt(i8, 0, False);
-        llvm::LLVMSetInitializer(ll_g, llval);
+        llvm::set_initializer(ll_g, llval);
     }
 
     if tcx.sess.opts.debuginfo != DebugInfo::None {
diff --git a/compiler/rustc_codegen_llvm/src/back/archive.rs b/compiler/rustc_codegen_llvm/src/back/archive.rs
index 33a956e552f..93553f3f364 100644
--- a/compiler/rustc_codegen_llvm/src/back/archive.rs
+++ b/compiler/rustc_codegen_llvm/src/back/archive.rs
@@ -11,7 +11,7 @@ use rustc_codegen_ssa::back::archive::{
 use rustc_session::Session;
 
 use crate::llvm::archive_ro::{ArchiveRO, Child};
-use crate::llvm::{self, ArchiveKind};
+use crate::llvm::{self, ArchiveKind, last_error};
 
 /// Helper for adding many files to an archive.
 #[must_use = "must call build() to finish building the archive"]
@@ -169,6 +169,8 @@ impl<'a> LlvmArchiveBuilder<'a> {
             .unwrap_or_else(|kind| self.sess.dcx().emit_fatal(UnknownArchiveKind { kind }));
 
         let mut additions = mem::take(&mut self.additions);
+        // Values in the `members` list below will contain pointers to the strings allocated here.
+        // So they need to get dropped after all elements of `members` get freed.
         let mut strings = Vec::new();
         let mut members = Vec::new();
 
@@ -229,12 +231,7 @@ impl<'a> LlvmArchiveBuilder<'a> {
                 self.sess.target.arch == "arm64ec",
             );
             let ret = if r.into_result().is_err() {
-                let err = llvm::LLVMRustGetLastError();
-                let msg = if err.is_null() {
-                    "failed to write archive".into()
-                } else {
-                    String::from_utf8_lossy(CStr::from_ptr(err).to_bytes())
-                };
+                let msg = last_error().unwrap_or_else(|| "failed to write archive".into());
                 Err(io::Error::new(io::ErrorKind::Other, msg))
             } else {
                 Ok(!members.is_empty())
diff --git a/compiler/rustc_codegen_llvm/src/back/lto.rs b/compiler/rustc_codegen_llvm/src/back/lto.rs
index 78c759bbe8c..7262fce4911 100644
--- a/compiler/rustc_codegen_llvm/src/back/lto.rs
+++ b/compiler/rustc_codegen_llvm/src/back/lto.rs
@@ -606,10 +606,31 @@ pub(crate) fn run_pass_manager(
 
     // If this rustc version was build with enzyme/autodiff enabled, and if users applied the
     // `#[autodiff]` macro at least once, then we will later call llvm_optimize a second time.
-    let first_run = true;
     debug!("running llvm pm opt pipeline");
     unsafe {
-        write::llvm_optimize(cgcx, dcx, module, config, opt_level, opt_stage, first_run)?;
+        write::llvm_optimize(
+            cgcx,
+            dcx,
+            module,
+            config,
+            opt_level,
+            opt_stage,
+            write::AutodiffStage::DuringAD,
+        )?;
+    }
+    // FIXME(ZuseZ4): Make this more granular
+    if cfg!(llvm_enzyme) && !thin {
+        unsafe {
+            write::llvm_optimize(
+                cgcx,
+                dcx,
+                module,
+                config,
+                opt_level,
+                llvm::OptStage::FatLTO,
+                write::AutodiffStage::PostAD,
+            )?;
+        }
     }
     debug!("lto done");
     Ok(())
@@ -621,7 +642,7 @@ unsafe impl Send for ModuleBuffer {}
 unsafe impl Sync for ModuleBuffer {}
 
 impl ModuleBuffer {
-    pub fn new(m: &llvm::Module) -> ModuleBuffer {
+    pub(crate) fn new(m: &llvm::Module) -> ModuleBuffer {
         ModuleBuffer(unsafe { llvm::LLVMRustModuleBufferCreate(m) })
     }
 }
@@ -663,7 +684,7 @@ unsafe impl Send for ThinBuffer {}
 unsafe impl Sync for ThinBuffer {}
 
 impl ThinBuffer {
-    pub fn new(m: &llvm::Module, is_thin: bool, emit_summary: bool) -> ThinBuffer {
+    pub(crate) fn new(m: &llvm::Module, is_thin: bool, emit_summary: bool) -> ThinBuffer {
         unsafe {
             let buffer = llvm::LLVMRustThinLTOBufferCreate(m, is_thin, emit_summary);
             ThinBuffer(buffer)
diff --git a/compiler/rustc_codegen_llvm/src/back/owned_target_machine.rs b/compiler/rustc_codegen_llvm/src/back/owned_target_machine.rs
index 4cbd49aa44d..f075f332462 100644
--- a/compiler/rustc_codegen_llvm/src/back/owned_target_machine.rs
+++ b/compiler/rustc_codegen_llvm/src/back/owned_target_machine.rs
@@ -17,7 +17,7 @@ pub struct OwnedTargetMachine {
 }
 
 impl OwnedTargetMachine {
-    pub fn new(
+    pub(crate) fn new(
         triple: &CStr,
         cpu: &CStr,
         features: &CStr,
diff --git a/compiler/rustc_codegen_llvm/src/back/write.rs b/compiler/rustc_codegen_llvm/src/back/write.rs
index 4706744f353..58933a77e53 100644
--- a/compiler/rustc_codegen_llvm/src/back/write.rs
+++ b/compiler/rustc_codegen_llvm/src/back/write.rs
@@ -40,7 +40,7 @@ use crate::errors::{
     WithLlvmError, WriteBytecode,
 };
 use crate::llvm::diagnostic::OptimizationDiagnosticKind::*;
-use crate::llvm::{self, DiagnosticInfo, PassManager};
+use crate::llvm::{self, DiagnosticInfo};
 use crate::type_::Type;
 use crate::{LlvmCodegenBackend, ModuleLlvm, base, common, llvm_util};
 
@@ -54,7 +54,7 @@ pub(crate) fn llvm_err<'a>(dcx: DiagCtxtHandle<'_>, err: LlvmError<'a>) -> Fatal
 fn write_output_file<'ll>(
     dcx: DiagCtxtHandle<'_>,
     target: &'ll llvm::TargetMachine,
-    pm: &llvm::PassManager<'ll>,
+    no_builtins: bool,
     m: &'ll llvm::Module,
     output: &Path,
     dwo_output: Option<&Path>,
@@ -63,16 +63,19 @@ fn write_output_file<'ll>(
     verify_llvm_ir: bool,
 ) -> Result<(), FatalError> {
     debug!("write_output_file output={:?} dwo_output={:?}", output, dwo_output);
-    unsafe {
-        let output_c = path_to_c_string(output);
-        let dwo_output_c;
-        let dwo_output_ptr = if let Some(dwo_output) = dwo_output {
-            dwo_output_c = path_to_c_string(dwo_output);
-            dwo_output_c.as_ptr()
-        } else {
-            std::ptr::null()
-        };
-        let result = llvm::LLVMRustWriteOutputFile(
+    let output_c = path_to_c_string(output);
+    let dwo_output_c;
+    let dwo_output_ptr = if let Some(dwo_output) = dwo_output {
+        dwo_output_c = path_to_c_string(dwo_output);
+        dwo_output_c.as_ptr()
+    } else {
+        std::ptr::null()
+    };
+    let result = unsafe {
+        let pm = llvm::LLVMCreatePassManager();
+        llvm::LLVMAddAnalysisPasses(target, pm);
+        llvm::LLVMRustAddLibraryInfo(pm, m, no_builtins);
+        llvm::LLVMRustWriteOutputFile(
             target,
             pm,
             m,
@@ -80,22 +83,22 @@ fn write_output_file<'ll>(
             dwo_output_ptr,
             file_type,
             verify_llvm_ir,
-        );
+        )
+    };
 
-        // Record artifact sizes for self-profiling
-        if result == llvm::LLVMRustResult::Success {
-            let artifact_kind = match file_type {
-                llvm::FileType::ObjectFile => "object_file",
-                llvm::FileType::AssemblyFile => "assembly_file",
-            };
-            record_artifact_size(self_profiler_ref, artifact_kind, output);
-            if let Some(dwo_file) = dwo_output {
-                record_artifact_size(self_profiler_ref, "dwo_file", dwo_file);
-            }
+    // Record artifact sizes for self-profiling
+    if result == llvm::LLVMRustResult::Success {
+        let artifact_kind = match file_type {
+            llvm::FileType::ObjectFile => "object_file",
+            llvm::FileType::AssemblyFile => "assembly_file",
+        };
+        record_artifact_size(self_profiler_ref, artifact_kind, output);
+        if let Some(dwo_file) = dwo_output {
+            record_artifact_size(self_profiler_ref, "dwo_file", dwo_file);
         }
-
-        result.into_result().map_err(|()| llvm_err(dcx, LlvmError::WriteOutput { path: output }))
     }
+
+    result.into_result().map_err(|()| llvm_err(dcx, LlvmError::WriteOutput { path: output }))
 }
 
 pub(crate) fn create_informational_target_machine(
@@ -325,13 +328,17 @@ pub(crate) fn save_temp_bitcode(
     if !cgcx.save_temps {
         return;
     }
+    let ext = format!("{name}.bc");
+    let cgu = Some(&module.name[..]);
+    let path = cgcx.output_filenames.temp_path_ext(&ext, cgu);
+    write_bitcode_to_file(module, &path)
+}
+
+fn write_bitcode_to_file(module: &ModuleCodegen<ModuleLlvm>, path: &Path) {
     unsafe {
-        let ext = format!("{name}.bc");
-        let cgu = Some(&module.name[..]);
-        let path = cgcx.output_filenames.temp_path_ext(&ext, cgu);
-        let cstr = path_to_c_string(&path);
+        let path = path_to_c_string(&path);
         let llmod = module.module_llvm.llmod();
-        llvm::LLVMWriteBitcodeToFile(llmod, cstr.as_ptr());
+        llvm::LLVMWriteBitcodeToFile(llmod, path.as_ptr());
     }
 }
 
@@ -530,6 +537,16 @@ fn get_instr_profile_output_path(config: &ModuleConfig) -> Option<CString> {
     config.instrument_coverage.then(|| c"default_%m_%p.profraw".to_owned())
 }
 
+// PreAD will run llvm opts but disable size increasing opts (vectorization, loop unrolling)
+// DuringAD is the same as above, but also runs the enzyme opt and autodiff passes.
+// PostAD will run all opts, including size increasing opts.
+#[derive(Debug, Eq, PartialEq)]
+pub(crate) enum AutodiffStage {
+    PreAD,
+    DuringAD,
+    PostAD,
+}
+
 pub(crate) unsafe fn llvm_optimize(
     cgcx: &CodegenContext<LlvmCodegenBackend>,
     dcx: DiagCtxtHandle<'_>,
@@ -537,7 +554,7 @@ pub(crate) unsafe fn llvm_optimize(
     config: &ModuleConfig,
     opt_level: config::OptLevel,
     opt_stage: llvm::OptStage,
-    skip_size_increasing_opts: bool,
+    autodiff_stage: AutodiffStage,
 ) -> Result<(), FatalError> {
     // Enzyme:
     // The whole point of compiler based AD is to differentiate optimized IR instead of unoptimized
@@ -550,12 +567,16 @@ pub(crate) unsafe fn llvm_optimize(
     let unroll_loops;
     let vectorize_slp;
     let vectorize_loop;
+    let run_enzyme = cfg!(llvm_enzyme) && autodiff_stage == AutodiffStage::DuringAD;
 
     // When we build rustc with enzyme/autodiff support, we want to postpone size-increasing
-    // optimizations until after differentiation. FIXME(ZuseZ4): Before shipping on nightly,
+    // optimizations until after differentiation. Our pipeline is thus: (opt + enzyme), (full opt).
+    // We therefore have two calls to llvm_optimize, if autodiff is used.
+    //
+    // FIXME(ZuseZ4): Before shipping on nightly,
     // we should make this more granular, or at least check that the user has at least one autodiff
     // call in their code, to justify altering the compilation pipeline.
-    if skip_size_increasing_opts && cfg!(llvm_enzyme) {
+    if cfg!(llvm_enzyme) && autodiff_stage != AutodiffStage::PostAD {
         unroll_loops = false;
         vectorize_slp = false;
         vectorize_loop = false;
@@ -565,7 +586,7 @@ pub(crate) unsafe fn llvm_optimize(
         vectorize_slp = config.vectorize_slp;
         vectorize_loop = config.vectorize_loop;
     }
-    trace!(?unroll_loops, ?vectorize_slp, ?vectorize_loop);
+    trace!(?unroll_loops, ?vectorize_slp, ?vectorize_loop, ?run_enzyme);
     let using_thin_buffers = opt_stage == llvm::OptStage::PreLinkThinLTO || config.bitcode_needed();
     let pgo_gen_path = get_pgo_gen_path(config);
     let pgo_use_path = get_pgo_use_path(config);
@@ -633,6 +654,7 @@ pub(crate) unsafe fn llvm_optimize(
             vectorize_loop,
             config.no_builtins,
             config.emit_lifetime_markers,
+            run_enzyme,
             sanitizer_options.as_ref(),
             pgo_gen_path.as_ref().map_or(std::ptr::null(), |s| s.as_ptr()),
             pgo_use_path.as_ref().map_or(std::ptr::null(), |s| s.as_ptr()),
@@ -661,7 +683,6 @@ pub(crate) unsafe fn optimize(
 ) -> Result<(), FatalError> {
     let _timer = cgcx.prof.generic_activity_with_arg("LLVM_module_optimize", &*module.name);
 
-    let llmod = module.module_llvm.llmod();
     let llcx = &*module.module_llvm.llcx;
     let _handlers = DiagnosticHandlers::new(cgcx, dcx, llcx, module, CodegenDiagnosticsStage::Opt);
 
@@ -670,8 +691,7 @@ pub(crate) unsafe fn optimize(
 
     if config.emit_no_opt_bc {
         let out = cgcx.output_filenames.temp_path_ext("no-opt.bc", module_name);
-        let out = path_to_c_string(&out);
-        unsafe { llvm::LLVMWriteBitcodeToFile(llmod, out.as_ptr()) };
+        write_bitcode_to_file(module, &out)
     }
 
     // FIXME(ZuseZ4): support SanitizeHWAddress and prevent illegal/unsupported opts
@@ -684,18 +704,14 @@ pub(crate) unsafe fn optimize(
             _ => llvm::OptStage::PreLinkNoLTO,
         };
 
-        // If we know that we will later run AD, then we disable vectorization and loop unrolling
-        let skip_size_increasing_opts = cfg!(llvm_enzyme);
+        // If we know that we will later run AD, then we disable vectorization and loop unrolling.
+        // Otherwise we pretend AD is already done and run the normal opt pipeline (=PostAD).
+        // FIXME(ZuseZ4): Make this more granular, only set PreAD if we actually have autodiff
+        // usages, not just if we build rustc with autodiff support.
+        let autodiff_stage =
+            if cfg!(llvm_enzyme) { AutodiffStage::PreAD } else { AutodiffStage::PostAD };
         return unsafe {
-            llvm_optimize(
-                cgcx,
-                dcx,
-                module,
-                config,
-                opt_level,
-                opt_stage,
-                skip_size_increasing_opts,
-            )
+            llvm_optimize(cgcx, dcx, module, config, opt_level, opt_stage, autodiff_stage)
         };
     }
     Ok(())
@@ -744,31 +760,6 @@ pub(crate) unsafe fn codegen(
             create_msvc_imps(cgcx, llcx, llmod);
         }
 
-        // A codegen-specific pass manager is used to generate object
-        // files for an LLVM module.
-        //
-        // Apparently each of these pass managers is a one-shot kind of
-        // thing, so we create a new one for each type of output. The
-        // pass manager passed to the closure should be ensured to not
-        // escape the closure itself, and the manager should only be
-        // used once.
-        unsafe fn with_codegen<'ll, F, R>(
-            tm: &'ll llvm::TargetMachine,
-            llmod: &'ll llvm::Module,
-            no_builtins: bool,
-            f: F,
-        ) -> R
-        where
-            F: FnOnce(&'ll mut PassManager<'ll>) -> R,
-        {
-            unsafe {
-                let cpm = llvm::LLVMCreatePassManager();
-                llvm::LLVMAddAnalysisPasses(tm, cpm);
-                llvm::LLVMRustAddLibraryInfo(cpm, llmod, no_builtins);
-                f(cpm)
-            }
-        }
-
         // Note that if object files are just LLVM bitcode we write bitcode,
         // copy it to the .o file, and delete the bitcode if it wasn't
         // otherwise requested.
@@ -887,21 +878,17 @@ pub(crate) unsafe fn codegen(
             } else {
                 llmod
             };
-            unsafe {
-                with_codegen(tm, llmod, config.no_builtins, |cpm| {
-                    write_output_file(
-                        dcx,
-                        tm,
-                        cpm,
-                        llmod,
-                        &path,
-                        None,
-                        llvm::FileType::AssemblyFile,
-                        &cgcx.prof,
-                        config.verify_llvm_ir,
-                    )
-                })?;
-            }
+            write_output_file(
+                dcx,
+                tm,
+                config.no_builtins,
+                llmod,
+                &path,
+                None,
+                llvm::FileType::AssemblyFile,
+                &cgcx.prof,
+                config.verify_llvm_ir,
+            )?;
         }
 
         match config.emit_obj {
@@ -925,21 +912,17 @@ pub(crate) unsafe fn codegen(
                     (_, SplitDwarfKind::Split) => Some(dwo_out.as_path()),
                 };
 
-                unsafe {
-                    with_codegen(tm, llmod, config.no_builtins, |cpm| {
-                        write_output_file(
-                            dcx,
-                            tm,
-                            cpm,
-                            llmod,
-                            &obj_out,
-                            dwo_out,
-                            llvm::FileType::ObjectFile,
-                            &cgcx.prof,
-                            config.verify_llvm_ir,
-                        )
-                    })?;
-                }
+                write_output_file(
+                    dcx,
+                    tm,
+                    config.no_builtins,
+                    llmod,
+                    &obj_out,
+                    dwo_out,
+                    llvm::FileType::ObjectFile,
+                    &cgcx.prof,
+                    config.verify_llvm_ir,
+                )?;
             }
 
             EmitObj::Bitcode => {
@@ -1066,24 +1049,18 @@ unsafe fn embed_bitcode(
         {
             // We don't need custom section flags, create LLVM globals.
             let llconst = common::bytes_in_context(llcx, bitcode);
-            let llglobal = llvm::LLVMAddGlobal(
-                llmod,
-                common::val_ty(llconst),
-                c"rustc.embedded.module".as_ptr(),
-            );
-            llvm::LLVMSetInitializer(llglobal, llconst);
+            let llglobal =
+                llvm::add_global(llmod, common::val_ty(llconst), c"rustc.embedded.module");
+            llvm::set_initializer(llglobal, llconst);
 
             llvm::set_section(llglobal, bitcode_section_name(cgcx));
             llvm::set_linkage(llglobal, llvm::Linkage::PrivateLinkage);
             llvm::LLVMSetGlobalConstant(llglobal, llvm::True);
 
             let llconst = common::bytes_in_context(llcx, cmdline.as_bytes());
-            let llglobal = llvm::LLVMAddGlobal(
-                llmod,
-                common::val_ty(llconst),
-                c"rustc.embedded.cmdline".as_ptr(),
-            );
-            llvm::LLVMSetInitializer(llglobal, llconst);
+            let llglobal =
+                llvm::add_global(llmod, common::val_ty(llconst), c"rustc.embedded.cmdline");
+            llvm::set_initializer(llglobal, llconst);
             let section = if cgcx.target_is_like_osx {
                 c"__LLVM,__cmdline"
             } else if cgcx.target_is_like_aix {
@@ -1123,31 +1100,29 @@ fn create_msvc_imps(
     // underscores added in front).
     let prefix = if cgcx.target_arch == "x86" { "\x01__imp__" } else { "\x01__imp_" };
 
-    unsafe {
-        let ptr_ty = Type::ptr_llcx(llcx);
-        let globals = base::iter_globals(llmod)
-            .filter(|&val| {
-                llvm::get_linkage(val) == llvm::Linkage::ExternalLinkage
-                    && llvm::LLVMIsDeclaration(val) == 0
-            })
-            .filter_map(|val| {
-                // Exclude some symbols that we know are not Rust symbols.
-                let name = llvm::get_value_name(val);
-                if ignored(name) { None } else { Some((val, name)) }
-            })
-            .map(move |(val, name)| {
-                let mut imp_name = prefix.as_bytes().to_vec();
-                imp_name.extend(name);
-                let imp_name = CString::new(imp_name).unwrap();
-                (imp_name, val)
-            })
-            .collect::<Vec<_>>();
+    let ptr_ty = Type::ptr_llcx(llcx);
+    let globals = base::iter_globals(llmod)
+        .filter(|&val| {
+            llvm::get_linkage(val) == llvm::Linkage::ExternalLinkage && !llvm::is_declaration(val)
+        })
+        .filter_map(|val| {
+            // Exclude some symbols that we know are not Rust symbols.
+            let name = llvm::get_value_name(val);
+            if ignored(name) { None } else { Some((val, name)) }
+        })
+        .map(move |(val, name)| {
+            let mut imp_name = prefix.as_bytes().to_vec();
+            imp_name.extend(name);
+            let imp_name = CString::new(imp_name).unwrap();
+            (imp_name, val)
+        })
+        .collect::<Vec<_>>();
 
-        for (imp_name, val) in globals {
-            let imp = llvm::LLVMAddGlobal(llmod, ptr_ty, imp_name.as_ptr());
-            llvm::LLVMSetInitializer(imp, val);
-            llvm::set_linkage(imp, llvm::Linkage::ExternalLinkage);
-        }
+    for (imp_name, val) in globals {
+        let imp = llvm::add_global(llmod, ptr_ty, &imp_name);
+
+        llvm::set_initializer(imp, val);
+        llvm::set_linkage(imp, llvm::Linkage::ExternalLinkage);
     }
 
     // Use this function to exclude certain symbols from `__imp` generation.
diff --git a/compiler/rustc_codegen_llvm/src/builder/autodiff.rs b/compiler/rustc_codegen_llvm/src/builder/autodiff.rs
index dd5e726160d..b2c1088e3fc 100644
--- a/compiler/rustc_codegen_llvm/src/builder/autodiff.rs
+++ b/compiler/rustc_codegen_llvm/src/builder/autodiff.rs
@@ -4,10 +4,9 @@ use rustc_ast::expand::autodiff_attrs::{AutoDiffAttrs, AutoDiffItem, DiffActivit
 use rustc_codegen_ssa::ModuleCodegen;
 use rustc_codegen_ssa::back::write::ModuleConfig;
 use rustc_errors::FatalError;
-use rustc_session::config::Lto;
 use tracing::{debug, trace};
 
-use crate::back::write::{llvm_err, llvm_optimize};
+use crate::back::write::llvm_err;
 use crate::builder::SBuilder;
 use crate::context::SimpleCx;
 use crate::declare::declare_simple_fn;
@@ -53,8 +52,6 @@ fn generate_enzyme_call<'ll>(
     let mut ad_name: String = match attrs.mode {
         DiffMode::Forward => "__enzyme_fwddiff",
         DiffMode::Reverse => "__enzyme_autodiff",
-        DiffMode::ForwardFirst => "__enzyme_fwddiff",
-        DiffMode::ReverseFirst => "__enzyme_autodiff",
         _ => panic!("logic bug in autodiff, unrecognized mode"),
     }
     .to_string();
@@ -153,7 +150,7 @@ fn generate_enzyme_call<'ll>(
             _ => {}
         }
 
-        trace!("matching autodiff arguments");
+        debug!("matching autodiff arguments");
         // We now handle the issue that Rust level arguments not always match the llvm-ir level
         // arguments. A slice, `&[f32]`, for example, is represented as a pointer and a length on
         // llvm-ir level. The number of activities matches the number of Rust level arguments, so we
@@ -164,10 +161,10 @@ fn generate_enzyme_call<'ll>(
         let mut activity_pos = 0;
         let outer_args: Vec<&llvm::Value> = get_params(outer_fn);
         while activity_pos < inputs.len() {
-            let activity = inputs[activity_pos as usize];
+            let diff_activity = inputs[activity_pos as usize];
             // Duplicated arguments received a shadow argument, into which enzyme will write the
             // gradient.
-            let (activity, duplicated): (&Metadata, bool) = match activity {
+            let (activity, duplicated): (&Metadata, bool) = match diff_activity {
                 DiffActivity::None => panic!("not a valid input activity"),
                 DiffActivity::Const => (enzyme_const, false),
                 DiffActivity::Active => (enzyme_out, false),
@@ -222,7 +219,15 @@ fn generate_enzyme_call<'ll>(
                     // A duplicated pointer will have the following two outer_fn arguments:
                     // (..., ptr, ptr, ...). We add the following llvm-ir to our __enzyme call:
                     // (..., metadata! enzyme_dup, ptr, ptr, ...).
-                    assert!(llvm::LLVMRustGetTypeKind(next_outer_ty) == llvm::TypeKind::Pointer);
+                    if matches!(
+                        diff_activity,
+                        DiffActivity::Duplicated | DiffActivity::DuplicatedOnly
+                    ) {
+                        assert!(
+                            llvm::LLVMRustGetTypeKind(next_outer_ty) == llvm::TypeKind::Pointer
+                        );
+                    }
+                    // In the case of Dual we don't have assumptions, e.g. f32 would be valid.
                     args.push(next_outer_arg);
                     outer_pos += 2;
                     activity_pos += 1;
@@ -277,7 +282,7 @@ pub(crate) fn differentiate<'ll>(
     module: &'ll ModuleCodegen<ModuleLlvm>,
     cgcx: &CodegenContext<LlvmCodegenBackend>,
     diff_items: Vec<AutoDiffItem>,
-    config: &ModuleConfig,
+    _config: &ModuleConfig,
 ) -> Result<(), FatalError> {
     for item in &diff_items {
         trace!("{}", item);
@@ -318,29 +323,6 @@ pub(crate) fn differentiate<'ll>(
 
     // FIXME(ZuseZ4): support SanitizeHWAddress and prevent illegal/unsupported opts
 
-    if let Some(opt_level) = config.opt_level {
-        let opt_stage = match cgcx.lto {
-            Lto::Fat => llvm::OptStage::PreLinkFatLTO,
-            Lto::Thin | Lto::ThinLocal => llvm::OptStage::PreLinkThinLTO,
-            _ if cgcx.opts.cg.linker_plugin_lto.enabled() => llvm::OptStage::PreLinkThinLTO,
-            _ => llvm::OptStage::PreLinkNoLTO,
-        };
-        // This is our second opt call, so now we run all opts,
-        // to make sure we get the best performance.
-        let skip_size_increasing_opts = false;
-        trace!("running Module Optimization after differentiation");
-        unsafe {
-            llvm_optimize(
-                cgcx,
-                diag_handler.handle(),
-                module,
-                config,
-                opt_level,
-                opt_stage,
-                skip_size_increasing_opts,
-            )?
-        };
-    }
     trace!("done with differentiate()");
 
     Ok(())
diff --git a/compiler/rustc_codegen_llvm/src/common.rs b/compiler/rustc_codegen_llvm/src/common.rs
index 8c94a46ebf3..78b3a7f8541 100644
--- a/compiler/rustc_codegen_llvm/src/common.rs
+++ b/compiler/rustc_codegen_llvm/src/common.rs
@@ -219,8 +219,8 @@ impl<'ll, 'tcx> ConstCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
                 let g = self.define_global(&sym, self.val_ty(sc)).unwrap_or_else(|| {
                     bug!("symbol `{}` is already defined", sym);
                 });
+                llvm::set_initializer(g, sc);
                 unsafe {
-                    llvm::LLVMSetInitializer(g, sc);
                     llvm::LLVMSetGlobalConstant(g, True);
                     llvm::LLVMSetUnnamedAddress(g, llvm::UnnamedAddr::Global);
                 }
diff --git a/compiler/rustc_codegen_llvm/src/consts.rs b/compiler/rustc_codegen_llvm/src/consts.rs
index c6855dd42e5..4a5491ec7a1 100644
--- a/compiler/rustc_codegen_llvm/src/consts.rs
+++ b/compiler/rustc_codegen_llvm/src/consts.rs
@@ -191,7 +191,7 @@ fn check_and_apply_linkage<'ll, 'tcx>(
             })
         });
         llvm::set_linkage(g2, llvm::Linkage::InternalLinkage);
-        unsafe { llvm::LLVMSetInitializer(g2, g1) };
+        llvm::set_initializer(g2, g1);
         g2
     } else if cx.tcx.sess.target.arch == "x86"
         && common::is_mingw_gnu_toolchain(&cx.tcx.sess.target)
@@ -235,7 +235,7 @@ impl<'ll> CodegenCx<'ll, '_> {
             }
             _ => self.define_private_global(self.val_ty(cv)),
         };
-        unsafe { llvm::LLVMSetInitializer(gv, cv) };
+        llvm::set_initializer(gv, cv);
         set_global_alignment(self, gv, align);
         llvm::SetUnnamedAddress(gv, llvm::UnnamedAddr::Global);
         gv
@@ -458,7 +458,7 @@ impl<'ll> CodegenCx<'ll, '_> {
                 new_g
             };
             set_global_alignment(self, g, alloc.align);
-            llvm::LLVMSetInitializer(g, v);
+            llvm::set_initializer(g, v);
 
             if self.should_assume_dso_local(g, true) {
                 llvm::LLVMRustSetDSOLocal(g, true);
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
index ba4fd75fb94..7fe527a4c07 100644
--- a/compiler/rustc_codegen_llvm/src/context.rs
+++ b/compiler/rustc_codegen_llvm/src/context.rs
@@ -616,12 +616,10 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
     pub(crate) fn create_used_variable_impl(&self, name: &'static CStr, values: &[&'ll Value]) {
         let array = self.const_array(self.type_ptr(), values);
 
-        unsafe {
-            let g = llvm::LLVMAddGlobal(self.llmod, self.val_ty(array), name.as_ptr());
-            llvm::LLVMSetInitializer(g, array);
-            llvm::set_linkage(g, llvm::Linkage::AppendingLinkage);
-            llvm::set_section(g, c"llvm.metadata");
-        }
+        let g = llvm::add_global(self.llmod, self.val_ty(array), name);
+        llvm::set_initializer(g, array);
+        llvm::set_linkage(g, llvm::Linkage::AppendingLinkage);
+        llvm::set_section(g, c"llvm.metadata");
     }
 }
 impl<'ll> SimpleCx<'ll> {
diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs b/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs
index 2c9f1cda13a..54c5d445f66 100644
--- a/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs
+++ b/compiler/rustc_codegen_llvm/src/debuginfo/gdb.rs
@@ -73,7 +73,7 @@ pub(crate) fn get_or_insert_gdb_debug_scripts_section_global<'ll>(
                 .define_global(section_var_name, llvm_type)
                 .unwrap_or_else(|| bug!("symbol `{}` is already defined", section_var_name));
             llvm::set_section(section_var, c".debug_gdb_scripts");
-            llvm::LLVMSetInitializer(section_var, cx.const_bytes(section_contents));
+            llvm::set_initializer(section_var, cx.const_bytes(section_contents));
             llvm::LLVMSetGlobalConstant(section_var, llvm::True);
             llvm::LLVMSetUnnamedAddress(section_var, llvm::UnnamedAddr::Global);
             llvm::set_linkage(section_var, llvm::Linkage::LinkOnceODRLinkage);
diff --git a/compiler/rustc_codegen_llvm/src/declare.rs b/compiler/rustc_codegen_llvm/src/declare.rs
index bdc83267cca..cebceef1b93 100644
--- a/compiler/rustc_codegen_llvm/src/declare.rs
+++ b/compiler/rustc_codegen_llvm/src/declare.rs
@@ -235,7 +235,7 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
     /// name.
     pub(crate) fn get_defined_value(&self, name: &str) -> Option<&'ll Value> {
         self.get_declared_value(name).and_then(|val| {
-            let declaration = unsafe { llvm::LLVMIsDeclaration(val) != 0 };
+            let declaration = llvm::is_declaration(val);
             if !declaration { Some(val) } else { None }
         })
     }
diff --git a/compiler/rustc_codegen_llvm/src/intrinsic.rs b/compiler/rustc_codegen_llvm/src/intrinsic.rs
index 3200c94d977..8b976885904 100644
--- a/compiler/rustc_codegen_llvm/src/intrinsic.rs
+++ b/compiler/rustc_codegen_llvm/src/intrinsic.rs
@@ -824,7 +824,7 @@ fn codegen_msvc_try<'ll>(
         if bx.cx.tcx.sess.target.supports_comdat() {
             llvm::SetUniqueComdat(bx.llmod, tydesc);
         }
-        unsafe { llvm::LLVMSetInitializer(tydesc, type_info) };
+        llvm::set_initializer(tydesc, type_info);
 
         // The flag value of 8 indicates that we are catching the exception by
         // reference instead of by value. We can't use catch by value because
diff --git a/compiler/rustc_codegen_llvm/src/lib.rs b/compiler/rustc_codegen_llvm/src/lib.rs
index f0d04b2b644..bcb1cc72b56 100644
--- a/compiler/rustc_codegen_llvm/src/lib.rs
+++ b/compiler/rustc_codegen_llvm/src/lib.rs
@@ -30,7 +30,7 @@ use std::mem::ManuallyDrop;
 use back::owned_target_machine::OwnedTargetMachine;
 use back::write::{create_informational_target_machine, create_target_machine};
 use errors::{AutoDiffWithoutLTO, ParseTargetMachineConfig};
-pub use llvm_util::target_features_cfg;
+pub(crate) use llvm_util::target_features_cfg;
 use rustc_ast::expand::allocator::AllocatorKind;
 use rustc_ast::expand::autodiff_attrs::AutoDiffItem;
 use rustc_codegen_ssa::back::lto::{LtoModuleCodegen, SerializedModule, ThinModule};
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
index 50a40c9c309..441d144ce50 100644
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
@@ -2359,7 +2359,7 @@ unsafe extern "C" {
     );
     pub fn LLVMRustWriteOutputFile<'a>(
         T: &'a TargetMachine,
-        PM: &PassManager<'a>,
+        PM: *mut PassManager<'a>,
         M: &'a Module,
         Output: *const c_char,
         DwoOutput: *const c_char,
@@ -2382,6 +2382,7 @@ unsafe extern "C" {
         LoopVectorize: bool,
         DisableSimplifyLibCalls: bool,
         EmitLifetimeMarkers: bool,
+        RunEnzyme: bool,
         SanitizerOptions: Option<&SanitizerOptions>,
         PGOGenPath: *const c_char,
         PGOUsePath: *const c_char,
diff --git a/compiler/rustc_codegen_llvm/src/llvm/mod.rs b/compiler/rustc_codegen_llvm/src/llvm/mod.rs
index 707aeba22cc..7becba4ccd4 100644
--- a/compiler/rustc_codegen_llvm/src/llvm/mod.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm/mod.rs
@@ -241,6 +241,10 @@ pub fn set_linkage(llglobal: &Value, linkage: Linkage) {
     }
 }
 
+pub fn is_declaration(llglobal: &Value) -> bool {
+    unsafe { LLVMIsDeclaration(llglobal) == ffi::True }
+}
+
 pub fn get_visibility(llglobal: &Value) -> Visibility {
     unsafe { LLVMGetVisibility(llglobal) }.to_rust()
 }
diff --git a/compiler/rustc_codegen_llvm/src/llvm_util.rs b/compiler/rustc_codegen_llvm/src/llvm_util.rs
index 53611c746a7..b4b5d6a5b19 100644
--- a/compiler/rustc_codegen_llvm/src/llvm_util.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm_util.rs
@@ -271,6 +271,7 @@ pub(crate) fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> Option<LLVMFea
         ("aarch64", "fp16") => Some(LLVMFeature::new("fullfp16")),
         // Filter out features that are not supported by the current LLVM version
         ("aarch64", "fpmr") if get_version().0 != 18 => None,
+        ("arm", "fp16") => Some(LLVMFeature::new("fullfp16")),
         // In LLVM 18, `unaligned-scalar-mem` was merged with `unaligned-vector-mem` into a single
         // feature called `fast-unaligned-access`. In LLVM 19, it was split back out.
         ("riscv32" | "riscv64", "unaligned-scalar-mem") if get_version().0 == 18 => {
@@ -303,7 +304,7 @@ pub(crate) fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> Option<LLVMFea
 /// Must express features in the way Rust understands them.
 ///
 /// We do not have to worry about RUSTC_SPECIFIC_FEATURES here, those are handled outside codegen.
-pub fn target_features_cfg(sess: &Session, allow_unstable: bool) -> Vec<Symbol> {
+pub(crate) fn target_features_cfg(sess: &Session, allow_unstable: bool) -> Vec<Symbol> {
     let mut features: FxHashSet<Symbol> = Default::default();
 
     // Add base features for the target.
diff --git a/compiler/rustc_codegen_llvm/src/type_.rs b/compiler/rustc_codegen_llvm/src/type_.rs
index 34cede54aaf..d61ce417562 100644
--- a/compiler/rustc_codegen_llvm/src/type_.rs
+++ b/compiler/rustc_codegen_llvm/src/type_.rs
@@ -237,11 +237,11 @@ impl<'ll, 'tcx> BaseTypeCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
 
 impl Type {
     /// Creates an integer type with the given number of bits, e.g., i24
-    pub fn ix_llcx(llcx: &llvm::Context, num_bits: u64) -> &Type {
+    pub(crate) fn ix_llcx(llcx: &llvm::Context, num_bits: u64) -> &Type {
         unsafe { llvm::LLVMIntTypeInContext(llcx, num_bits as c_uint) }
     }
 
-    pub fn ptr_llcx(llcx: &llvm::Context) -> &Type {
+    pub(crate) fn ptr_llcx(llcx: &llvm::Context) -> &Type {
         unsafe { llvm::LLVMPointerTypeInContext(llcx, AddressSpace::DATA.0) }
     }
 }
diff --git a/compiler/rustc_codegen_ssa/src/codegen_attrs.rs b/compiler/rustc_codegen_ssa/src/codegen_attrs.rs
index 7acdbd19993..1d8f61806f5 100644
--- a/compiler/rustc_codegen_ssa/src/codegen_attrs.rs
+++ b/compiler/rustc_codegen_ssa/src/codegen_attrs.rs
@@ -1,5 +1,6 @@
 use std::str::FromStr;
 
+use rustc_abi::ExternAbi;
 use rustc_ast::attr::list_contains_name;
 use rustc_ast::expand::autodiff_attrs::{
     AutoDiffAttrs, DiffActivity, DiffMode, valid_input_activity, valid_ret_activity,
@@ -23,7 +24,7 @@ use rustc_middle::ty::{self as ty, TyCtxt};
 use rustc_session::parse::feature_err;
 use rustc_session::{Session, lint};
 use rustc_span::{Ident, Span, sym};
-use rustc_target::spec::{SanitizerSet, abi};
+use rustc_target::spec::SanitizerSet;
 use tracing::debug;
 
 use crate::errors;
@@ -219,7 +220,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs {
 
                 if !is_closure
                     && let Some(fn_sig) = fn_sig()
-                    && fn_sig.skip_binder().abi() != abi::Abi::Rust
+                    && fn_sig.skip_binder().abi() != ExternAbi::Rust
                 {
                     struct_span_code_err!(
                         tcx.dcx(),
@@ -914,8 +915,6 @@ fn autodiff_attrs(tcx: TyCtxt<'_>, id: DefId) -> Option<AutoDiffAttrs> {
     let mode = match mode.as_str() {
         "Forward" => DiffMode::Forward,
         "Reverse" => DiffMode::Reverse,
-        "ForwardFirst" => DiffMode::ForwardFirst,
-        "ReverseFirst" => DiffMode::ReverseFirst,
         _ => {
             span_bug!(mode.span, "rustc_autodiff attribute contains invalid mode");
         }
diff --git a/compiler/rustc_const_eval/src/errors.rs b/compiler/rustc_const_eval/src/errors.rs
index 8df9877cabc..c08495c012f 100644
--- a/compiler/rustc_const_eval/src/errors.rs
+++ b/compiler/rustc_const_eval/src/errors.rs
@@ -16,7 +16,6 @@ use rustc_middle::mir::interpret::{
 };
 use rustc_middle::ty::{self, Mutability, Ty};
 use rustc_span::{Span, Symbol};
-use rustc_target::callconv::AdjustForForeignAbiError;
 
 use crate::interpret::InternKind;
 
@@ -936,9 +935,6 @@ impl<'tcx> ReportErrorExt for InvalidProgramInfo<'tcx> {
             InvalidProgramInfo::TooGeneric => const_eval_too_generic,
             InvalidProgramInfo::AlreadyReported(_) => const_eval_already_reported,
             InvalidProgramInfo::Layout(e) => e.diagnostic_message(),
-            InvalidProgramInfo::FnAbiAdjustForForeignAbi(_) => {
-                rustc_middle::error::middle_adjust_for_foreign_abi_error
-            }
         }
     }
     fn add_args<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
@@ -953,12 +949,6 @@ impl<'tcx> ReportErrorExt for InvalidProgramInfo<'tcx> {
                 }
                 dummy_diag.cancel();
             }
-            InvalidProgramInfo::FnAbiAdjustForForeignAbi(
-                AdjustForForeignAbiError::Unsupported { arch, abi },
-            ) => {
-                diag.arg("arch", arch);
-                diag.arg("abi", abi.name());
-            }
         }
     }
 }
diff --git a/compiler/rustc_const_eval/src/interpret/eval_context.rs b/compiler/rustc_const_eval/src/interpret/eval_context.rs
index 95a72d3cbc1..66a75113652 100644
--- a/compiler/rustc_const_eval/src/interpret/eval_context.rs
+++ b/compiler/rustc_const_eval/src/interpret/eval_context.rs
@@ -106,9 +106,6 @@ impl<'tcx, M: Machine<'tcx>> FnAbiOfHelpers<'tcx> for InterpCx<'tcx, M> {
     ) -> InterpErrorKind<'tcx> {
         match err {
             FnAbiError::Layout(err) => err_inval!(Layout(err)),
-            FnAbiError::AdjustForForeignAbi(err) => {
-                err_inval!(FnAbiAdjustForForeignAbi(err))
-            }
         }
     }
 }
diff --git a/compiler/rustc_const_eval/src/interpret/util.rs b/compiler/rustc_const_eval/src/interpret/util.rs
index eb98e3b5380..ba579e25f03 100644
--- a/compiler/rustc_const_eval/src/interpret/util.rs
+++ b/compiler/rustc_const_eval/src/interpret/util.rs
@@ -1,12 +1,8 @@
-use std::ops::ControlFlow;
-
 use rustc_hir::def_id::LocalDefId;
 use rustc_middle::mir;
 use rustc_middle::mir::interpret::{AllocInit, Allocation, InterpResult, Pointer};
 use rustc_middle::ty::layout::TyAndLayout;
-use rustc_middle::ty::{
-    self, Ty, TyCtxt, TypeSuperVisitable, TypeVisitable, TypeVisitableExt, TypeVisitor,
-};
+use rustc_middle::ty::{TyCtxt, TypeVisitable, TypeVisitableExt};
 use tracing::debug;
 
 use super::{InterpCx, MPlaceTy, MemoryKind, interp_ok, throw_inval};
@@ -20,44 +16,10 @@ where
     T: TypeVisitable<TyCtxt<'tcx>>,
 {
     debug!("ensure_monomorphic_enough: ty={:?}", ty);
-    if !ty.has_param() {
-        return interp_ok(());
-    }
-
-    struct FoundParam;
-    struct UsedParamsNeedInstantiationVisitor {}
-
-    impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for UsedParamsNeedInstantiationVisitor {
-        type Result = ControlFlow<FoundParam>;
-
-        fn visit_ty(&mut self, ty: Ty<'tcx>) -> Self::Result {
-            if !ty.has_param() {
-                return ControlFlow::Continue(());
-            }
-
-            match *ty.kind() {
-                ty::Param(_) => ControlFlow::Break(FoundParam),
-                ty::Closure(..) | ty::CoroutineClosure(..) | ty::Coroutine(..) | ty::FnDef(..) => {
-                    ControlFlow::Continue(())
-                }
-                _ => ty.super_visit_with(self),
-            }
-        }
-
-        fn visit_const(&mut self, c: ty::Const<'tcx>) -> Self::Result {
-            match c.kind() {
-                ty::ConstKind::Param(..) => ControlFlow::Break(FoundParam),
-                _ => c.super_visit_with(self),
-            }
-        }
-    }
-
-    let mut vis = UsedParamsNeedInstantiationVisitor {};
-    if matches!(ty.visit_with(&mut vis), ControlFlow::Break(FoundParam)) {
+    if ty.has_param() {
         throw_inval!(TooGeneric);
-    } else {
-        interp_ok(())
     }
+    interp_ok(())
 }
 
 impl<'tcx> InterpretationResult<'tcx> for mir::interpret::ConstAllocation<'tcx> {
diff --git a/compiler/rustc_driver_impl/Cargo.toml b/compiler/rustc_driver_impl/Cargo.toml
index 07b88e59723..0b45e5786e8 100644
--- a/compiler/rustc_driver_impl/Cargo.toml
+++ b/compiler/rustc_driver_impl/Cargo.toml
@@ -5,6 +5,7 @@ edition = "2021"
 
 [dependencies]
 # tidy-alphabetical-start
+rustc_abi = { path = "../rustc_abi" }
 rustc_ast = { path = "../rustc_ast" }
 rustc_ast_lowering = { path = "../rustc_ast_lowering" }
 rustc_ast_passes = { path = "../rustc_ast_passes" }
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs
index 4c47ce93dd5..6efd11a8c3c 100644
--- a/compiler/rustc_driver_impl/src/lib.rs
+++ b/compiler/rustc_driver_impl/src/lib.rs
@@ -747,7 +747,7 @@ fn print_crate_info(
                 }
             }
             CallingConventions => {
-                let mut calling_conventions = rustc_target::spec::abi::all_names();
+                let mut calling_conventions = rustc_abi::all_names();
                 calling_conventions.sort_unstable();
                 println_info!("{}", calling_conventions.join("\n"));
             }
diff --git a/compiler/rustc_error_codes/src/error_codes/E0802.md b/compiler/rustc_error_codes/src/error_codes/E0802.md
new file mode 100644
index 00000000000..59061ff0435
--- /dev/null
+++ b/compiler/rustc_error_codes/src/error_codes/E0802.md
@@ -0,0 +1,94 @@
+The target of `derive(CoercePointee)` macro has inadmissible specification for
+a meaningful use.
+
+Erroneous code examples:
+
+The target data is not a `struct`.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+enum NotStruct<'a, T: ?Sized> {
+    Variant(&'a T),
+}
+```
+
+The target data has a layout that is not transparent, or `repr(transparent)`
+in other words.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+struct NotTransparent<'a, #[pointee] T: ?Sized> {
+    ptr: &'a T,
+}
+```
+
+The target data has no data field.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+#[repr(transparent)]
+struct NoField<'a, #[pointee] T: ?Sized> {}
+```
+
+The target data is not generic over any data, or has no generic type parameter.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+#[repr(transparent)]
+struct NoGeneric<'a>(&'a u8);
+```
+
+The target data has multiple generic type parameters, but none is designated as
+a pointee for coercion.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+#[repr(transparent)]
+struct AmbiguousPointee<'a, T1: ?Sized, T2: ?Sized> {
+    a: (&'a T1, &'a T2),
+}
+```
+
+The target data has multiple generic type parameters that are designated as
+pointees for coercion.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+#[repr(transparent)]
+struct TooManyPointees<
+    'a,
+    #[pointee] A: ?Sized,
+    #[pointee] B: ?Sized>
+((&'a A, &'a B));
+```
+
+The type parameter that is designated as a pointee is not marked `?Sized`.
+
+```compile_fail,E0802
+#![feature(coerce_pointee)]
+use std::marker::CoercePointee;
+#[derive(CoercePointee)]
+#[repr(transparent)]
+struct NoMaybeSized<'a, #[pointee] T> {
+    ptr: &'a T,
+}
+```
+
+In summary, the `CoercePointee` macro demands the type to be a `struct` that is
+generic over at least one type or over more types, one of which is marked with
+`#[pointee]`, and has at least one data field and adopts a `repr(transparent)`
+layout.
+The only generic type or the type marked with `#[pointee]` has to be also
+marked as `?Sized`.
diff --git a/compiler/rustc_error_codes/src/lib.rs b/compiler/rustc_error_codes/src/lib.rs
index 0a30bdb48a0..e970b16f610 100644
--- a/compiler/rustc_error_codes/src/lib.rs
+++ b/compiler/rustc_error_codes/src/lib.rs
@@ -545,6 +545,7 @@ E0798: 0798,
 E0799: 0799,
 E0800: 0800,
 E0801: 0801,
+E0802: 0802,
         );
     )
 }
diff --git a/compiler/rustc_errors/src/diagnostic_impls.rs b/compiler/rustc_errors/src/diagnostic_impls.rs
index d179396398f..14baf7554bc 100644
--- a/compiler/rustc_errors/src/diagnostic_impls.rs
+++ b/compiler/rustc_errors/src/diagnostic_impls.rs
@@ -108,13 +108,13 @@ impl<I: rustc_type_ir::Interner> IntoDiagArg for rustc_type_ir::ExistentialTrait
 }
 
 impl<I: rustc_type_ir::Interner> IntoDiagArg for rustc_type_ir::UnevaluatedConst<I> {
-    fn into_diag_arg(self) -> rustc_errors::DiagArgValue {
+    fn into_diag_arg(self) -> DiagArgValue {
         format!("{self:?}").into_diag_arg()
     }
 }
 
 impl<I: rustc_type_ir::Interner> IntoDiagArg for rustc_type_ir::FnSig<I> {
-    fn into_diag_arg(self) -> rustc_errors::DiagArgValue {
+    fn into_diag_arg(self) -> DiagArgValue {
         format!("{self:?}").into_diag_arg()
     }
 }
diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs
index 15cf285e7ff..4824dc098ad 100644
--- a/compiler/rustc_errors/src/emitter.rs
+++ b/compiler/rustc_errors/src/emitter.rs
@@ -1982,7 +1982,7 @@ impl HumanEmitter {
         {
             debug!(?complete, ?parts, ?highlights);
 
-            let has_deletion = parts.iter().any(|p| p.is_deletion(sm));
+            let has_deletion = parts.iter().any(|p| p.is_deletion(sm) || p.is_replacement(sm));
             let is_multiline = complete.lines().count() > 1;
 
             if i == 0 {
diff --git a/compiler/rustc_expand/src/build.rs b/compiler/rustc_expand/src/build.rs
index 046213b5a6a..ee7f68cc2f0 100644
--- a/compiler/rustc_expand/src/build.rs
+++ b/compiler/rustc_expand/src/build.rs
@@ -1,7 +1,8 @@
 use rustc_ast::ptr::P;
 use rustc_ast::util::literal;
 use rustc_ast::{
-    self as ast, AttrVec, BlockCheckMode, Expr, LocalKind, MatchKind, PatKind, UnOp, attr, token,
+    self as ast, AnonConst, AttrVec, BlockCheckMode, Expr, LocalKind, MatchKind, PatKind, UnOp,
+    attr, token,
 };
 use rustc_span::source_map::Spanned;
 use rustc_span::{DUMMY_SP, Ident, Span, Symbol, kw, sym};
@@ -138,6 +139,42 @@ impl<'a> ExtCtxt<'a> {
         }
     }
 
+    pub fn lifetime_param(
+        &self,
+        span: Span,
+        ident: Ident,
+        bounds: ast::GenericBounds,
+    ) -> ast::GenericParam {
+        ast::GenericParam {
+            id: ast::DUMMY_NODE_ID,
+            ident: ident.with_span_pos(span),
+            attrs: AttrVec::new(),
+            bounds,
+            is_placeholder: false,
+            kind: ast::GenericParamKind::Lifetime,
+            colon_span: None,
+        }
+    }
+
+    pub fn const_param(
+        &self,
+        span: Span,
+        ident: Ident,
+        bounds: ast::GenericBounds,
+        ty: P<ast::Ty>,
+        default: Option<AnonConst>,
+    ) -> ast::GenericParam {
+        ast::GenericParam {
+            id: ast::DUMMY_NODE_ID,
+            ident: ident.with_span_pos(span),
+            attrs: AttrVec::new(),
+            bounds,
+            is_placeholder: false,
+            kind: ast::GenericParamKind::Const { ty, kw_span: DUMMY_SP, default },
+            colon_span: None,
+        }
+    }
+
     pub fn trait_ref(&self, path: ast::Path) -> ast::TraitRef {
         ast::TraitRef { path, ref_id: ast::DUMMY_NODE_ID }
     }
diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs
index 3a2e810dc6a..a4c5e4800eb 100644
--- a/compiler/rustc_feature/src/unstable.rs
+++ b/compiler/rustc_feature/src/unstable.rs
@@ -513,6 +513,8 @@ declare_features! (
     (incomplete, generic_const_exprs, "1.56.0", Some(76560)),
     /// Allows generic parameters and where-clauses on free & associated const items.
     (incomplete, generic_const_items, "1.73.0", Some(113521)),
+    /// Allows any generic constants being used as pattern type range ends
+    (incomplete, generic_pattern_types, "CURRENT_RUSTC_VERSION", Some(136574)),
     /// Allows registering static items globally, possibly across crates, to iterate over at runtime.
     (unstable, global_registration, "1.80.0", Some(125119)),
     /// Allows using guards in patterns.
diff --git a/compiler/rustc_hir/src/lang_items.rs b/compiler/rustc_hir/src/lang_items.rs
index b6689c95c4b..1852987b167 100644
--- a/compiler/rustc_hir/src/lang_items.rs
+++ b/compiler/rustc_hir/src/lang_items.rs
@@ -370,6 +370,8 @@ language_item_table! {
 
     PointerLike,             sym::pointer_like,        pointer_like,               Target::Trait,          GenericRequirement::Exact(0);
 
+    CoercePointeeValidated, sym::coerce_pointee_validated, coerce_pointee_validated_trait, Target::Trait,     GenericRequirement::Exact(0);
+
     ConstParamTy,            sym::const_param_ty,      const_param_ty_trait,       Target::Trait,          GenericRequirement::Exact(0);
     UnsizedConstParamTy,     sym::unsized_const_param_ty, unsized_const_param_ty_trait, Target::Trait, GenericRequirement::Exact(0);
 
@@ -429,9 +431,13 @@ language_item_table! {
     ContractCheckRequires,     sym::contract_check_requires,      contract_check_requires_fn,      Target::Fn, GenericRequirement::None;
 }
 
+/// The requirement imposed on the generics of a lang item
 pub enum GenericRequirement {
+    /// No restriction on the generics
     None,
+    /// A minimum number of generics that is demanded on a lang item
     Minimum(usize),
+    /// The number of generics must match precisely as stipulated
     Exact(usize),
 }
 
diff --git a/compiler/rustc_hir_analysis/messages.ftl b/compiler/rustc_hir_analysis/messages.ftl
index c28c1afcfe6..258267c5ca9 100644
--- a/compiler/rustc_hir_analysis/messages.ftl
+++ b/compiler/rustc_hir_analysis/messages.ftl
@@ -85,6 +85,16 @@ hir_analysis_cmse_output_stack_spill =
     .note1 = functions with the `"{$abi_name}"` ABI must pass their result via the available return registers
     .note2 = the result must either be a (transparently wrapped) i64, u64 or f64, or be at most 4 bytes in size
 
+hir_analysis_coerce_pointee_no_field = `CoercePointee` can only be derived on `struct`s with at least one field
+
+hir_analysis_coerce_pointee_no_user_validity_assertion = asserting applicability of `derive(CoercePointee)` on a target data is forbidden
+
+hir_analysis_coerce_pointee_not_concrete_ty = `derive(CoercePointee)` is only applicable to `struct`
+
+hir_analysis_coerce_pointee_not_struct = `derive(CoercePointee)` is only applicable to `struct`, instead of `{$kind}`
+
+hir_analysis_coerce_pointee_not_transparent = `derive(CoercePointee)` is only applicable to `struct` with `repr(transparent)` layout
+
 hir_analysis_coerce_unsized_may = the trait `{$trait_name}` may only be implemented for a coercion between structures
 
 hir_analysis_coerce_unsized_multi = implementing the trait `CoerceUnsized` requires multiple coercions
diff --git a/compiler/rustc_hir_analysis/src/coherence/builtin.rs b/compiler/rustc_hir_analysis/src/coherence/builtin.rs
index 66082f4c282..9da57c330c5 100644
--- a/compiler/rustc_hir_analysis/src/coherence/builtin.rs
+++ b/compiler/rustc_hir_analysis/src/coherence/builtin.rs
@@ -48,6 +48,10 @@ pub(super) fn check_trait<'tcx>(
     checker
         .check(lang_items.dispatch_from_dyn_trait(), visit_implementation_of_dispatch_from_dyn)?;
     checker.check(lang_items.pointer_like(), visit_implementation_of_pointer_like)?;
+    checker.check(
+        lang_items.coerce_pointee_validated_trait(),
+        visit_implementation_of_coerce_pointee_validity,
+    )?;
     Ok(())
 }
 
@@ -783,3 +787,32 @@ fn visit_implementation_of_pointer_like(checker: &Checker<'_>) -> Result<(), Err
         .with_note(why_disqualified)
         .emit())
 }
+
+fn visit_implementation_of_coerce_pointee_validity(
+    checker: &Checker<'_>,
+) -> Result<(), ErrorGuaranteed> {
+    let tcx = checker.tcx;
+    let self_ty = tcx.impl_trait_ref(checker.impl_def_id).unwrap().instantiate_identity().self_ty();
+    let span = tcx.def_span(checker.impl_def_id);
+    if !tcx.is_builtin_derived(checker.impl_def_id.into()) {
+        return Err(tcx.dcx().emit_err(errors::CoercePointeeNoUserValidityAssertion { span }));
+    }
+    let ty::Adt(def, _args) = self_ty.kind() else {
+        return Err(tcx.dcx().emit_err(errors::CoercePointeeNotConcreteType { span }));
+    };
+    let did = def.did();
+    // Now get a more precise span of the `struct`.
+    let span = tcx.def_span(did);
+    if !def.is_struct() {
+        return Err(tcx
+            .dcx()
+            .emit_err(errors::CoercePointeeNotStruct { span, kind: def.descr().into() }));
+    }
+    if !def.repr().transparent() {
+        return Err(tcx.dcx().emit_err(errors::CoercePointeeNotTransparent { span }));
+    }
+    if def.all_fields().next().is_none() {
+        return Err(tcx.dcx().emit_err(errors::CoercePointeeNoField { span }));
+    }
+    Ok(())
+}
diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs
index ce7319f6561..12623779956 100644
--- a/compiler/rustc_hir_analysis/src/collect.rs
+++ b/compiler/rustc_hir_analysis/src/collect.rs
@@ -614,9 +614,10 @@ impl<'tcx> HirTyLowerer<'tcx> for ItemCtxt<'tcx> {
             if !infer_replacements.is_empty() {
                 diag.multipart_suggestion(
                     format!(
-                    "try replacing `_` with the type{} in the corresponding trait method signature",
-                    rustc_errors::pluralize!(infer_replacements.len()),
-                ),
+                        "try replacing `_` with the type{} in the corresponding trait method \
+                         signature",
+                        rustc_errors::pluralize!(infer_replacements.len()),
+                    ),
                     infer_replacements,
                     Applicability::MachineApplicable,
                 );
diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs
index 9769be30226..12750543f4b 100644
--- a/compiler/rustc_hir_analysis/src/errors.rs
+++ b/compiler/rustc_hir_analysis/src/errors.rs
@@ -1181,6 +1181,42 @@ pub(crate) struct DispatchFromDynRepr {
 }
 
 #[derive(Diagnostic)]
+#[diag(hir_analysis_coerce_pointee_not_struct, code = E0802)]
+pub(crate) struct CoercePointeeNotStruct {
+    #[primary_span]
+    pub span: Span,
+    pub kind: String,
+}
+
+#[derive(Diagnostic)]
+#[diag(hir_analysis_coerce_pointee_not_concrete_ty, code = E0802)]
+pub(crate) struct CoercePointeeNotConcreteType {
+    #[primary_span]
+    pub span: Span,
+}
+
+#[derive(Diagnostic)]
+#[diag(hir_analysis_coerce_pointee_no_user_validity_assertion, code = E0802)]
+pub(crate) struct CoercePointeeNoUserValidityAssertion {
+    #[primary_span]
+    pub span: Span,
+}
+
+#[derive(Diagnostic)]
+#[diag(hir_analysis_coerce_pointee_not_transparent, code = E0802)]
+pub(crate) struct CoercePointeeNotTransparent {
+    #[primary_span]
+    pub span: Span,
+}
+
+#[derive(Diagnostic)]
+#[diag(hir_analysis_coerce_pointee_no_field, code = E0802)]
+pub(crate) struct CoercePointeeNoField {
+    #[primary_span]
+    pub span: Span,
+}
+
+#[derive(Diagnostic)]
 #[diag(hir_analysis_inherent_ty_outside_relevant, code = E0390)]
 #[help]
 pub(crate) struct InherentTyOutsideRelevant {
diff --git a/compiler/rustc_hir_analysis/src/hir_ty_lowering/errors.rs b/compiler/rustc_hir_analysis/src/hir_ty_lowering/errors.rs
index 79aa2f4b8cc..7eb982a3179 100644
--- a/compiler/rustc_hir_analysis/src/hir_ty_lowering/errors.rs
+++ b/compiler/rustc_hir_analysis/src/hir_ty_lowering/errors.rs
@@ -6,7 +6,7 @@ use rustc_errors::{
     Applicability, Diag, ErrorGuaranteed, MultiSpan, listify, pluralize, struct_span_code_err,
 };
 use rustc_hir as hir;
-use rustc_hir::def::{DefKind, Res};
+use rustc_hir::def::{CtorOf, DefKind, Res};
 use rustc_hir::def_id::DefId;
 use rustc_middle::bug;
 use rustc_middle::ty::fast_reject::{TreatParams, simplify_type};
@@ -1027,7 +1027,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
         &self,
         segments: impl Iterator<Item = &'a hir::PathSegment<'a>> + Clone,
         args_visitors: impl Iterator<Item = &'a hir::GenericArg<'a>> + Clone,
-        err_extend: GenericsArgsErrExtend<'_>,
+        err_extend: GenericsArgsErrExtend<'a>,
     ) -> ErrorGuaranteed {
         #[derive(PartialEq, Eq, Hash)]
         enum ProhibitGenericsArg {
@@ -1047,23 +1047,24 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
             };
         });
 
+        let segments: Vec<_> = segments.collect();
         let types_and_spans: Vec<_> = segments
-            .clone()
+            .iter()
             .flat_map(|segment| {
                 if segment.args().args.is_empty() {
                     None
                 } else {
                     Some((
                         match segment.res {
-                            hir::def::Res::PrimTy(ty) => {
+                            Res::PrimTy(ty) => {
                                 format!("{} `{}`", segment.res.descr(), ty.name())
                             }
-                            hir::def::Res::Def(_, def_id)
+                            Res::Def(_, def_id)
                                 if let Some(name) = self.tcx().opt_item_name(def_id) =>
                             {
                                 format!("{} `{name}`", segment.res.descr())
                             }
-                            hir::def::Res::Err => "this type".to_string(),
+                            Res::Err => "this type".to_string(),
                             _ => segment.res.descr().to_string(),
                         },
                         segment.ident.span,
@@ -1074,11 +1075,8 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
         let this_type = listify(&types_and_spans, |(t, _)| t.to_string())
             .expect("expected one segment to deny");
 
-        let arg_spans: Vec<Span> = segments
-            .clone()
-            .flat_map(|segment| segment.args().args)
-            .map(|arg| arg.span())
-            .collect();
+        let arg_spans: Vec<Span> =
+            segments.iter().flat_map(|segment| segment.args().args).map(|arg| arg.span()).collect();
 
         let mut kinds = Vec::with_capacity(4);
         prohibit_args.iter().for_each(|arg| match arg {
@@ -1103,7 +1101,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
         for (what, span) in types_and_spans {
             err.span_label(span, format!("not allowed on {what}"));
         }
-        generics_args_err_extend(self.tcx(), segments, &mut err, err_extend);
+        generics_args_err_extend(self.tcx(), segments.into_iter(), &mut err, err_extend);
         err.emit()
     }
 
@@ -1400,7 +1398,7 @@ pub enum GenericsArgsErrExtend<'tcx> {
     },
     SelfTyParam(Span),
     Param(DefId),
-    DefVariant,
+    DefVariant(&'tcx [hir::PathSegment<'tcx>]),
     None,
 }
 
@@ -1408,7 +1406,7 @@ fn generics_args_err_extend<'a>(
     tcx: TyCtxt<'_>,
     segments: impl Iterator<Item = &'a hir::PathSegment<'a>> + Clone,
     err: &mut Diag<'_>,
-    err_extend: GenericsArgsErrExtend<'_>,
+    err_extend: GenericsArgsErrExtend<'a>,
 ) {
     match err_extend {
         GenericsArgsErrExtend::EnumVariant { qself, assoc_segment, adt_def } => {
@@ -1496,6 +1494,32 @@ fn generics_args_err_extend<'a>(
             ];
             err.multipart_suggestion_verbose(msg, suggestion, Applicability::MaybeIncorrect);
         }
+        GenericsArgsErrExtend::DefVariant(segments) => {
+            let args: Vec<Span> = segments
+                .iter()
+                .filter_map(|segment| match segment.res {
+                    Res::Def(
+                        DefKind::Ctor(CtorOf::Variant, _) | DefKind::Variant | DefKind::Enum,
+                        _,
+                    ) => segment.args().span_ext().map(|s| s.with_lo(segment.ident.span.hi())),
+                    _ => None,
+                })
+                .collect();
+            if args.len() > 1
+                && let Some(span) = args.into_iter().last()
+            {
+                err.note(
+                    "generic arguments are not allowed on both an enum and its variant's path \
+                     segments simultaneously; they are only valid in one place or the other",
+                );
+                err.span_suggestion_verbose(
+                    span,
+                    "remove the generics arguments from one of the path segments",
+                    String::new(),
+                    Applicability::MaybeIncorrect,
+                );
+            }
+        }
         GenericsArgsErrExtend::PrimTy(prim_ty) => {
             let name = prim_ty.name_str();
             for segment in segments {
@@ -1512,9 +1536,6 @@ fn generics_args_err_extend<'a>(
         GenericsArgsErrExtend::OpaqueTy => {
             err.note("`impl Trait` types can't have type parameters");
         }
-        GenericsArgsErrExtend::DefVariant => {
-            err.note("enum variants can't have type parameters");
-        }
         GenericsArgsErrExtend::Param(def_id) => {
             let span = tcx.def_ident_span(def_id).unwrap();
             let kind = tcx.def_descr(def_id);
diff --git a/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs b/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs
index ffddf6f73aa..c6e47a804dc 100644
--- a/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs
+++ b/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs
@@ -1694,7 +1694,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
     pub fn prohibit_generic_args<'a>(
         &self,
         segments: impl Iterator<Item = &'a hir::PathSegment<'a>> + Clone,
-        err_extend: GenericsArgsErrExtend<'_>,
+        err_extend: GenericsArgsErrExtend<'a>,
     ) -> Result<(), ErrorGuaranteed> {
         let args_visitors = segments.clone().flat_map(|segment| segment.args().args);
         let mut result = Ok(());
@@ -1911,7 +1911,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
                     path.segments.iter().enumerate().filter_map(|(index, seg)| {
                         if !indices.contains(&index) { Some(seg) } else { None }
                     }),
-                    GenericsArgsErrExtend::DefVariant,
+                    GenericsArgsErrExtend::DefVariant(&path.segments),
                 );
 
                 let GenericPathSegment(def_id, index) = generic_segments.last().unwrap();
@@ -2154,11 +2154,15 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
                 span_bug!(span, "use of bare `static` ConstArgKind::Path's not yet supported")
             }
             // FIXME(const_generics): create real const to allow fn items as const paths
-            Res::Def(DefKind::Fn | DefKind::AssocFn, _) => ty::Const::new_error_with_message(
-                tcx,
-                span,
-                "fn items cannot be used as const args",
-            ),
+            Res::Def(DefKind::Fn | DefKind::AssocFn, did) => {
+                self.dcx().span_delayed_bug(span, "function items cannot be used as const args");
+                let args = self.lower_generic_args_of_path_segment(
+                    span,
+                    did,
+                    path.segments.last().unwrap(),
+                );
+                ty::Const::new_value(tcx, ty::ValTree::zst(), Ty::new_fn_def(tcx, did, args))
+            }
 
             // Exhaustive match to be clear about what exactly we're considering to be
             // an invalid Res for a const path.
@@ -2557,27 +2561,29 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
         // reject function types that violate cmse ABI requirements
         cmse::validate_cmse_abi(self.tcx(), self.dcx(), hir_id, abi, bare_fn_ty);
 
-        // Find any late-bound regions declared in return type that do
-        // not appear in the arguments. These are not well-formed.
-        //
-        // Example:
-        //     for<'a> fn() -> &'a str <-- 'a is bad
-        //     for<'a> fn(&'a String) -> &'a str <-- 'a is ok
-        let inputs = bare_fn_ty.inputs();
-        let late_bound_in_args =
-            tcx.collect_constrained_late_bound_regions(inputs.map_bound(|i| i.to_owned()));
-        let output = bare_fn_ty.output();
-        let late_bound_in_ret = tcx.collect_referenced_late_bound_regions(output);
-
-        self.validate_late_bound_regions(late_bound_in_args, late_bound_in_ret, |br_name| {
-            struct_span_code_err!(
-                self.dcx(),
-                decl.output.span(),
-                E0581,
-                "return type references {}, which is not constrained by the fn input types",
-                br_name
-            )
-        });
+        if !bare_fn_ty.references_error() {
+            // Find any late-bound regions declared in return type that do
+            // not appear in the arguments. These are not well-formed.
+            //
+            // Example:
+            //     for<'a> fn() -> &'a str <-- 'a is bad
+            //     for<'a> fn(&'a String) -> &'a str <-- 'a is ok
+            let inputs = bare_fn_ty.inputs();
+            let late_bound_in_args =
+                tcx.collect_constrained_late_bound_regions(inputs.map_bound(|i| i.to_owned()));
+            let output = bare_fn_ty.output();
+            let late_bound_in_ret = tcx.collect_referenced_late_bound_regions(output);
+
+            self.validate_late_bound_regions(late_bound_in_args, late_bound_in_ret, |br_name| {
+                struct_span_code_err!(
+                    self.dcx(),
+                    decl.output.span(),
+                    E0581,
+                    "return type references {}, which is not constrained by the fn input types",
+                    br_name
+                )
+            });
+        }
 
         bare_fn_ty
     }
diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs
index 6bb8cf5f331..e74ffeff343 100644
--- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs
+++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs
@@ -1043,12 +1043,17 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
 
         let mut user_self_ty = None;
         let mut is_alias_variant_ctor = false;
+        let mut err_extend = GenericsArgsErrExtend::None;
         match res {
             Res::Def(DefKind::Ctor(CtorOf::Variant, _), _) if let Some(self_ty) = self_ty => {
                 let adt_def = self_ty.normalized.ty_adt_def().unwrap();
                 user_self_ty =
                     Some(UserSelfTy { impl_def_id: adt_def.did(), self_ty: self_ty.raw });
                 is_alias_variant_ctor = true;
+                err_extend = GenericsArgsErrExtend::DefVariant(segments);
+            }
+            Res::Def(DefKind::Ctor(CtorOf::Variant, _), _) => {
+                err_extend = GenericsArgsErrExtend::DefVariant(segments);
             }
             Res::Def(DefKind::AssocFn | DefKind::AssocConst, def_id) => {
                 let assoc_item = tcx.associated_item(def_id);
@@ -1095,7 +1100,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
             segments.iter().enumerate().filter_map(|(index, seg)| {
                 if !indices.contains(&index) || is_alias_variant_ctor { Some(seg) } else { None }
             }),
-            GenericsArgsErrExtend::None,
+            err_extend,
         );
 
         if let Res::Local(hid) = res {
diff --git a/compiler/rustc_hir_typeck/src/method/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs
index 3e48e8d15c3..36cc9b40d00 100644
--- a/compiler/rustc_hir_typeck/src/method/confirm.rs
+++ b/compiler/rustc_hir_typeck/src/method/confirm.rs
@@ -681,17 +681,23 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> {
             traits::upcast_choices(self.tcx, source_trait_ref, target_trait_def_id);
 
         // must be exactly one trait ref or we'd get an ambig error etc
-        let [upcast_trait_ref] = upcast_trait_refs.as_slice() else {
-            span_bug!(
+        if let &[upcast_trait_ref] = upcast_trait_refs.as_slice() {
+            upcast_trait_ref
+        } else {
+            self.dcx().span_delayed_bug(
                 self.span,
-                "cannot uniquely upcast `{:?}` to `{:?}`: `{:?}`",
-                source_trait_ref,
-                target_trait_def_id,
-                upcast_trait_refs
-            )
-        };
+                format!(
+                    "cannot uniquely upcast `{:?}` to `{:?}`: `{:?}`",
+                    source_trait_ref, target_trait_def_id, upcast_trait_refs
+                ),
+            );
 
-        *upcast_trait_ref
+            ty::Binder::dummy(ty::TraitRef::new_from_args(
+                self.tcx,
+                target_trait_def_id,
+                ty::GenericArgs::extend_with_error(self.tcx, target_trait_def_id, &[]),
+            ))
+        }
     }
 
     fn instantiate_binder_with_fresh_vars<T>(&self, value: ty::Binder<'tcx, T>) -> T
diff --git a/compiler/rustc_lint/messages.ftl b/compiler/rustc_lint/messages.ftl
index 55c6a122d35..480d97e377a 100644
--- a/compiler/rustc_lint/messages.ftl
+++ b/compiler/rustc_lint/messages.ftl
@@ -390,9 +390,6 @@ lint_improper_ctypes_only_phantomdata = composed only of `PhantomData`
 
 lint_improper_ctypes_opaque = opaque types have no C equivalent
 
-lint_improper_ctypes_pat_help = consider using the base type instead
-
-lint_improper_ctypes_pat_reason = pattern types have no C equivalent
 lint_improper_ctypes_slice_help = consider using a raw pointer instead
 
 lint_improper_ctypes_slice_reason = slices have no C equivalent
diff --git a/compiler/rustc_lint/src/foreign_modules.rs b/compiler/rustc_lint/src/foreign_modules.rs
index 45b188205d2..636779fe9b4 100644
--- a/compiler/rustc_lint/src/foreign_modules.rs
+++ b/compiler/rustc_lint/src/foreign_modules.rs
@@ -241,10 +241,7 @@ fn structurally_same_type_impl<'tcx>(
             if let ty::Adt(def, args) = *ty.kind() {
                 let is_transparent = def.repr().transparent();
                 let is_non_null = types::nonnull_optimization_guaranteed(tcx, def);
-                debug!(
-                    "non_transparent_ty({:?}) -- type is transparent? {}, type is non-null? {}",
-                    ty, is_transparent, is_non_null
-                );
+                debug!(?ty, is_transparent, is_non_null);
                 if is_transparent && !is_non_null {
                     debug_assert_eq!(def.variants().len(), 1);
                     let v = &def.variant(FIRST_VARIANT);
@@ -378,14 +375,14 @@ fn structurally_same_type_impl<'tcx>(
 
                 // An Adt and a primitive or pointer type. This can be FFI-safe if non-null
                 // enum layout optimisation is being applied.
-                (Adt(..), _) if is_primitive_or_pointer(b) => {
+                (Adt(..) | Pat(..), _) if is_primitive_or_pointer(b) => {
                     if let Some(a_inner) = types::repr_nullable_ptr(tcx, typing_env, a, ckind) {
                         a_inner == b
                     } else {
                         false
                     }
                 }
-                (_, Adt(..)) if is_primitive_or_pointer(a) => {
+                (_, Adt(..) | Pat(..)) if is_primitive_or_pointer(a) => {
                     if let Some(b_inner) = types::repr_nullable_ptr(tcx, typing_env, b, ckind) {
                         b_inner == a
                     } else {
diff --git a/compiler/rustc_lint/src/lib.rs b/compiler/rustc_lint/src/lib.rs
index d89e615e14a..c8de5e87753 100644
--- a/compiler/rustc_lint/src/lib.rs
+++ b/compiler/rustc_lint/src/lib.rs
@@ -33,6 +33,7 @@
 #![feature(let_chains)]
 #![feature(rustc_attrs)]
 #![feature(rustdoc_internals)]
+#![feature(try_blocks)]
 #![warn(unreachable_pub)]
 // tidy-alphabetical-end
 
diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs
index 601d2fbfb67..68b1f435a4c 100644
--- a/compiler/rustc_lint/src/types.rs
+++ b/compiler/rustc_lint/src/types.rs
@@ -877,6 +877,37 @@ fn ty_is_known_nonnull<'tcx>(
                 .filter_map(|variant| transparent_newtype_field(tcx, variant))
                 .any(|field| ty_is_known_nonnull(tcx, typing_env, field.ty(tcx, args), mode))
         }
+        ty::Pat(base, pat) => {
+            ty_is_known_nonnull(tcx, typing_env, *base, mode)
+                || Option::unwrap_or_default(
+                    try {
+                        match **pat {
+                            ty::PatternKind::Range { start, end, include_end } => {
+                                match (start, end) {
+                                    (Some(start), None) => {
+                                        start.try_to_value()?.try_to_bits(tcx, typing_env)? > 0
+                                    }
+                                    (Some(start), Some(end)) => {
+                                        let start =
+                                            start.try_to_value()?.try_to_bits(tcx, typing_env)?;
+                                        let end =
+                                            end.try_to_value()?.try_to_bits(tcx, typing_env)?;
+
+                                        if include_end {
+                                            // This also works for negative numbers, as we just need
+                                            // to ensure we aren't wrapping over zero.
+                                            start > 0 && end >= start
+                                        } else {
+                                            start > 0 && end > start
+                                        }
+                                    }
+                                    _ => false,
+                                }
+                            }
+                        }
+                    },
+                )
+        }
         _ => false,
     }
 }
@@ -907,9 +938,8 @@ fn get_nullable_type<'tcx>(
             };
             return get_nullable_type(tcx, typing_env, inner_field_ty);
         }
-        ty::Int(ty) => Ty::new_int(tcx, ty),
-        ty::Uint(ty) => Ty::new_uint(tcx, ty),
-        ty::RawPtr(ty, mutbl) => Ty::new_ptr(tcx, ty, mutbl),
+        ty::Pat(base, ..) => return get_nullable_type(tcx, typing_env, base),
+        ty::Int(_) | ty::Uint(_) | ty::RawPtr(..) => ty,
         // As these types are always non-null, the nullable equivalent of
         // `Option<T>` of these types are their raw pointer counterparts.
         ty::Ref(_region, ty, mutbl) => Ty::new_ptr(tcx, ty, mutbl),
@@ -965,63 +995,69 @@ pub(crate) fn repr_nullable_ptr<'tcx>(
     ckind: CItemKind,
 ) -> Option<Ty<'tcx>> {
     debug!("is_repr_nullable_ptr(tcx, ty = {:?})", ty);
-    if let ty::Adt(ty_def, args) = ty.kind() {
-        let field_ty = match &ty_def.variants().raw[..] {
-            [var_one, var_two] => match (&var_one.fields.raw[..], &var_two.fields.raw[..]) {
-                ([], [field]) | ([field], []) => field.ty(tcx, args),
-                ([field1], [field2]) => {
-                    let ty1 = field1.ty(tcx, args);
-                    let ty2 = field2.ty(tcx, args);
-
-                    if is_niche_optimization_candidate(tcx, typing_env, ty1) {
-                        ty2
-                    } else if is_niche_optimization_candidate(tcx, typing_env, ty2) {
-                        ty1
-                    } else {
-                        return None;
+    match ty.kind() {
+        ty::Adt(ty_def, args) => {
+            let field_ty = match &ty_def.variants().raw[..] {
+                [var_one, var_two] => match (&var_one.fields.raw[..], &var_two.fields.raw[..]) {
+                    ([], [field]) | ([field], []) => field.ty(tcx, args),
+                    ([field1], [field2]) => {
+                        let ty1 = field1.ty(tcx, args);
+                        let ty2 = field2.ty(tcx, args);
+
+                        if is_niche_optimization_candidate(tcx, typing_env, ty1) {
+                            ty2
+                        } else if is_niche_optimization_candidate(tcx, typing_env, ty2) {
+                            ty1
+                        } else {
+                            return None;
+                        }
                     }
-                }
+                    _ => return None,
+                },
                 _ => return None,
-            },
-            _ => return None,
-        };
+            };
 
-        if !ty_is_known_nonnull(tcx, typing_env, field_ty, ckind) {
-            return None;
-        }
+            if !ty_is_known_nonnull(tcx, typing_env, field_ty, ckind) {
+                return None;
+            }
 
-        // At this point, the field's type is known to be nonnull and the parent enum is Option-like.
-        // If the computed size for the field and the enum are different, the nonnull optimization isn't
-        // being applied (and we've got a problem somewhere).
-        let compute_size_skeleton = |t| SizeSkeleton::compute(t, tcx, typing_env).ok();
-        if !compute_size_skeleton(ty)?.same_size(compute_size_skeleton(field_ty)?) {
-            bug!("improper_ctypes: Option nonnull optimization not applied?");
-        }
+            // At this point, the field's type is known to be nonnull and the parent enum is Option-like.
+            // If the computed size for the field and the enum are different, the nonnull optimization isn't
+            // being applied (and we've got a problem somewhere).
+            let compute_size_skeleton = |t| SizeSkeleton::compute(t, tcx, typing_env).ok();
+            if !compute_size_skeleton(ty)?.same_size(compute_size_skeleton(field_ty)?) {
+                bug!("improper_ctypes: Option nonnull optimization not applied?");
+            }
 
-        // Return the nullable type this Option-like enum can be safely represented with.
-        let field_ty_layout = tcx.layout_of(typing_env.as_query_input(field_ty));
-        if field_ty_layout.is_err() && !field_ty.has_non_region_param() {
-            bug!("should be able to compute the layout of non-polymorphic type");
-        }
+            // Return the nullable type this Option-like enum can be safely represented with.
+            let field_ty_layout = tcx.layout_of(typing_env.as_query_input(field_ty));
+            if field_ty_layout.is_err() && !field_ty.has_non_region_param() {
+                bug!("should be able to compute the layout of non-polymorphic type");
+            }
 
-        let field_ty_abi = &field_ty_layout.ok()?.backend_repr;
-        if let BackendRepr::Scalar(field_ty_scalar) = field_ty_abi {
-            match field_ty_scalar.valid_range(&tcx) {
-                WrappingRange { start: 0, end }
-                    if end == field_ty_scalar.size(&tcx).unsigned_int_max() - 1 =>
-                {
-                    return Some(get_nullable_type(tcx, typing_env, field_ty).unwrap());
-                }
-                WrappingRange { start: 1, .. } => {
-                    return Some(get_nullable_type(tcx, typing_env, field_ty).unwrap());
-                }
-                WrappingRange { start, end } => {
-                    unreachable!("Unhandled start and end range: ({}, {})", start, end)
-                }
-            };
+            let field_ty_abi = &field_ty_layout.ok()?.backend_repr;
+            if let BackendRepr::Scalar(field_ty_scalar) = field_ty_abi {
+                match field_ty_scalar.valid_range(&tcx) {
+                    WrappingRange { start: 0, end }
+                        if end == field_ty_scalar.size(&tcx).unsigned_int_max() - 1 =>
+                    {
+                        return Some(get_nullable_type(tcx, typing_env, field_ty).unwrap());
+                    }
+                    WrappingRange { start: 1, .. } => {
+                        return Some(get_nullable_type(tcx, typing_env, field_ty).unwrap());
+                    }
+                    WrappingRange { start, end } => {
+                        unreachable!("Unhandled start and end range: ({}, {})", start, end)
+                    }
+                };
+            }
+            None
         }
+        ty::Pat(base, pat) => match **pat {
+            ty::PatternKind::Range { .. } => get_nullable_type(tcx, typing_env, *base),
+        },
+        _ => None,
     }
-    None
 }
 
 impl<'a, 'tcx> ImproperCTypesVisitor<'a, 'tcx> {
@@ -1256,11 +1292,9 @@ impl<'a, 'tcx> ImproperCTypesVisitor<'a, 'tcx> {
                 help: Some(fluent::lint_improper_ctypes_char_help),
             },
 
-            ty::Pat(..) => FfiUnsafe {
-                ty,
-                reason: fluent::lint_improper_ctypes_pat_reason,
-                help: Some(fluent::lint_improper_ctypes_pat_help),
-            },
+            // It's just extra invariants on the type that you need to uphold,
+            // but only the base type is relevant for being representable in FFI.
+            ty::Pat(base, ..) => self.check_type_for_ffi(acc, base),
 
             ty::Int(ty::IntTy::I128) | ty::Uint(ty::UintTy::U128) => {
                 FfiUnsafe { ty, reason: fluent::lint_improper_ctypes_128bit, help: None }
diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
index d9d28299413..48806888b43 100644
--- a/compiler/rustc_llvm/build.rs
+++ b/compiler/rustc_llvm/build.rs
@@ -193,6 +193,10 @@ fn main() {
         cfg.define(&flag, None);
     }
 
+    if tracked_env_var_os("LLVM_ENZYME").is_some() {
+        cfg.define("ENZYME", None);
+    }
+
     if tracked_env_var_os("LLVM_RUSTLLVM").is_some() {
         cfg.define("LLVM_RUSTLLVM", None);
     }
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
index 6447a9362b3..a6b2384f2d7 100644
--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
@@ -688,14 +688,20 @@ struct LLVMRustSanitizerOptions {
   bool SanitizeKernelAddressRecover;
 };
 
+// This symbol won't be available or used when Enzyme is not enabled
+#ifdef ENZYME
+extern "C" void registerEnzyme(llvm::PassBuilder &PB);
+#endif
+
 extern "C" LLVMRustResult LLVMRustOptimize(
     LLVMModuleRef ModuleRef, LLVMTargetMachineRef TMRef,
     LLVMRustPassBuilderOptLevel OptLevelRust, LLVMRustOptStage OptStage,
     bool IsLinkerPluginLTO, bool NoPrepopulatePasses, bool VerifyIR,
     bool LintIR, bool UseThinLTOBuffers, bool MergeFunctions, bool UnrollLoops,
     bool SLPVectorize, bool LoopVectorize, bool DisableSimplifyLibCalls,
-    bool EmitLifetimeMarkers, LLVMRustSanitizerOptions *SanitizerOptions,
-    const char *PGOGenPath, const char *PGOUsePath, bool InstrumentCoverage,
+    bool EmitLifetimeMarkers, bool RunEnzyme,
+    LLVMRustSanitizerOptions *SanitizerOptions, const char *PGOGenPath,
+    const char *PGOUsePath, bool InstrumentCoverage,
     const char *InstrProfileOutput, const char *PGOSampleUsePath,
     bool DebugInfoForProfiling, void *LlvmSelfProfiler,
     LLVMRustSelfProfileBeforePassCallback BeforePassCallback,
@@ -1010,6 +1016,18 @@ extern "C" LLVMRustResult LLVMRustOptimize(
     MPM.addPass(NameAnonGlobalPass());
   }
 
+  // now load "-enzyme" pass:
+#ifdef ENZYME
+  if (RunEnzyme) {
+    registerEnzyme(PB);
+    if (auto Err = PB.parsePassPipeline(MPM, "enzyme")) {
+      std::string ErrMsg = toString(std::move(Err));
+      LLVMRustSetLastError(ErrMsg.c_str());
+      return LLVMRustResult::Failure;
+    }
+  }
+#endif
+
   // Upgrade all calls to old intrinsics first.
   for (Module::iterator I = TheModule->begin(), E = TheModule->end(); I != E;)
     UpgradeCallsToIntrinsic(&*I++); // must be post-increment, as we remove
diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs
index 4df4624971d..83c7bb0f52f 100644
--- a/compiler/rustc_middle/src/hir/map/mod.rs
+++ b/compiler/rustc_middle/src/hir/map/mod.rs
@@ -10,11 +10,10 @@ use rustc_hir::definitions::{DefKey, DefPath, DefPathHash};
 use rustc_hir::intravisit::Visitor;
 use rustc_hir::*;
 use rustc_hir_pretty as pprust_hir;
-use rustc_middle::hir::nested_filter;
 use rustc_span::def_id::StableCrateId;
 use rustc_span::{ErrorGuaranteed, Ident, Span, Symbol, kw, sym, with_metavar_spans};
 
-use crate::hir::ModuleItems;
+use crate::hir::{ModuleItems, nested_filter};
 use crate::middle::debugger_visualizer::DebuggerVisualizerFile;
 use crate::query::LocalCrate;
 use crate::ty::TyCtxt;
diff --git a/compiler/rustc_middle/src/middle/stability.rs b/compiler/rustc_middle/src/middle/stability.rs
index 77a7da2c74b..93bbf6d7fa4 100644
--- a/compiler/rustc_middle/src/middle/stability.rs
+++ b/compiler/rustc_middle/src/middle/stability.rs
@@ -13,7 +13,6 @@ use rustc_feature::GateIssue;
 use rustc_hir::def_id::{DefId, LocalDefId, LocalDefIdMap};
 use rustc_hir::{self as hir, HirId};
 use rustc_macros::{Decodable, Encodable, HashStable, Subdiagnostic};
-use rustc_middle::ty::print::with_no_trimmed_paths;
 use rustc_session::Session;
 use rustc_session::lint::builtin::{DEPRECATED, DEPRECATED_IN_FUTURE, SOFT_UNSTABLE};
 use rustc_session::lint::{BuiltinLintDiag, DeprecatedSinceKind, Level, Lint, LintBuffer};
@@ -23,6 +22,7 @@ use tracing::debug;
 
 pub use self::StabilityLevel::*;
 use crate::ty::TyCtxt;
+use crate::ty::print::with_no_trimmed_paths;
 
 #[derive(PartialEq, Clone, Copy, Debug)]
 pub enum StabilityLevel {
diff --git a/compiler/rustc_middle/src/mir/generic_graph.rs b/compiler/rustc_middle/src/mir/generic_graph.rs
index a52ec58a1ee..3fd73712b09 100644
--- a/compiler/rustc_middle/src/mir/generic_graph.rs
+++ b/compiler/rustc_middle/src/mir/generic_graph.rs
@@ -1,5 +1,6 @@
 use gsgdt::{Edge, Graph, Node, NodeStyle};
-use rustc_middle::mir::*;
+
+use crate::mir::*;
 
 /// Convert an MIR function into a gsgdt Graph
 pub(crate) fn mir_fn_to_generic_graph<'tcx>(tcx: TyCtxt<'tcx>, body: &Body<'_>) -> Graph {
diff --git a/compiler/rustc_middle/src/mir/generic_graphviz.rs b/compiler/rustc_middle/src/mir/generic_graphviz.rs
index e1c3d8156d8..bce7beb521d 100644
--- a/compiler/rustc_middle/src/mir/generic_graphviz.rs
+++ b/compiler/rustc_middle/src/mir/generic_graphviz.rs
@@ -2,7 +2,8 @@ use std::io::{self, Write};
 
 use rustc_data_structures::graph::{self, iterate};
 use rustc_graphviz as dot;
-use rustc_middle::ty::TyCtxt;
+
+use crate::ty::TyCtxt;
 
 pub struct GraphvizWriter<
     'a,
diff --git a/compiler/rustc_middle/src/mir/graphviz.rs b/compiler/rustc_middle/src/mir/graphviz.rs
index 7bb41193d5c..a64b122fbc9 100644
--- a/compiler/rustc_middle/src/mir/graphviz.rs
+++ b/compiler/rustc_middle/src/mir/graphviz.rs
@@ -2,10 +2,10 @@ use std::io::{self, Write};
 
 use gsgdt::GraphvizSettings;
 use rustc_graphviz as dot;
-use rustc_middle::mir::*;
 
 use super::generic_graph::mir_fn_to_generic_graph;
 use super::pretty::dump_mir_def_ids;
+use crate::mir::*;
 
 /// Write a graphviz DOT graph of a list of MIRs.
 pub fn write_mir_graphviz<W>(tcx: TyCtxt<'_>, single: Option<DefId>, w: &mut W) -> io::Result<()>
diff --git a/compiler/rustc_middle/src/mir/interpret/error.rs b/compiler/rustc_middle/src/mir/interpret/error.rs
index 1222ba052cc..8861e31b099 100644
--- a/compiler/rustc_middle/src/mir/interpret/error.rs
+++ b/compiler/rustc_middle/src/mir/interpret/error.rs
@@ -216,10 +216,6 @@ pub enum InvalidProgramInfo<'tcx> {
     AlreadyReported(ReportedErrorInfo),
     /// An error occurred during layout computation.
     Layout(layout::LayoutError<'tcx>),
-    /// An error occurred during FnAbi computation: the passed --target lacks FFI support
-    /// (which unfortunately typeck does not reject).
-    /// Not using `FnAbiError` as that contains a nested `LayoutError`.
-    FnAbiAdjustForForeignAbi(rustc_target::callconv::AdjustForForeignAbiError),
 }
 
 /// Details of why a pointer had to be in-bounds.
diff --git a/compiler/rustc_middle/src/mir/interpret/mod.rs b/compiler/rustc_middle/src/mir/interpret/mod.rs
index 45c862e0d34..c48cfffa05c 100644
--- a/compiler/rustc_middle/src/mir/interpret/mod.rs
+++ b/compiler/rustc_middle/src/mir/interpret/mod.rs
@@ -20,7 +20,6 @@ use rustc_data_structures::sync::{AtomicU64, Lock};
 use rustc_hir::def::DefKind;
 use rustc_hir::def_id::{DefId, LocalDefId};
 use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
-use rustc_middle::ty::print::with_no_trimmed_paths;
 use rustc_serialize::{Decodable, Encodable};
 use tracing::{debug, trace};
 // Also make the error macros available from this module.
@@ -46,6 +45,7 @@ pub use self::pointer::{CtfeProvenance, Pointer, PointerArithmetic, Provenance};
 pub use self::value::Scalar;
 use crate::mir;
 use crate::ty::codec::{TyDecoder, TyEncoder};
+use crate::ty::print::with_no_trimmed_paths;
 use crate::ty::{self, Instance, Ty, TyCtxt};
 
 /// Uniquely identifies one of the following:
diff --git a/compiler/rustc_middle/src/mir/patch.rs b/compiler/rustc_middle/src/mir/patch.rs
index 18c48d99b81..748797fbb8d 100644
--- a/compiler/rustc_middle/src/mir/patch.rs
+++ b/compiler/rustc_middle/src/mir/patch.rs
@@ -1,6 +1,7 @@
-use rustc_middle::mir::*;
 use tracing::debug;
 
+use crate::mir::*;
+
 /// This struct represents a patch to MIR, which can add
 /// new statements and basic blocks and patch over block
 /// terminators.
diff --git a/compiler/rustc_middle/src/mir/pretty.rs b/compiler/rustc_middle/src/mir/pretty.rs
index 11ebbbe807d..b0df6c71014 100644
--- a/compiler/rustc_middle/src/mir/pretty.rs
+++ b/compiler/rustc_middle/src/mir/pretty.rs
@@ -5,17 +5,16 @@ use std::{fs, io};
 
 use rustc_abi::Size;
 use rustc_ast::InlineAsmTemplatePiece;
-use rustc_middle::mir::interpret::{
-    AllocBytes, AllocId, Allocation, GlobalAlloc, Pointer, Provenance, alloc_range,
-    read_target_uint,
-};
-use rustc_middle::mir::visit::Visitor;
-use rustc_middle::mir::*;
 use tracing::trace;
 use ty::print::PrettyPrinter;
 
 use super::graphviz::write_mir_fn_graphviz;
-use crate::mir::interpret::ConstAllocation;
+use crate::mir::interpret::{
+    AllocBytes, AllocId, Allocation, ConstAllocation, GlobalAlloc, Pointer, Provenance,
+    alloc_range, read_target_uint,
+};
+use crate::mir::visit::Visitor;
+use crate::mir::*;
 
 const INDENT: &str = "    ";
 /// Alignment for lining up comments following MIR statements
diff --git a/compiler/rustc_middle/src/query/erase.rs b/compiler/rustc_middle/src/query/erase.rs
index 14f871cbbdc..cbd60920bc5 100644
--- a/compiler/rustc_middle/src/query/erase.rs
+++ b/compiler/rustc_middle/src/query/erase.rs
@@ -101,9 +101,9 @@ impl<T> EraseType for Result<&'_ T, &'_ ty::layout::FnAbiError<'_>> {
     type Result = [u8; size_of::<Result<&'static (), &'static ty::layout::FnAbiError<'static>>>()];
 }
 
-impl<T> EraseType for Result<(&'_ T, rustc_middle::thir::ExprId), rustc_errors::ErrorGuaranteed> {
+impl<T> EraseType for Result<(&'_ T, crate::thir::ExprId), rustc_errors::ErrorGuaranteed> {
     type Result = [u8; size_of::<
-        Result<(&'static (), rustc_middle::thir::ExprId), rustc_errors::ErrorGuaranteed>,
+        Result<(&'static (), crate::thir::ExprId), rustc_errors::ErrorGuaranteed>,
     >()];
 }
 
diff --git a/compiler/rustc_middle/src/query/on_disk_cache.rs b/compiler/rustc_middle/src/query/on_disk_cache.rs
index 3247bdbf105..d9035efaf56 100644
--- a/compiler/rustc_middle/src/query/on_disk_cache.rs
+++ b/compiler/rustc_middle/src/query/on_disk_cache.rs
@@ -11,12 +11,6 @@ use rustc_hir::def_id::{CrateNum, DefId, DefIndex, LOCAL_CRATE, LocalDefId, Stab
 use rustc_hir::definitions::DefPathHash;
 use rustc_index::{Idx, IndexVec};
 use rustc_macros::{Decodable, Encodable};
-use rustc_middle::dep_graph::{DepNodeIndex, SerializedDepNodeIndex};
-use rustc_middle::mir::interpret::{AllocDecodingSession, AllocDecodingState};
-use rustc_middle::mir::mono::MonoItem;
-use rustc_middle::mir::{self, interpret};
-use rustc_middle::ty::codec::{RefDecodable, TyDecoder, TyEncoder};
-use rustc_middle::ty::{self, Ty, TyCtxt};
 use rustc_query_system::query::QuerySideEffects;
 use rustc_serialize::opaque::{FileEncodeResult, FileEncoder, IntEncodedWithFixedSize, MemDecoder};
 use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
@@ -30,6 +24,13 @@ use rustc_span::{
     SpanDecoder, SpanEncoder, StableSourceFileId, Symbol,
 };
 
+use crate::dep_graph::{DepNodeIndex, SerializedDepNodeIndex};
+use crate::mir::interpret::{AllocDecodingSession, AllocDecodingState};
+use crate::mir::mono::MonoItem;
+use crate::mir::{self, interpret};
+use crate::ty::codec::{RefDecodable, TyDecoder, TyEncoder};
+use crate::ty::{self, Ty, TyCtxt};
+
 const TAG_FILE_FOOTER: u128 = 0xC0FFEE_C0FFEE_C0FFEE_C0FFEE_C0FFEE;
 
 // A normal span encoded with both location information and a `SyntaxContext`
@@ -563,7 +564,7 @@ impl<'a, 'tcx> TyDecoder for CacheDecoder<'a, 'tcx> {
     }
 }
 
-rustc_middle::implement_ty_decoder!(CacheDecoder<'a, 'tcx>);
+crate::implement_ty_decoder!(CacheDecoder<'a, 'tcx>);
 
 // This ensures that the `Decodable<opaque::Decoder>::decode` specialization for `Vec<u8>` is used
 // when a `CacheDecoder` is passed to `Decodable::decode`. Unfortunately, we have to manually opt
diff --git a/compiler/rustc_middle/src/thir.rs b/compiler/rustc_middle/src/thir.rs
index 4dc8f279553..2ab8750f727 100644
--- a/compiler/rustc_middle/src/thir.rs
+++ b/compiler/rustc_middle/src/thir.rs
@@ -20,20 +20,21 @@ use rustc_hir::def_id::DefId;
 use rustc_hir::{BindingMode, ByRef, HirId, MatchSource, RangeEnd};
 use rustc_index::{IndexVec, newtype_index};
 use rustc_macros::{HashStable, TypeVisitable};
-use rustc_middle::middle::region;
-use rustc_middle::mir::interpret::AllocId;
-use rustc_middle::mir::{self, BinOp, BorrowKind, FakeReadCause, UnOp};
-use rustc_middle::ty::adjustment::PointerCoercion;
-use rustc_middle::ty::layout::IntegerExt;
-use rustc_middle::ty::{
-    self, AdtDef, CanonicalUserType, CanonicalUserTypeAnnotation, FnSig, GenericArgsRef, List, Ty,
-    TyCtxt, UpvarArgs,
-};
 use rustc_span::def_id::LocalDefId;
 use rustc_span::{ErrorGuaranteed, Span, Symbol};
 use rustc_target::asm::InlineAsmRegOrRegClass;
 use tracing::instrument;
 
+use crate::middle::region;
+use crate::mir::interpret::AllocId;
+use crate::mir::{self, BinOp, BorrowKind, FakeReadCause, UnOp};
+use crate::ty::adjustment::PointerCoercion;
+use crate::ty::layout::IntegerExt;
+use crate::ty::{
+    self, AdtDef, CanonicalUserType, CanonicalUserTypeAnnotation, FnSig, GenericArgsRef, List, Ty,
+    TyCtxt, UpvarArgs,
+};
+
 pub mod visit;
 
 macro_rules! thir_with_elements {
diff --git a/compiler/rustc_middle/src/traits/query.rs b/compiler/rustc_middle/src/traits/query.rs
index 8cd04a6f5e4..4203c8fd861 100644
--- a/compiler/rustc_middle/src/traits/query.rs
+++ b/compiler/rustc_middle/src/traits/query.rs
@@ -41,11 +41,18 @@ pub mod type_op {
         pub predicate: Predicate<'tcx>,
     }
 
+    /// Normalizes, but not in the new solver.
     #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, HashStable, TypeFoldable, TypeVisitable)]
     pub struct Normalize<T> {
         pub value: T,
     }
 
+    /// Normalizes, and deeply normalizes in the new solver.
+    #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, HashStable, TypeFoldable, TypeVisitable)]
+    pub struct DeeplyNormalize<T> {
+        pub value: T,
+    }
+
     #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, HashStable, TypeFoldable, TypeVisitable)]
     pub struct ImpliedOutlivesBounds<'tcx> {
         pub ty: Ty<'tcx>,
@@ -80,6 +87,9 @@ pub type CanonicalTypeOpProvePredicateGoal<'tcx> =
 pub type CanonicalTypeOpNormalizeGoal<'tcx, T> =
     CanonicalQueryInput<'tcx, ty::ParamEnvAnd<'tcx, type_op::Normalize<T>>>;
 
+pub type CanonicalTypeOpDeeplyNormalizeGoal<'tcx, T> =
+    CanonicalQueryInput<'tcx, ty::ParamEnvAnd<'tcx, type_op::DeeplyNormalize<T>>>;
+
 pub type CanonicalImpliedOutlivesBoundsGoal<'tcx> =
     CanonicalQueryInput<'tcx, ty::ParamEnvAnd<'tcx, type_op::ImpliedOutlivesBounds<'tcx>>>;
 
diff --git a/compiler/rustc_middle/src/ty/cast.rs b/compiler/rustc_middle/src/ty/cast.rs
index b1316ceef5a..10f7d589636 100644
--- a/compiler/rustc_middle/src/ty/cast.rs
+++ b/compiler/rustc_middle/src/ty/cast.rs
@@ -2,8 +2,8 @@
 // typeck and codegen.
 
 use rustc_macros::{HashStable, TyDecodable, TyEncodable};
-use rustc_middle::mir;
 
+use crate::mir;
 use crate::ty::{self, Ty};
 
 /// Types that are represented as ints.
diff --git a/compiler/rustc_middle/src/ty/codec.rs b/compiler/rustc_middle/src/ty/codec.rs
index 94bf1aa4f03..6b6e0ffc656 100644
--- a/compiler/rustc_middle/src/ty/codec.rs
+++ b/compiler/rustc_middle/src/ty/codec.rs
@@ -13,8 +13,6 @@ use std::marker::DiscriminantKind;
 use rustc_abi::{FieldIdx, VariantIdx};
 use rustc_data_structures::fx::FxHashMap;
 use rustc_hir::def_id::LocalDefId;
-use rustc_middle::mir::mono::MonoItem;
-use rustc_middle::ty::TyCtxt;
 use rustc_serialize::{Decodable, Encodable};
 use rustc_span::Span;
 use rustc_span::source_map::Spanned;
@@ -23,9 +21,10 @@ pub use rustc_type_ir::{TyDecoder, TyEncoder};
 use crate::arena::ArenaAllocatable;
 use crate::infer::canonical::{CanonicalVarInfo, CanonicalVarInfos};
 use crate::mir::interpret::{AllocId, ConstAllocation, CtfeProvenance};
+use crate::mir::mono::MonoItem;
 use crate::mir::{self};
 use crate::traits;
-use crate::ty::{self, AdtDef, GenericArgsRef, Ty};
+use crate::ty::{self, AdtDef, GenericArgsRef, Ty, TyCtxt};
 
 /// The shorthand encoding uses an enum's variant index `usize`
 /// and is offset by this value so it never matches a real variant.
diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs
index 2566081cf5d..a9b4593c13d 100644
--- a/compiler/rustc_middle/src/ty/context.rs
+++ b/compiler/rustc_middle/src/ty/context.rs
@@ -1301,9 +1301,6 @@ pub struct TyCtxt<'tcx> {
     gcx: &'tcx GlobalCtxt<'tcx>,
 }
 
-// Explicitly implement `DynSync` and `DynSend` for `TyCtxt` to short circuit trait resolution.
-unsafe impl DynSend for TyCtxt<'_> {}
-unsafe impl DynSync for TyCtxt<'_> {}
 fn _assert_tcx_fields() {
     sync::assert_dyn_sync::<&'_ GlobalCtxt<'_>>();
     sync::assert_dyn_send::<&'_ GlobalCtxt<'_>>();
diff --git a/compiler/rustc_middle/src/ty/instance.rs b/compiler/rustc_middle/src/ty/instance.rs
index b7a648aae3f..e9c19331e4a 100644
--- a/compiler/rustc_middle/src/ty/instance.rs
+++ b/compiler/rustc_middle/src/ty/instance.rs
@@ -10,13 +10,13 @@ use rustc_hir::def_id::{CrateNum, DefId};
 use rustc_hir::lang_items::LangItem;
 use rustc_index::bit_set::FiniteBitSet;
 use rustc_macros::{Decodable, Encodable, HashStable, Lift, TyDecodable, TyEncodable};
-use rustc_middle::ty::normalize_erasing_regions::NormalizationError;
 use rustc_span::def_id::LOCAL_CRATE;
 use rustc_span::{DUMMY_SP, Span, Symbol};
 use tracing::{debug, instrument};
 
 use crate::error;
 use crate::middle::codegen_fn_attrs::CodegenFnAttrFlags;
+use crate::ty::normalize_erasing_regions::NormalizationError;
 use crate::ty::print::{FmtPrinter, Printer, shrunk_instance_name};
 use crate::ty::{
     self, EarlyBinder, GenericArgs, GenericArgsRef, Ty, TyCtxt, TypeFoldable, TypeSuperVisitable,
diff --git a/compiler/rustc_middle/src/ty/layout.rs b/compiler/rustc_middle/src/ty/layout.rs
index e5015ea3c3d..4b3e29b7c6c 100644
--- a/compiler/rustc_middle/src/ty/layout.rs
+++ b/compiler/rustc_middle/src/ty/layout.rs
@@ -24,7 +24,6 @@ use rustc_target::spec::{
 use tracing::debug;
 use {rustc_abi as abi, rustc_hir as hir};
 
-use crate::error::UnsupportedFnAbi;
 use crate::middle::codegen_fn_attrs::CodegenFnAttrFlags;
 use crate::query::TyCtxtAt;
 use crate::ty::normalize_erasing_regions::NormalizationError;
@@ -1275,18 +1274,12 @@ pub fn fn_can_unwind(tcx: TyCtxt<'_>, fn_def_id: Option<DefId>, abi: ExternAbi)
 pub enum FnAbiError<'tcx> {
     /// Error produced by a `layout_of` call, while computing `FnAbi` initially.
     Layout(LayoutError<'tcx>),
-
-    /// Error produced by attempting to adjust a `FnAbi`, for a "foreign" ABI.
-    AdjustForForeignAbi(rustc_target::callconv::AdjustForForeignAbiError),
 }
 
 impl<'a, 'b, G: EmissionGuarantee> Diagnostic<'a, G> for FnAbiError<'b> {
     fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
         match self {
             Self::Layout(e) => e.into_diagnostic().into_diag(dcx, level),
-            Self::AdjustForForeignAbi(
-                rustc_target::callconv::AdjustForForeignAbiError::Unsupported { arch, abi },
-            ) => UnsupportedFnAbi { arch, abi: abi.name() }.into_diag(dcx, level),
         }
     }
 }
diff --git a/compiler/rustc_middle/src/ty/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs
index feae8ea312e..2c1adc2bcad 100644
--- a/compiler/rustc_middle/src/ty/print/pretty.rs
+++ b/compiler/rustc_middle/src/ty/print/pretty.rs
@@ -1512,7 +1512,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
             ty::ExprKind::Binop(op) => {
                 let (_, _, c1, c2) = expr.binop_args();
 
-                let precedence = |binop: rustc_middle::mir::BinOp| {
+                let precedence = |binop: crate::mir::BinOp| {
                     use rustc_ast::util::parser::AssocOp;
                     AssocOp::from_ast_binop(binop.to_hir_binop()).precedence()
                 };
@@ -1558,7 +1558,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
             ty::ExprKind::UnOp(op) => {
                 let (_, ct) = expr.unop_args();
 
-                use rustc_middle::mir::UnOp;
+                use crate::mir::UnOp;
                 let formatted_op = match op {
                     UnOp::Not => "!",
                     UnOp::Neg => "-",
@@ -1800,7 +1800,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
         }
 
         let u8_type = self.tcx().types.u8;
-        match (cv.valtree, cv.ty.kind()) {
+        match (cv.valtree, *cv.ty.kind()) {
             (ty::ValTree::Branch(_), ty::Ref(_, inner_ty, _)) => match inner_ty.kind() {
                 ty::Slice(t) if *t == u8_type => {
                     let bytes = cv.try_to_raw_bytes(self.tcx()).unwrap_or_else(|| {
@@ -1820,13 +1820,13 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
                     return Ok(());
                 }
                 _ => {
-                    let cv = ty::Value { valtree: cv.valtree, ty: *inner_ty };
+                    let cv = ty::Value { valtree: cv.valtree, ty: inner_ty };
                     p!("&");
                     p!(pretty_print_const_valtree(cv, print_ty));
                     return Ok(());
                 }
             },
-            (ty::ValTree::Branch(_), ty::Array(t, _)) if *t == u8_type => {
+            (ty::ValTree::Branch(_), ty::Array(t, _)) if t == u8_type => {
                 let bytes = cv.try_to_raw_bytes(self.tcx()).unwrap_or_else(|| {
                     bug!("expected to convert valtree to raw bytes for type {:?}", t)
                 });
@@ -1893,11 +1893,16 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
             }
             (ty::ValTree::Leaf(leaf), ty::Ref(_, inner_ty, _)) => {
                 p!(write("&"));
-                return self.pretty_print_const_scalar_int(leaf, *inner_ty, print_ty);
+                return self.pretty_print_const_scalar_int(leaf, inner_ty, print_ty);
             }
             (ty::ValTree::Leaf(leaf), _) => {
                 return self.pretty_print_const_scalar_int(leaf, cv.ty, print_ty);
             }
+            (_, ty::FnDef(def_id, args)) => {
+                // Never allowed today, but we still encounter them in invalid const args.
+                p!(print_value_path(def_id, args));
+                return Ok(());
+            }
             // FIXME(oli-obk): also pretty print arrays and other aggregate constants by reading
             // their fields instead of just dumping the memory.
             _ => {}
diff --git a/compiler/rustc_middle/src/ty/typeck_results.rs b/compiler/rustc_middle/src/ty/typeck_results.rs
index 49bdb5e9dc3..1b5b791bb24 100644
--- a/compiler/rustc_middle/src/ty/typeck_results.rs
+++ b/compiler/rustc_middle/src/ty/typeck_results.rs
@@ -14,13 +14,13 @@ use rustc_hir::{
 };
 use rustc_index::IndexVec;
 use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
-use rustc_middle::mir::FakeReadCause;
 use rustc_session::Session;
 use rustc_span::Span;
 
 use super::RvalueScopes;
 use crate::hir::place::Place as HirPlace;
 use crate::infer::canonical::Canonical;
+use crate::mir::FakeReadCause;
 use crate::traits::ObligationCause;
 use crate::ty::{
     self, BoundVar, CanonicalPolyFnSig, ClosureSizeProfileData, GenericArgKind, GenericArgs,
diff --git a/compiler/rustc_middle/src/util/mod.rs b/compiler/rustc_middle/src/util/mod.rs
index 8c875007b7f..85519fb0a7d 100644
--- a/compiler/rustc_middle/src/util/mod.rs
+++ b/compiler/rustc_middle/src/util/mod.rs
@@ -2,9 +2,9 @@ pub mod bug;
 
 #[derive(Default, Copy, Clone)]
 pub struct Providers {
-    pub queries: rustc_middle::query::Providers,
-    pub extern_queries: rustc_middle::query::ExternProviders,
-    pub hooks: rustc_middle::hooks::Providers,
+    pub queries: crate::query::Providers,
+    pub extern_queries: crate::query::ExternProviders,
+    pub hooks: crate::hooks::Providers,
 }
 
 /// Backwards compatibility hack to keep the diff small. This
@@ -17,7 +17,7 @@ impl std::ops::DerefMut for Providers {
 }
 
 impl std::ops::Deref for Providers {
-    type Target = rustc_middle::query::Providers;
+    type Target = crate::query::Providers;
 
     fn deref(&self) -> &Self::Target {
         &self.queries
diff --git a/compiler/rustc_middle/src/values.rs b/compiler/rustc_middle/src/values.rs
index 867f8f63969..433f7542bd7 100644
--- a/compiler/rustc_middle/src/values.rs
+++ b/compiler/rustc_middle/src/values.rs
@@ -7,7 +7,6 @@ use rustc_errors::codes::*;
 use rustc_errors::{Applicability, MultiSpan, pluralize, struct_span_code_err};
 use rustc_hir as hir;
 use rustc_hir::def::{DefKind, Res};
-use rustc_middle::ty::{self, Representability, Ty, TyCtxt};
 use rustc_query_system::Value;
 use rustc_query_system::query::{CycleError, report_cycle};
 use rustc_span::def_id::LocalDefId;
@@ -15,6 +14,7 @@ use rustc_span::{ErrorGuaranteed, Span};
 
 use crate::dep_graph::dep_kinds;
 use crate::query::plumbing::CyclePlaceholder;
+use crate::ty::{self, Representability, Ty, TyCtxt};
 
 impl<'tcx> Value<TyCtxt<'tcx>> for Ty<'_> {
     fn from_cycle_error(tcx: TyCtxt<'tcx>, _: &CycleError, guar: ErrorGuaranteed) -> Self {
diff --git a/compiler/rustc_mir_transform/src/deduplicate_blocks.rs b/compiler/rustc_mir_transform/src/deduplicate_blocks.rs
deleted file mode 100644
index 63257df66fb..00000000000
--- a/compiler/rustc_mir_transform/src/deduplicate_blocks.rs
+++ /dev/null
@@ -1,195 +0,0 @@
-//! This pass finds basic blocks that are completely equal,
-//! and replaces all uses with just one of them.
-
-use std::collections::hash_map::Entry;
-use std::hash::{Hash, Hasher};
-use std::iter;
-
-use rustc_data_structures::fx::FxHashMap;
-use rustc_middle::mir::visit::MutVisitor;
-use rustc_middle::mir::*;
-use rustc_middle::ty::TyCtxt;
-use tracing::debug;
-
-use super::simplify::simplify_cfg;
-
-pub(super) struct DeduplicateBlocks;
-
-impl<'tcx> crate::MirPass<'tcx> for DeduplicateBlocks {
-    fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
-        sess.mir_opt_level() >= 4
-    }
-
-    fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
-        debug!("Running DeduplicateBlocks on `{:?}`", body.source);
-        let duplicates = find_duplicates(body);
-        let has_opts_to_apply = !duplicates.is_empty();
-
-        if has_opts_to_apply {
-            let mut opt_applier = OptApplier { tcx, duplicates };
-            opt_applier.visit_body(body);
-            simplify_cfg(body);
-        }
-    }
-
-    fn is_required(&self) -> bool {
-        false
-    }
-}
-
-struct OptApplier<'tcx> {
-    tcx: TyCtxt<'tcx>,
-    duplicates: FxHashMap<BasicBlock, BasicBlock>,
-}
-
-impl<'tcx> MutVisitor<'tcx> for OptApplier<'tcx> {
-    fn tcx(&self) -> TyCtxt<'tcx> {
-        self.tcx
-    }
-
-    fn visit_terminator(&mut self, terminator: &mut Terminator<'tcx>, location: Location) {
-        for target in terminator.successors_mut() {
-            if let Some(replacement) = self.duplicates.get(target) {
-                debug!("SUCCESS: Replacing: `{:?}` with `{:?}`", target, replacement);
-                *target = *replacement;
-            }
-        }
-
-        self.super_terminator(terminator, location);
-    }
-}
-
-fn find_duplicates(body: &Body<'_>) -> FxHashMap<BasicBlock, BasicBlock> {
-    let mut duplicates = FxHashMap::default();
-
-    let bbs_to_go_through =
-        body.basic_blocks.iter_enumerated().filter(|(_, bbd)| !bbd.is_cleanup).count();
-
-    let mut same_hashes =
-        FxHashMap::with_capacity_and_hasher(bbs_to_go_through, Default::default());
-
-    // Go through the basic blocks backwards. This means that in case of duplicates,
-    // we can use the basic block with the highest index as the replacement for all lower ones.
-    // For example, if bb1, bb2 and bb3 are duplicates, we will first insert bb3 in same_hashes.
-    // Then we will see that bb2 is a duplicate of bb3,
-    // and insert bb2 with the replacement bb3 in the duplicates list.
-    // When we see bb1, we see that it is a duplicate of bb3, and therefore insert it in the
-    // duplicates list with replacement bb3.
-    // When the duplicates are removed, we will end up with only bb3.
-    for (bb, bbd) in body.basic_blocks.iter_enumerated().rev().filter(|(_, bbd)| !bbd.is_cleanup) {
-        // Basic blocks can get really big, so to avoid checking for duplicates in basic blocks
-        // that are unlikely to have duplicates, we stop early. The early bail number has been
-        // found experimentally by eprintln while compiling the crates in the rustc-perf suite.
-        if bbd.statements.len() > 10 {
-            continue;
-        }
-
-        let to_hash = BasicBlockHashable { basic_block_data: bbd };
-        let entry = same_hashes.entry(to_hash);
-        match entry {
-            Entry::Occupied(occupied) => {
-                // The basic block was already in the hashmap, which means we have a duplicate
-                let value = *occupied.get();
-                debug!("Inserting {:?} -> {:?}", bb, value);
-                duplicates.try_insert(bb, value).expect("key was already inserted");
-            }
-            Entry::Vacant(vacant) => {
-                vacant.insert(bb);
-            }
-        }
-    }
-
-    duplicates
-}
-
-struct BasicBlockHashable<'a, 'tcx> {
-    basic_block_data: &'a BasicBlockData<'tcx>,
-}
-
-impl Hash for BasicBlockHashable<'_, '_> {
-    fn hash<H: Hasher>(&self, state: &mut H) {
-        hash_statements(state, self.basic_block_data.statements.iter());
-        // Note that since we only hash the kind, we lose span information if we deduplicate the
-        // blocks.
-        self.basic_block_data.terminator().kind.hash(state);
-    }
-}
-
-impl Eq for BasicBlockHashable<'_, '_> {}
-
-impl PartialEq for BasicBlockHashable<'_, '_> {
-    fn eq(&self, other: &Self) -> bool {
-        self.basic_block_data.statements.len() == other.basic_block_data.statements.len()
-            && &self.basic_block_data.terminator().kind == &other.basic_block_data.terminator().kind
-            && iter::zip(&self.basic_block_data.statements, &other.basic_block_data.statements)
-                .all(|(x, y)| statement_eq(&x.kind, &y.kind))
-    }
-}
-
-fn hash_statements<'a, 'tcx, H: Hasher>(
-    hasher: &mut H,
-    iter: impl Iterator<Item = &'a Statement<'tcx>>,
-) where
-    'tcx: 'a,
-{
-    for stmt in iter {
-        statement_hash(hasher, &stmt.kind);
-    }
-}
-
-fn statement_hash<H: Hasher>(hasher: &mut H, stmt: &StatementKind<'_>) {
-    match stmt {
-        StatementKind::Assign(box (place, rvalue)) => {
-            place.hash(hasher);
-            rvalue_hash(hasher, rvalue)
-        }
-        x => x.hash(hasher),
-    };
-}
-
-fn rvalue_hash<H: Hasher>(hasher: &mut H, rvalue: &Rvalue<'_>) {
-    match rvalue {
-        Rvalue::Use(op) => operand_hash(hasher, op),
-        x => x.hash(hasher),
-    };
-}
-
-fn operand_hash<H: Hasher>(hasher: &mut H, operand: &Operand<'_>) {
-    match operand {
-        Operand::Constant(box ConstOperand { user_ty: _, const_, span: _ }) => const_.hash(hasher),
-        x => x.hash(hasher),
-    };
-}
-
-fn statement_eq<'tcx>(lhs: &StatementKind<'tcx>, rhs: &StatementKind<'tcx>) -> bool {
-    let res = match (lhs, rhs) {
-        (
-            StatementKind::Assign(box (place, rvalue)),
-            StatementKind::Assign(box (place2, rvalue2)),
-        ) => place == place2 && rvalue_eq(rvalue, rvalue2),
-        (x, y) => x == y,
-    };
-    debug!("statement_eq lhs: `{:?}` rhs: `{:?}` result: {:?}", lhs, rhs, res);
-    res
-}
-
-fn rvalue_eq<'tcx>(lhs: &Rvalue<'tcx>, rhs: &Rvalue<'tcx>) -> bool {
-    let res = match (lhs, rhs) {
-        (Rvalue::Use(op1), Rvalue::Use(op2)) => operand_eq(op1, op2),
-        (x, y) => x == y,
-    };
-    debug!("rvalue_eq lhs: `{:?}` rhs: `{:?}` result: {:?}", lhs, rhs, res);
-    res
-}
-
-fn operand_eq<'tcx>(lhs: &Operand<'tcx>, rhs: &Operand<'tcx>) -> bool {
-    let res = match (lhs, rhs) {
-        (
-            Operand::Constant(box ConstOperand { user_ty: _, const_, span: _ }),
-            Operand::Constant(box ConstOperand { user_ty: _, const_: const2, span: _ }),
-        ) => const_ == const2,
-        (x, y) => x == y,
-    };
-    debug!("operand_eq lhs: `{:?}` rhs: `{:?}` result: {:?}", lhs, rhs, res);
-    res
-}
diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs
index b572f6ca0b3..397d21a857f 100644
--- a/compiler/rustc_mir_transform/src/lib.rs
+++ b/compiler/rustc_mir_transform/src/lib.rs
@@ -135,7 +135,6 @@ declare_passes! {
         Initial,
         Final
     };
-    mod deduplicate_blocks : DeduplicateBlocks;
     mod deref_separator : Derefer;
     mod dest_prop : DestinationPropagation;
     pub mod dump_mir : Marker;
@@ -700,7 +699,6 @@ fn run_optimization_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
             &nrvo::RenameReturnPlace,
             &simplify::SimplifyLocals::Final,
             &multiple_return_terminators::MultipleReturnTerminators,
-            &deduplicate_blocks::DeduplicateBlocks,
             &large_enums::EnumSizeOpt { discrepancy: 128 },
             // Some cleanup necessary at least for LLVM and potentially other codegen backends.
             &add_call_guards::CriticalCallEdges,
diff --git a/compiler/rustc_parse/src/parser/generics.rs b/compiler/rustc_parse/src/parser/generics.rs
index 86816819be2..11f0e579de5 100644
--- a/compiler/rustc_parse/src/parser/generics.rs
+++ b/compiler/rustc_parse/src/parser/generics.rs
@@ -302,26 +302,16 @@ impl<'a> Parser<'a> {
     pub(super) fn parse_contract(
         &mut self,
     ) -> PResult<'a, Option<rustc_ast::ptr::P<ast::FnContract>>> {
-        let gate = |span| {
-            if self.psess.contract_attribute_spans.contains(span) {
-                // span was generated via a builtin contracts attribute, so gate as end-user visible
-                self.psess.gated_spans.gate(sym::contracts, span);
-            } else {
-                // span was not generated via a builtin contracts attribute, so gate as internal machinery
-                self.psess.gated_spans.gate(sym::contracts_internals, span);
-            }
-        };
-
         let requires = if self.eat_keyword_noexpect(exp!(ContractRequires).kw) {
+            self.psess.gated_spans.gate(sym::contracts_internals, self.prev_token.span);
             let precond = self.parse_expr()?;
-            gate(precond.span);
             Some(precond)
         } else {
             None
         };
         let ensures = if self.eat_keyword_noexpect(exp!(ContractEnsures).kw) {
+            self.psess.gated_spans.gate(sym::contracts_internals, self.prev_token.span);
             let postcond = self.parse_expr()?;
-            gate(postcond.span);
             Some(postcond)
         } else {
             None
diff --git a/compiler/rustc_passes/Cargo.toml b/compiler/rustc_passes/Cargo.toml
index 2b8a3b9ce23..f592a12ab75 100644
--- a/compiler/rustc_passes/Cargo.toml
+++ b/compiler/rustc_passes/Cargo.toml
@@ -7,6 +7,7 @@ edition = "2021"
 # tidy-alphabetical-start
 rustc_abi = { path = "../rustc_abi" }
 rustc_ast = { path = "../rustc_ast" }
+rustc_ast_lowering = { path = "../rustc_ast_lowering" }
 rustc_ast_pretty = { path = "../rustc_ast_pretty" }
 rustc_attr_parsing = { path = "../rustc_attr_parsing" }
 rustc_data_structures = { path = "../rustc_data_structures" }
diff --git a/compiler/rustc_passes/src/abi_test.rs b/compiler/rustc_passes/src/abi_test.rs
index 4601bb87b76..671b7d7ad76 100644
--- a/compiler/rustc_passes/src/abi_test.rs
+++ b/compiler/rustc_passes/src/abi_test.rs
@@ -46,15 +46,6 @@ fn unwrap_fn_abi<'tcx>(
                 span: tcx.def_span(item_def_id),
             });
         }
-        Err(FnAbiError::AdjustForForeignAbi(e)) => {
-            // Sadly there seems to be no `into_diagnostic` for this case... and I am not sure if
-            // this can even be reached. Anyway this is a perma-unstable debug attribute, an ICE
-            // isn't the worst thing. Also this matches what codegen does.
-            span_bug!(
-                tcx.def_span(item_def_id),
-                "error computing fn_abi_of_instance, cannot adjust for foreign ABI: {e:?}",
-            )
-        }
     }
 }
 
diff --git a/compiler/rustc_passes/src/naked_functions.rs b/compiler/rustc_passes/src/naked_functions.rs
index 1e165b22e51..875b6edb58c 100644
--- a/compiler/rustc_passes/src/naked_functions.rs
+++ b/compiler/rustc_passes/src/naked_functions.rs
@@ -1,5 +1,6 @@
 //! Checks validity of naked functions.
 
+use rustc_abi::ExternAbi;
 use rustc_hir as hir;
 use rustc_hir::def::DefKind;
 use rustc_hir::def_id::{LocalDefId, LocalModDefId};
@@ -11,7 +12,6 @@ use rustc_middle::span_bug;
 use rustc_middle::ty::TyCtxt;
 use rustc_session::lint::builtin::UNDEFINED_NAKED_FUNCTION_ABI;
 use rustc_span::{Span, sym};
-use rustc_target::spec::abi::Abi;
 
 use crate::errors::{
     NakedAsmOutsideNakedFn, NakedFunctionsAsmBlock, NakedFunctionsMustNakedAsm, NoPatterns,
@@ -61,8 +61,8 @@ fn check_mod_naked_functions(tcx: TyCtxt<'_>, module_def_id: LocalModDefId) {
 }
 
 /// Checks that function uses non-Rust ABI.
-fn check_abi(tcx: TyCtxt<'_>, def_id: LocalDefId, abi: Abi) {
-    if abi == Abi::Rust {
+fn check_abi(tcx: TyCtxt<'_>, def_id: LocalDefId, abi: ExternAbi) {
+    if abi == ExternAbi::Rust {
         let hir_id = tcx.local_def_id_to_hir_id(def_id);
         let span = tcx.def_span(def_id);
         tcx.emit_node_span_lint(
diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs
index 34f1ca55c78..fd30d0d4867 100644
--- a/compiler/rustc_passes/src/stability.rs
+++ b/compiler/rustc_passes/src/stability.rs
@@ -4,6 +4,7 @@
 use std::mem::replace;
 use std::num::NonZero;
 
+use rustc_ast_lowering::stability::extern_abi_stability;
 use rustc_attr_parsing::{
     self as attr, ConstStability, DeprecatedSince, Stability, StabilityLevel, StableSince,
     UnstableReason, VERSION_PLACEHOLDER,
@@ -1027,8 +1028,8 @@ impl<'tcx> Visitor<'tcx> for CheckTraitImplStable<'tcx> {
         if let TyKind::Never = t.kind {
             self.fully_stable = false;
         }
-        if let TyKind::BareFn(f) = t.kind {
-            if rustc_target::spec::abi::is_stable(f.abi.name()).is_err() {
+        if let TyKind::BareFn(function) = t.kind {
+            if extern_abi_stability(function.abi).is_err() {
                 self.fully_stable = false;
             }
         }
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs
index 8d42b478647..5db6f83f3ee 100644
--- a/compiler/rustc_resolve/src/diagnostics.rs
+++ b/compiler/rustc_resolve/src/diagnostics.rs
@@ -1127,7 +1127,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
         });
 
         // Make sure error reporting is deterministic.
-        suggestions.sort_by(|a, b| a.candidate.as_str().partial_cmp(b.candidate.as_str()).unwrap());
+        suggestions.sort_by(|a, b| a.candidate.as_str().cmp(b.candidate.as_str()));
 
         match find_best_match_for_name(
             &suggestions.iter().map(|suggestion| suggestion.candidate).collect::<Vec<Symbol>>(),
@@ -2256,14 +2256,15 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
         mut path: Vec<Segment>,
         parent_scope: &ParentScope<'ra>,
     ) -> Option<(Vec<Segment>, Option<String>)> {
-        match (path.get(0), path.get(1)) {
+        match path[..] {
             // `{{root}}::ident::...` on both editions.
             // On 2015 `{{root}}` is usually added implicitly.
-            (Some(fst), Some(snd))
-                if fst.ident.name == kw::PathRoot && !snd.ident.is_path_segment_keyword() => {}
+            [first, second, ..]
+                if first.ident.name == kw::PathRoot && !second.ident.is_path_segment_keyword() => {}
             // `ident::...` on 2018.
-            (Some(fst), _)
-                if fst.ident.span.at_least_rust_2018() && !fst.ident.is_path_segment_keyword() =>
+            [first, ..]
+                if first.ident.span.at_least_rust_2018()
+                    && !first.ident.is_path_segment_keyword() =>
             {
                 // Insert a placeholder that's later replaced by `self`/`super`/etc.
                 path.insert(0, Segment::from_ident(Ident::empty()));
@@ -2374,7 +2375,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
         // 2) `std` suggestions before `core` suggestions.
         let mut extern_crate_names =
             self.extern_prelude.keys().map(|ident| ident.name).collect::<Vec<_>>();
-        extern_crate_names.sort_by(|a, b| b.as_str().partial_cmp(a.as_str()).unwrap());
+        extern_crate_names.sort_by(|a, b| b.as_str().cmp(a.as_str()));
 
         for name in extern_crate_names.into_iter() {
             // Replace first ident with a crate name and check if that is valid.
diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs
index 508bd831ccb..03aeb8720ca 100644
--- a/compiler/rustc_resolve/src/late.rs
+++ b/compiler/rustc_resolve/src/late.rs
@@ -923,6 +923,21 @@ impl<'ra: 'ast, 'ast, 'tcx> Visitor<'ast> for LateResolutionVisitor<'_, 'ast, 'r
         self.diag_metadata.current_trait_object = prev;
         self.diag_metadata.current_type_path = prev_ty;
     }
+
+    fn visit_ty_pat(&mut self, t: &'ast TyPat) -> Self::Result {
+        match &t.kind {
+            TyPatKind::Range(start, end, _) => {
+                if let Some(start) = start {
+                    self.resolve_anon_const(start, AnonConstKind::ConstArg(IsRepeatExpr::No));
+                }
+                if let Some(end) = end {
+                    self.resolve_anon_const(end, AnonConstKind::ConstArg(IsRepeatExpr::No));
+                }
+            }
+            TyPatKind::Err(_) => {}
+        }
+    }
+
     fn visit_poly_trait_ref(&mut self, tref: &'ast PolyTraitRef) {
         let span = tref.span.shrink_to_lo().to(tref.trait_ref.path.span.shrink_to_lo());
         self.with_generic_param_rib(
diff --git a/compiler/rustc_session/src/config/cfg.rs b/compiler/rustc_session/src/config/cfg.rs
index 4762281c329..aa9ebdd9cea 100644
--- a/compiler/rustc_session/src/config/cfg.rs
+++ b/compiler/rustc_session/src/config/cfg.rs
@@ -9,7 +9,7 @@
 //!
 //! ## Adding a new cfg
 //!
-//! Adding a new feature requires two new symbols one for the cfg it-self
+//! Adding a new feature requires two new symbols one for the cfg itself
 //! and the second one for the unstable feature gate, those are defined in
 //! `rustc_span::symbol`.
 //!
diff --git a/compiler/rustc_session/src/parse.rs b/compiler/rustc_session/src/parse.rs
index d4db05ce139..e0405a71f65 100644
--- a/compiler/rustc_session/src/parse.rs
+++ b/compiler/rustc_session/src/parse.rs
@@ -208,10 +208,6 @@ pub struct ParseSess {
     pub config: Cfg,
     pub check_config: CheckCfg,
     pub edition: Edition,
-    /// Places where contract attributes were expanded into unstable AST forms.
-    /// This is used to allowlist those spans (so that we only check them against the feature
-    /// gate for the externally visible interface, and not internal implmentation machinery).
-    pub contract_attribute_spans: AppendOnlyVec<Span>,
     /// Places where raw identifiers were used. This is used to avoid complaining about idents
     /// clashing with keywords in new editions.
     pub raw_identifier_spans: AppendOnlyVec<Span>,
@@ -260,7 +256,6 @@ impl ParseSess {
             config: Cfg::default(),
             check_config: CheckCfg::default(),
             edition: ExpnId::root().expn_data().edition,
-            contract_attribute_spans: Default::default(),
             raw_identifier_spans: Default::default(),
             bad_unicode_identifiers: Lock::new(Default::default()),
             source_map,
diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs
index c819d433235..bb59b4c40bd 100644
--- a/compiler/rustc_span/src/symbol.rs
+++ b/compiler/rustc_span/src/symbol.rs
@@ -193,6 +193,7 @@ symbols! {
         Cleanup,
         Clone,
         CoercePointee,
+        CoercePointeeValidated,
         CoerceUnsized,
         Command,
         ConstParamTy,
@@ -619,6 +620,7 @@ symbols! {
         cmp_partialord_lt,
         cmpxchg16b_target_feature,
         cmse_nonsecure_entry,
+        coerce_pointee_validated,
         coerce_unsized,
         cold,
         cold_path,
@@ -1024,6 +1026,7 @@ symbols! {
         generic_const_exprs,
         generic_const_items,
         generic_param_attrs,
+        generic_pattern_types,
         get_context,
         global_alloc_ty,
         global_allocator,
diff --git a/compiler/rustc_target/src/asm/mod.rs b/compiler/rustc_target/src/asm/mod.rs
index 0a4ffb15219..9f791603c72 100644
--- a/compiler/rustc_target/src/asm/mod.rs
+++ b/compiler/rustc_target/src/asm/mod.rs
@@ -39,12 +39,12 @@ macro_rules! def_reg_class {
                 }
             }
 
-            pub fn parse(name: rustc_span::Symbol) -> Result<Self, &'static str> {
+            pub fn parse(name: rustc_span::Symbol) -> Result<Self, &'static [rustc_span::Symbol]> {
                 match name {
                     $(
                         rustc_span::sym::$class => Ok(Self::$class),
                     )*
-                    _ => Err("unknown register class"),
+                    _ => Err(&[$(rustc_span::sym::$class),*]),
                 }
             }
         }
@@ -635,7 +635,7 @@ impl InlineAsmRegClass {
         }
     }
 
-    pub fn parse(arch: InlineAsmArch, name: Symbol) -> Result<Self, &'static str> {
+    pub fn parse(arch: InlineAsmArch, name: Symbol) -> Result<Self, &'static [rustc_span::Symbol]> {
         Ok(match arch {
             InlineAsmArch::X86 | InlineAsmArch::X86_64 => {
                 Self::X86(X86InlineAsmRegClass::parse(name)?)
diff --git a/compiler/rustc_target/src/callconv/mod.rs b/compiler/rustc_target/src/callconv/mod.rs
index 50ac6c8fcde..b49dd258869 100644
--- a/compiler/rustc_target/src/callconv/mod.rs
+++ b/compiler/rustc_target/src/callconv/mod.rs
@@ -6,7 +6,6 @@ use rustc_abi::{
     Size, TyAbiInterface, TyAndLayout,
 };
 use rustc_macros::HashStable_Generic;
-use rustc_span::Symbol;
 
 use crate::spec::{HasTargetSpec, HasWasmCAbiOpt, HasX86AbiOpt, WasmCAbi};
 
@@ -623,19 +622,8 @@ impl<'a, Ty: fmt::Display> fmt::Debug for FnAbi<'a, Ty> {
     }
 }
 
-/// Error produced by attempting to adjust a `FnAbi`, for a "foreign" ABI.
-#[derive(Copy, Clone, Debug, HashStable_Generic)]
-pub enum AdjustForForeignAbiError {
-    /// Target architecture doesn't support "foreign" (i.e. non-Rust) ABIs.
-    Unsupported { arch: Symbol, abi: ExternAbi },
-}
-
 impl<'a, Ty> FnAbi<'a, Ty> {
-    pub fn adjust_for_foreign_abi<C>(
-        &mut self,
-        cx: &C,
-        abi: ExternAbi,
-    ) -> Result<(), AdjustForForeignAbiError>
+    pub fn adjust_for_foreign_abi<C>(&mut self, cx: &C, abi: ExternAbi)
     where
         Ty: TyAbiInterface<'a, C> + Copy,
         C: HasDataLayout + HasTargetSpec + HasWasmCAbiOpt + HasX86AbiOpt,
@@ -644,7 +632,7 @@ impl<'a, Ty> FnAbi<'a, Ty> {
             if let Some(arg) = self.args.first_mut() {
                 arg.pass_by_stack_offset(None);
             }
-            return Ok(());
+            return;
         }
 
         let spec = cx.target_spec();
@@ -719,15 +707,8 @@ impl<'a, Ty> FnAbi<'a, Ty> {
             }
             "wasm64" => wasm::compute_c_abi_info(cx, self),
             "bpf" => bpf::compute_abi_info(self),
-            arch => {
-                return Err(AdjustForForeignAbiError::Unsupported {
-                    arch: Symbol::intern(arch),
-                    abi,
-                });
-            }
+            arch => panic!("no lowering implemented for {arch}"),
         }
-
-        Ok(())
     }
 
     pub fn adjust_for_rust_abi<C>(&mut self, cx: &C, abi: ExternAbi)
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index df1862ec27e..7e84127c93a 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -57,13 +57,6 @@ use crate::spec::crt_objects::CrtObjects;
 
 pub mod crt_objects;
 
-pub mod abi {
-    pub use rustc_abi::{
-        AbiDisabled, AbiUnsupported, ExternAbi as Abi, all_names, enabled_names, is_enabled,
-        is_stable, lookup,
-    };
-}
-
 mod base;
 mod json;
 
@@ -1797,7 +1790,7 @@ supported_targets! {
     ("x86_64-unknown-l4re-uclibc", x86_64_unknown_l4re_uclibc),
 
     ("aarch64-unknown-redox", aarch64_unknown_redox),
-    ("i686-unknown-redox", i686_unknown_redox),
+    ("i586-unknown-redox", i586_unknown_redox),
     ("x86_64-unknown-redox", x86_64_unknown_redox),
 
     ("i386-apple-ios", i386_apple_ios),
diff --git a/compiler/rustc_target/src/spec/targets/i686_unknown_redox.rs b/compiler/rustc_target/src/spec/targets/i586_unknown_redox.rs
index bfe52a330d3..29ef8b883a1 100644
--- a/compiler/rustc_target/src/spec/targets/i686_unknown_redox.rs
+++ b/compiler/rustc_target/src/spec/targets/i586_unknown_redox.rs
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
     base.stack_probes = StackProbeType::Call;
 
     Target {
-        llvm_target: "i686-unknown-redox".into(),
+        llvm_target: "i586-unknown-redox".into(),
         metadata: crate::spec::TargetMetadata {
             description: None,
             tier: None,
diff --git a/compiler/rustc_target/src/spec/targets/i686_linux_android.rs b/compiler/rustc_target/src/spec/targets/i686_linux_android.rs
index dcf9b6b4460..1b8f4c1be2d 100644
--- a/compiler/rustc_target/src/spec/targets/i686_linux_android.rs
+++ b/compiler/rustc_target/src/spec/targets/i686_linux_android.rs
@@ -9,7 +9,7 @@ pub(crate) fn target() -> Target {
     base.max_atomic_width = Some(64);
 
     // https://developer.android.com/ndk/guides/abis.html#x86
-    base.cpu = "pentiumpro".into();
+    base.cpu = "pentium4".into();
     base.features = "+mmx,+sse,+sse2,+sse3,+ssse3".into();
     base.stack_probes = StackProbeType::Inline;
 
diff --git a/compiler/rustc_target/src/spec/targets/i686_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/i686_unknown_uefi.rs
index c1ed565f0fe..736b9131022 100644
--- a/compiler/rustc_target/src/spec/targets/i686_unknown_uefi.rs
+++ b/compiler/rustc_target/src/spec/targets/i686_unknown_uefi.rs
@@ -5,7 +5,7 @@
 // The cdecl ABI is used. It differs from the stdcall or fastcall ABI.
 // "i686-unknown-windows" is used to get the minimal subset of windows-specific features.
 
-use crate::spec::{RustcAbi, Target, base};
+use crate::spec::{LinkerFlavor, Lld, RustcAbi, Target, add_link_args, base};
 
 pub(crate) fn target() -> Target {
     let mut base = base::uefi_msvc::opts();
@@ -24,6 +24,13 @@ pub(crate) fn target() -> Target {
     base.features = "-mmx,-sse,+soft-float".into();
     base.rustc_abi = Some(RustcAbi::X86Softfloat);
 
+    // Turn off DWARF. This fixes an lld warning, "section name .debug_frame is longer than 8
+    // characters and will use a non-standard string table". That section will not be created if
+    // DWARF is disabled.
+    //
+    // This is only needed in the i686 target due to using the `-gnu` LLVM target (see below).
+    add_link_args(&mut base.post_link_args, LinkerFlavor::Msvc(Lld::No), &["/DEBUG:NODWARF"]);
+
     // Use -GNU here, because of the reason below:
     // Background and Problem:
     //   If we use i686-unknown-windows, the LLVM IA32 MSVC generates compiler intrinsic
diff --git a/compiler/rustc_target/src/target_features.rs b/compiler/rustc_target/src/target_features.rs
index ea7c15a3595..1ba8defedae 100644
--- a/compiler/rustc_target/src/target_features.rs
+++ b/compiler/rustc_target/src/target_features.rs
@@ -145,6 +145,7 @@ static ARM_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
     ("dotprod", Unstable(sym::arm_target_feature), &["neon"]),
     ("dsp", Unstable(sym::arm_target_feature), &[]),
     ("fp-armv8", Unstable(sym::arm_target_feature), &["vfp4"]),
+    ("fp16", Unstable(sym::arm_target_feature), &["neon"]),
     ("fpregs", Unstable(sym::arm_target_feature), &[]),
     ("i8mm", Unstable(sym::arm_target_feature), &["neon"]),
     ("mclass", Unstable(sym::arm_target_feature), &[]),
diff --git a/compiler/rustc_trait_selection/src/error_reporting/infer/need_type_info.rs b/compiler/rustc_trait_selection/src/error_reporting/infer/need_type_info.rs
index 99b70c87ccd..9e7e96dddd7 100644
--- a/compiler/rustc_trait_selection/src/error_reporting/infer/need_type_info.rs
+++ b/compiler/rustc_trait_selection/src/error_reporting/infer/need_type_info.rs
@@ -18,6 +18,8 @@ use rustc_middle::ty::{
     TypeFoldable, TypeFolder, TypeSuperFoldable, TypeckResults,
 };
 use rustc_span::{BytePos, DUMMY_SP, FileName, Ident, Span, sym};
+use rustc_type_ir::inherent::*;
+use rustc_type_ir::visit::TypeVisitableExt;
 use tracing::{debug, instrument, warn};
 
 use super::nice_region_error::placeholder_error::Highlighted;
@@ -155,27 +157,92 @@ impl UnderspecifiedArgKind {
     }
 }
 
-struct ClosureEraser<'tcx> {
-    tcx: TyCtxt<'tcx>,
+struct ClosureEraser<'a, 'tcx> {
+    infcx: &'a InferCtxt<'tcx>,
 }
 
-impl<'tcx> TypeFolder<TyCtxt<'tcx>> for ClosureEraser<'tcx> {
+impl<'a, 'tcx> ClosureEraser<'a, 'tcx> {
+    fn new_infer(&mut self) -> Ty<'tcx> {
+        self.infcx.next_ty_var(DUMMY_SP)
+    }
+}
+
+impl<'a, 'tcx> TypeFolder<TyCtxt<'tcx>> for ClosureEraser<'a, 'tcx> {
     fn cx(&self) -> TyCtxt<'tcx> {
-        self.tcx
+        self.infcx.tcx
     }
 
     fn fold_ty(&mut self, ty: Ty<'tcx>) -> Ty<'tcx> {
         match ty.kind() {
             ty::Closure(_, args) => {
+                // For a closure type, we turn it into a function pointer so that it gets rendered
+                // as `fn(args) -> Ret`.
                 let closure_sig = args.as_closure().sig();
                 Ty::new_fn_ptr(
-                    self.tcx,
-                    self.tcx.signature_unclosure(closure_sig, hir::Safety::Safe),
+                    self.cx(),
+                    self.cx().signature_unclosure(closure_sig, hir::Safety::Safe),
                 )
             }
-            _ => ty.super_fold_with(self),
+            ty::Adt(_, args) if !args.iter().any(|a| a.has_infer()) => {
+                // We have a type that doesn't have any inference variables, so we replace
+                // the whole thing with `_`. The type system already knows about this type in
+                // its entirety and it is redundant to specify it for the user. The user only
+                // needs to specify the type parameters that we *couldn't* figure out.
+                self.new_infer()
+            }
+            ty::Adt(def, args) => {
+                let generics = self.cx().generics_of(def.did());
+                let generics: Vec<bool> = generics
+                    .own_params
+                    .iter()
+                    .map(|param| param.default_value(self.cx()).is_some())
+                    .collect();
+                let ty = Ty::new_adt(
+                    self.cx(),
+                    *def,
+                    self.cx().mk_args_from_iter(generics.into_iter().zip(args.iter()).map(
+                        |(has_default, arg)| {
+                            if arg.has_infer() {
+                                // This param has an unsubstituted type variable, meaning that this
+                                // type has a (potentially deeply nested) type parameter from the
+                                // corresponding type's definition. We have explicitly asked this
+                                // type to not be hidden. In either case, we keep the type and don't
+                                // substitute with `_` just yet.
+                                arg.fold_with(self)
+                            } else if has_default {
+                                // We have a type param that has a default type, like the allocator
+                                // in Vec. We decided to show `Vec` itself, because it hasn't yet
+                                // been replaced by an `_` `Infer`, but we want to ensure that the
+                                // type parameter with default types does *not* get replaced with
+                                // `_` because then we'd end up with `Vec<_, _>`, instead of
+                                // `Vec<_>`.
+                                arg
+                            } else if let GenericArgKind::Type(_) = arg.kind() {
+                                // We don't replace lifetime or const params, only type params.
+                                self.new_infer().into()
+                            } else {
+                                arg.fold_with(self)
+                            }
+                        },
+                    )),
+                );
+                ty
+            }
+            _ if ty.has_infer() => {
+                // This type has a (potentially nested) type parameter that we couldn't figure out.
+                // We will print this depth of type, so at least the type name and at least one of
+                // its type parameters.
+                ty.super_fold_with(self)
+            }
+            // We don't have an unknown type parameter anywhere, replace with `_`.
+            _ => self.new_infer(),
         }
     }
+
+    fn fold_const(&mut self, c: ty::Const<'tcx>) -> ty::Const<'tcx> {
+        // Avoid accidentally erasing the type of the const.
+        c
+    }
 }
 
 fn fmt_printer<'a, 'tcx>(infcx: &'a InferCtxt<'tcx>, ns: Namespace) -> FmtPrinter<'a, 'tcx> {
@@ -219,9 +286,9 @@ fn ty_to_string<'tcx>(
 ) -> String {
     let mut printer = fmt_printer(infcx, Namespace::TypeNS);
     let ty = infcx.resolve_vars_if_possible(ty);
-    // We use `fn` ptr syntax for closures, but this only works when the closure
-    // does not capture anything.
-    let ty = ty.fold_with(&mut ClosureEraser { tcx: infcx.tcx });
+    // We use `fn` ptr syntax for closures, but this only works when the closure does not capture
+    // anything. We also remove all type parameters that are fully known to the type system.
+    let ty = ty.fold_with(&mut ClosureEraser { infcx });
 
     match (ty.kind(), called_method_def_id) {
         // We don't want the regular output for `fn`s because it includes its path in
diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs
index e8c2528aa6e..2f6bbd7f4cf 100644
--- a/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs
+++ b/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs
@@ -2,7 +2,7 @@ use std::fmt;
 
 use rustc_middle::traits::ObligationCause;
 use rustc_middle::traits::query::NoSolution;
-pub use rustc_middle::traits::query::type_op::Normalize;
+pub use rustc_middle::traits::query::type_op::{DeeplyNormalize, Normalize};
 use rustc_middle::ty::fold::TypeFoldable;
 use rustc_middle::ty::{self, Lift, ParamEnvAnd, Ty, TyCtxt, TypeVisitableExt};
 use rustc_span::Span;
@@ -28,12 +28,53 @@ where
     }
 
     fn perform_locally_with_next_solver(
+        _ocx: &ObligationCtxt<'_, 'tcx>,
+        key: ParamEnvAnd<'tcx, Self>,
+        _span: Span,
+    ) -> Result<Self::QueryResponse, NoSolution> {
+        Ok(key.value.value)
+    }
+}
+
+impl<'tcx, T> super::QueryTypeOp<'tcx> for DeeplyNormalize<T>
+where
+    T: Normalizable<'tcx> + 'tcx,
+{
+    type QueryResponse = T;
+
+    fn try_fast_path(_tcx: TyCtxt<'tcx>, key: &ParamEnvAnd<'tcx, Self>) -> Option<T> {
+        if !key.value.value.has_aliases() { Some(key.value.value) } else { None }
+    }
+
+    fn perform_query(
+        tcx: TyCtxt<'tcx>,
+        canonicalized: CanonicalQueryInput<'tcx, ParamEnvAnd<'tcx, Self>>,
+    ) -> Result<CanonicalQueryResponse<'tcx, Self::QueryResponse>, NoSolution> {
+        T::type_op_method(
+            tcx,
+            CanonicalQueryInput {
+                typing_mode: canonicalized.typing_mode,
+                canonical: canonicalized.canonical.unchecked_map(
+                    |ty::ParamEnvAnd { param_env, value }| ty::ParamEnvAnd {
+                        param_env,
+                        value: Normalize { value: value.value },
+                    },
+                ),
+            },
+        )
+    }
+
+    fn perform_locally_with_next_solver(
         ocx: &ObligationCtxt<'_, 'tcx>,
         key: ParamEnvAnd<'tcx, Self>,
         span: Span,
     ) -> Result<Self::QueryResponse, NoSolution> {
-        // FIXME(-Znext-solver): shouldn't be using old normalizer
-        Ok(ocx.normalize(&ObligationCause::dummy_with_span(span), key.param_env, key.value.value))
+        ocx.deeply_normalize(
+            &ObligationCause::dummy_with_span(span),
+            key.param_env,
+            key.value.value,
+        )
+        .map_err(|_| NoSolution)
     }
 }
 
@@ -81,3 +122,14 @@ impl<'tcx> Normalizable<'tcx> for ty::FnSig<'tcx> {
         tcx.type_op_normalize_fn_sig(canonicalized)
     }
 }
+
+/// This impl is not needed, since we never normalize type outlives predicates
+/// in the old solver, but is required by trait bounds to be happy.
+impl<'tcx> Normalizable<'tcx> for ty::PolyTypeOutlivesPredicate<'tcx> {
+    fn type_op_method(
+        _tcx: TyCtxt<'tcx>,
+        _canonicalized: CanonicalQueryInput<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
+    ) -> Result<CanonicalQueryResponse<'tcx, Self>, NoSolution> {
+        unreachable!("we never normalize PolyTypeOutlivesPredicate")
+    }
+}
diff --git a/compiler/rustc_trait_selection/src/traits/wf.rs b/compiler/rustc_trait_selection/src/traits/wf.rs
index 96051ad0aa5..c27bd269b0d 100644
--- a/compiler/rustc_trait_selection/src/traits/wf.rs
+++ b/compiler/rustc_trait_selection/src/traits/wf.rs
@@ -8,8 +8,9 @@ use rustc_middle::ty::{
     self, GenericArg, GenericArgKind, GenericArgsRef, Ty, TyCtxt, TypeSuperVisitable,
     TypeVisitable, TypeVisitableExt, TypeVisitor,
 };
-use rustc_span::Span;
+use rustc_session::parse::feature_err;
 use rustc_span::def_id::{DefId, LocalDefId};
+use rustc_span::{Span, sym};
 use tracing::{debug, instrument, trace};
 
 use crate::infer::InferCtxt;
@@ -704,8 +705,47 @@ impl<'a, 'tcx> TypeVisitor<TyCtxt<'tcx>> for WfPredicates<'a, 'tcx> {
                 ));
             }
 
-            ty::Pat(subty, _) => {
+            ty::Pat(subty, pat) => {
                 self.require_sized(subty, ObligationCauseCode::Misc);
+                match *pat {
+                    ty::PatternKind::Range { start, end, include_end: _ } => {
+                        let mut check = |c| {
+                            let cause = self.cause(ObligationCauseCode::Misc);
+                            self.out.push(traits::Obligation::with_depth(
+                                tcx,
+                                cause.clone(),
+                                self.recursion_depth,
+                                self.param_env,
+                                ty::Binder::dummy(ty::PredicateKind::Clause(
+                                    ty::ClauseKind::ConstArgHasType(c, subty),
+                                )),
+                            ));
+                            if !tcx.features().generic_pattern_types() {
+                                if c.has_param() {
+                                    if self.span.is_dummy() {
+                                        self.tcx().dcx().delayed_bug(
+                                            "feature error should be reported elsewhere, too",
+                                        );
+                                    } else {
+                                        feature_err(
+                                            &self.tcx().sess,
+                                            sym::generic_pattern_types,
+                                            self.span,
+                                            "wraparound pattern type ranges cause monomorphization time errors",
+                                        )
+                                        .emit();
+                                    }
+                                }
+                            }
+                        };
+                        if let Some(start) = start {
+                            check(start)
+                        }
+                        if let Some(end) = end {
+                            check(end)
+                        }
+                    }
+                }
             }
 
             ty::Tuple(tys) => {
diff --git a/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs
index 169f3a78c26..332b00e8423 100644
--- a/compiler/rustc_ty_utils/src/abi.rs
+++ b/compiler/rustc_ty_utils/src/abi.rs
@@ -650,7 +650,7 @@ fn fn_abi_new_uncached<'tcx>(
         conv,
         can_unwind: fn_can_unwind(cx.tcx(), fn_def_id, sig.abi),
     };
-    fn_abi_adjust_for_abi(cx, &mut fn_abi, sig.abi, fn_def_id)?;
+    fn_abi_adjust_for_abi(cx, &mut fn_abi, sig.abi, fn_def_id);
     debug!("fn_abi_new_uncached = {:?}", fn_abi);
     fn_abi_sanity_check(cx, &fn_abi, sig.abi);
     Ok(tcx.arena.alloc(fn_abi))
@@ -662,7 +662,7 @@ fn fn_abi_adjust_for_abi<'tcx>(
     fn_abi: &mut FnAbi<'tcx, Ty<'tcx>>,
     abi: ExternAbi,
     fn_def_id: Option<DefId>,
-) -> Result<(), &'tcx FnAbiError<'tcx>> {
+) {
     if abi == ExternAbi::Unadjusted {
         // The "unadjusted" ABI passes aggregates in "direct" mode. That's fragile but needed for
         // some LLVM intrinsics.
@@ -682,7 +682,7 @@ fn fn_abi_adjust_for_abi<'tcx>(
         for arg in fn_abi.args.iter_mut() {
             unadjust(arg);
         }
-        return Ok(());
+        return;
     }
 
     let tcx = cx.tcx();
@@ -723,12 +723,8 @@ fn fn_abi_adjust_for_abi<'tcx>(
             }
         }
     } else {
-        fn_abi
-            .adjust_for_foreign_abi(cx, abi)
-            .map_err(|err| &*tcx.arena.alloc(FnAbiError::AdjustForForeignAbi(err)))?;
+        fn_abi.adjust_for_foreign_abi(cx, abi);
     }
-
-    Ok(())
 }
 
 #[tracing::instrument(level = "debug", skip(cx))]
diff --git a/compiler/rustc_type_ir/src/relate/solver_relating.rs b/compiler/rustc_type_ir/src/relate/solver_relating.rs
index dc2312b2da3..e42639c6807 100644
--- a/compiler/rustc_type_ir/src/relate/solver_relating.rs
+++ b/compiler/rustc_type_ir/src/relate/solver_relating.rs
@@ -1,10 +1,10 @@
-pub use rustc_type_ir::relate::*;
-use rustc_type_ir::solve::Goal;
-use rustc_type_ir::{self as ty, InferCtxtLike, Interner};
 use tracing::{debug, instrument};
 
 use self::combine::{PredicateEmittingRelation, super_combine_consts, super_combine_tys};
 use crate::data_structures::DelayedSet;
+pub use crate::relate::*;
+use crate::solve::Goal;
+use crate::{self as ty, InferCtxtLike, Interner};
 
 pub trait RelateExt: InferCtxtLike {
     fn relate<T: Relate<Self::Interner>>(
diff --git a/config.example.toml b/config.example.toml
index 7f6bbf27992..1a8f42428ab 100644
--- a/config.example.toml
+++ b/config.example.toml
@@ -323,7 +323,7 @@
 #full-bootstrap = false
 
 # Set the bootstrap/download cache path. It is useful when building rust
-# repeatedly in a CI invironment.
+# repeatedly in a CI environment.
 #bootstrap-cache-path = /path/to/shared/cache
 
 # Enable a build of the extended Rust tool set which is not only the compiler
diff --git a/library/Cargo.lock b/library/Cargo.lock
index 8b78908e6d7..930db2ecd57 100644
--- a/library/Cargo.lock
+++ b/library/Cargo.lock
@@ -61,9 +61,9 @@ dependencies = [
 
 [[package]]
 name = "compiler_builtins"
-version = "0.1.145"
+version = "0.1.146"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0705f5abaaab7168ccc14f8f340ded61be2bd3ebea86b9834b6acbc8495de8"
+checksum = "a97117b1434b79833f39a5fabdf82f890bd98c1988334dea1cb67f7e627fa311"
 dependencies = [
  "cc",
  "rustc-std-workspace-core",
diff --git a/library/alloc/Cargo.toml b/library/alloc/Cargo.toml
index db7eaf52fb2..6b0b5761391 100644
--- a/library/alloc/Cargo.toml
+++ b/library/alloc/Cargo.toml
@@ -10,7 +10,7 @@ edition = "2021"
 
 [dependencies]
 core = { path = "../core" }
-compiler_builtins = { version = "=0.1.145", features = ['rustc-dep-of-std'] }
+compiler_builtins = { version = "=0.1.146", features = ['rustc-dep-of-std'] }
 
 [dev-dependencies]
 rand = { version = "0.8.5", default-features = false, features = ["alloc"] }
diff --git a/library/core/src/alloc/mod.rs b/library/core/src/alloc/mod.rs
index dcab6136ae8..9805cee1c33 100644
--- a/library/core/src/alloc/mod.rs
+++ b/library/core/src/alloc/mod.rs
@@ -94,7 +94,7 @@ impl fmt::Display for AllocError {
 ///  - the memory block is deallocated, or
 ///  - the allocator is dropped.
 ///
-/// Copying, cloning, or moving the allocator must not invalidate memory blocks returned from it
+/// Copying, cloning, or moving the allocator must not invalidate memory blocks returned from it.
 /// A copied or cloned allocator must behave like the original allocator.
 ///
 /// A memory block which is [*currently allocated*] may be passed to
diff --git a/library/core/src/any.rs b/library/core/src/any.rs
index 17d94555927..f90de1f5ced 100644
--- a/library/core/src/any.rs
+++ b/library/core/src/any.rs
@@ -610,6 +610,101 @@ impl dyn Any + Send + Sync {
 /// While `TypeId` implements `Hash`, `PartialOrd`, and `Ord`, it is worth
 /// noting that the hashes and ordering will vary between Rust releases. Beware
 /// of relying on them inside of your code!
+///
+/// # Danger of Improper Variance
+///
+/// You might think that subtyping is impossible between two static types,
+/// but this is false; there exists a static type with a static subtype.
+/// To wit, `fn(&str)`, which is short for `for<'any> fn(&'any str)`, and
+/// `fn(&'static str)`, are two distinct, static types, and yet,
+/// `fn(&str)` is a subtype of `fn(&'static str)`, since any value of type
+/// `fn(&str)` can be used where a value of type `fn(&'static str)` is needed.
+///
+/// This means that abstractions around `TypeId`, despite its
+/// `'static` bound on arguments, still need to worry about unnecessary
+/// and improper variance: it is advisable to strive for invariance
+/// first. The usability impact will be negligible, while the reduction
+/// in the risk of unsoundness will be most welcome.
+///
+/// ## Examples
+///
+/// Suppose `SubType` is a subtype of `SuperType`, that is,
+/// a value of type `SubType` can be used wherever
+/// a value of type `SuperType` is expected.
+/// Suppose also that `CoVar<T>` is a generic type, which is covariant over `T`
+/// (like many other types, including `PhantomData<T>` and `Vec<T>`).
+///
+/// Then, by covariance, `CoVar<SubType>` is a subtype of `CoVar<SuperType>`,
+/// that is, a value of type `CoVar<SubType>` can be used wherever
+/// a value of type `CoVar<SuperType>` is expected.
+///
+/// Then if `CoVar<SuperType>` relies on `TypeId::of::<SuperType>()` to uphold any invariants,
+/// those invariants may be broken because a value of type `CoVar<SuperType>` can be created
+/// without going through any of its methods, like so:
+/// ```
+/// type SubType = fn(&());
+/// type SuperType = fn(&'static ());
+/// type CoVar<T> = Vec<T>; // imagine something more complicated
+///
+/// let sub: CoVar<SubType> = CoVar::new();
+/// // we have a `CoVar<SuperType>` instance without
+/// // *ever* having called `CoVar::<SuperType>::new()`!
+/// let fake_super: CoVar<SuperType> = sub;
+/// ```
+///
+/// The following is an example program that tries to use `TypeId::of` to
+/// implement a generic type `Unique<T>` that guarantees unique instances for each `Unique<T>`,
+/// that is, and for each type `T` there can be at most one value of type `Unique<T>` at any time.
+///
+/// ```
+/// mod unique {
+///     use std::any::TypeId;
+///     use std::collections::BTreeSet;
+///     use std::marker::PhantomData;
+///     use std::sync::Mutex;
+///
+///     static ID_SET: Mutex<BTreeSet<TypeId>> = Mutex::new(BTreeSet::new());
+///
+///     // TypeId has only covariant uses, which makes Unique covariant over TypeAsId 🚨
+///     #[derive(Debug, PartialEq)]
+///     pub struct Unique<TypeAsId: 'static>(
+///         // private field prevents creation without `new` outside this module
+///         PhantomData<TypeAsId>,
+///     );
+///
+///     impl<TypeAsId: 'static> Unique<TypeAsId> {
+///         pub fn new() -> Option<Self> {
+///             let mut set = ID_SET.lock().unwrap();
+///             (set.insert(TypeId::of::<TypeAsId>())).then(|| Self(PhantomData))
+///         }
+///     }
+///
+///     impl<TypeAsId: 'static> Drop for Unique<TypeAsId> {
+///         fn drop(&mut self) {
+///             let mut set = ID_SET.lock().unwrap();
+///             (!set.remove(&TypeId::of::<TypeAsId>())).then(|| panic!("duplicity detected"));
+///         }
+///     }
+/// }
+///
+/// use unique::Unique;
+///
+/// // `OtherRing` is a subtype of `TheOneRing`. Both are 'static, and thus have a TypeId.
+/// type TheOneRing = fn(&'static ());
+/// type OtherRing = fn(&());
+///
+/// fn main() {
+///     let the_one_ring: Unique<TheOneRing> = Unique::new().unwrap();
+///     assert_eq!(Unique::<TheOneRing>::new(), None);
+///
+///     let other_ring: Unique<OtherRing> = Unique::new().unwrap();
+///     // Use that `Unique<OtherRing>` is a subtype of `Unique<TheOneRing>` 🚨
+///     let fake_one_ring: Unique<TheOneRing> = other_ring;
+///     assert_eq!(fake_one_ring, the_one_ring);
+///
+///     std::mem::forget(fake_one_ring);
+/// }
+/// ```
 #[derive(Clone, Copy, Eq, PartialOrd, Ord)]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct TypeId {
@@ -627,8 +722,7 @@ impl PartialEq for TypeId {
 }
 
 impl TypeId {
-    /// Returns the `TypeId` of the type this generic function has been
-    /// instantiated with.
+    /// Returns the `TypeId` of the generic type parameter.
     ///
     /// # Examples
     ///
diff --git a/library/core/src/hint.rs b/library/core/src/hint.rs
index e5c1a64c12e..520b9941ae4 100644
--- a/library/core/src/hint.rs
+++ b/library/core/src/hint.rs
@@ -646,7 +646,7 @@ pub const fn must_use<T>(value: T) -> T {
 /// ```
 ///
 ///
-#[unstable(feature = "likely_unlikely", issue = "26179")]
+#[unstable(feature = "likely_unlikely", issue = "136873")]
 #[inline(always)]
 pub const fn likely(b: bool) -> bool {
     crate::intrinsics::likely(b)
@@ -696,7 +696,7 @@ pub const fn likely(b: bool) -> bool {
 ///     }
 /// }
 /// ```
-#[unstable(feature = "likely_unlikely", issue = "26179")]
+#[unstable(feature = "likely_unlikely", issue = "136873")]
 #[inline(always)]
 pub const fn unlikely(b: bool) -> bool {
     crate::intrinsics::unlikely(b)
@@ -729,7 +729,7 @@ pub const fn unlikely(b: bool) -> bool {
 ///     }
 /// }
 /// ```
-#[unstable(feature = "cold_path", issue = "26179")]
+#[unstable(feature = "cold_path", issue = "136873")]
 #[inline(always)]
 pub const fn cold_path() {
     crate::intrinsics::cold_path()
diff --git a/library/core/src/marker.rs b/library/core/src/marker.rs
index 1a8ef20dd7b..029c8b356d0 100644
--- a/library/core/src/marker.rs
+++ b/library/core/src/marker.rs
@@ -1284,8 +1284,22 @@ pub trait FnPtr: Copy + Clone {
 /// }
 /// ```
 #[rustc_builtin_macro(CoercePointee, attributes(pointee))]
-#[allow_internal_unstable(dispatch_from_dyn, coerce_unsized, unsize)]
+#[allow_internal_unstable(dispatch_from_dyn, coerce_unsized, unsize, coerce_pointee_validated)]
 #[unstable(feature = "derive_coerce_pointee", issue = "123430")]
 pub macro CoercePointee($item:item) {
     /* compiler built-in */
 }
+
+/// A trait that is implemented for ADTs with `derive(CoercePointee)` so that
+/// the compiler can enforce the derive impls are valid post-expansion, since
+/// the derive has stricter requirements than if the impls were written by hand.
+///
+/// This trait is not intended to be implemented by users or used other than
+/// validation, so it should never be stabilized.
+#[cfg(not(bootstrap))]
+#[lang = "coerce_pointee_validated"]
+#[unstable(feature = "coerce_pointee_validated", issue = "none")]
+#[doc(hidden)]
+pub trait CoercePointeeValidated {
+    /* compiler built-in */
+}
diff --git a/library/core/src/num/nonzero.rs b/library/core/src/num/nonzero.rs
index a115acf42b1..21bad6705ab 100644
--- a/library/core/src/num/nonzero.rs
+++ b/library/core/src/num/nonzero.rs
@@ -612,8 +612,6 @@ macro_rules! nonzero_integer {
             /// Basic usage:
             ///
             /// ```
-            /// #![feature(non_zero_count_ones)]
-            ///
             /// # use std::num::NonZero;
             /// #
             /// # fn main() { test().unwrap(); }
@@ -627,7 +625,8 @@ macro_rules! nonzero_integer {
             /// # }
             /// ```
             ///
-            #[unstable(feature = "non_zero_count_ones", issue = "120287")]
+            #[stable(feature = "non_zero_count_ones", since = "CURRENT_RUSTC_VERSION")]
+            #[rustc_const_stable(feature = "non_zero_count_ones", since = "CURRENT_RUSTC_VERSION")]
             #[doc(alias = "popcount")]
             #[doc(alias = "popcnt")]
             #[must_use = "this returns the result of the operation, \
diff --git a/library/portable-simd/.github/workflows/ci.yml b/library/portable-simd/.github/workflows/ci.yml
index b292be2d6f9..3984d8f0d8d 100644
--- a/library/portable-simd/.github/workflows/ci.yml
+++ b/library/portable-simd/.github/workflows/ci.yml
@@ -9,6 +9,7 @@ on:
 env:
   CARGO_NET_RETRY: 10
   RUSTUP_MAX_RETRIES: 10
+  PROPTEST_CASES: 64
 
 jobs:
   rustfmt:
@@ -16,12 +17,7 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v2
-      - name: Setup Rust
-        run: |
-          rustup update nightly --no-self-update
-          rustup default nightly
-          rustup component add rustfmt
+      - uses: actions/checkout@v4
       - name: Run rustfmt
         run: cargo fmt --all -- --check
 
@@ -37,7 +33,9 @@ jobs:
           - i686-unknown-linux-gnu
           - i586-unknown-linux-gnu
           - aarch64-unknown-linux-gnu
+          - arm64ec-pc-windows-msvc
           - armv7-unknown-linux-gnueabihf
+          - loongarch64-unknown-linux-gnu
           # non-nightly since https://github.com/rust-lang/rust/pull/113274
           # - mips-unknown-linux-gnu
           # - mips64-unknown-linux-gnuabi64
@@ -49,13 +47,9 @@ jobs:
           - wasm32-unknown-unknown
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
       - name: Setup Rust
-        run: |
-          rustup update nightly --no-self-update
-          rustup default nightly
-          rustup target add ${{ matrix.target }}
-          rustup component add clippy
+        run: rustup target add ${{ matrix.target }}
       - name: Run Clippy
         run: cargo clippy --all-targets --target ${{ matrix.target }}
 
@@ -65,26 +59,19 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        target: [x86_64-pc-windows-msvc, i686-pc-windows-msvc, i586-pc-windows-msvc, x86_64-unknown-linux-gnu, x86_64-apple-darwin]
+        target: [x86_64-pc-windows-msvc, i686-pc-windows-msvc, i586-pc-windows-msvc, x86_64-unknown-linux-gnu]
         # `default` means we use the default target config for the target,
         # `native` means we run with `-Ctarget-cpu=native`, and anything else is
         # an arg to `-Ctarget-feature`
         target_feature: [default, native, +sse3, +ssse3, +sse4.1, +sse4.2, +avx, +avx2]
 
         exclude:
-          # The macos runners seem to only reliably support up to `avx`.
-          - { target: x86_64-apple-darwin, target_feature: +avx2 }
-          # These features are statically known to be present for all 64 bit
-          # macs, and thus are covered by the `default` test
-          - { target: x86_64-apple-darwin, target_feature: +sse3 }
-          - { target: x86_64-apple-darwin, target_feature: +ssse3 }
           # -Ctarget-cpu=native sounds like bad-news if target != host
           - { target: i686-pc-windows-msvc, target_feature: native }
           - { target: i586-pc-windows-msvc, target_feature: native }
 
         include:
           # Populate the `matrix.os` field
-          - { target: x86_64-apple-darwin,      os: macos-latest }
           - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest }
           - { target: x86_64-pc-windows-msvc,   os: windows-latest }
           - { target: i686-pc-windows-msvc,     os: windows-latest }
@@ -98,12 +85,9 @@ jobs:
           # avx512vl, but occasionally doesn't.  Maybe one day we can enable it.
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
       - name: Setup Rust
-        run: |
-          rustup update nightly --no-self-update
-          rustup default nightly
-          rustup target add ${{ matrix.target }}
+        run: rustup target add ${{ matrix.target }}
 
       - name: Configure RUSTFLAGS
         shell: bash
@@ -145,6 +129,35 @@ jobs:
         run: cargo doc --verbose --target=${{ matrix.target }}
         env:
           RUSTDOCFLAGS: -Dwarnings
+    
+  macos-tests:
+    name: ${{ matrix.target }}
+    runs-on: macos-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        target:
+          - aarch64-apple-darwin
+          - x86_64-apple-darwin
+    steps:
+      - uses: actions/checkout@v4
+      - name: Setup Rust
+        run: rustup target add ${{ matrix.target }}
+
+      - name: Configure RUSTFLAGS
+        shell: bash
+        run: echo "RUSTFLAGS=-Dwarnings" >> $GITHUB_ENV
+
+      - name: Test (debug)
+        run: cargo test --verbose --target=${{ matrix.target }}
+
+      - name: Test (release)
+        run: cargo test --verbose --target=${{ matrix.target }} --release
+
+      - name: Generate docs
+        run: cargo doc --verbose --target=${{ matrix.target }}
+        env:
+          RUSTDOCFLAGS: -Dwarnings
 
   wasm-tests:
     name: "wasm (firefox, ${{ matrix.name }})"
@@ -155,11 +168,7 @@ jobs:
           - { name: default, RUSTFLAGS: "" }
           - { name: simd128, RUSTFLAGS: "-C target-feature=+simd128" }
     steps:
-      - uses: actions/checkout@v2
-      - name: Setup Rust
-        run: |
-          rustup update nightly --no-self-update
-          rustup default nightly
+      - uses: actions/checkout@v4
       - name: Install wasm-pack
         run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
       - name: Test (debug)
@@ -174,6 +183,8 @@ jobs:
   cross-tests:
     name: "${{ matrix.target_feature }} on ${{ matrix.target }} (via cross)"
     runs-on: ubuntu-latest
+    env:
+      PROPTEST_CASES: 16
     strategy:
       fail-fast: false
 
@@ -185,6 +196,7 @@ jobs:
           - powerpc-unknown-linux-gnu
           - powerpc64le-unknown-linux-gnu       # includes altivec by default
           - riscv64gc-unknown-linux-gnu
+          - loongarch64-unknown-linux-gnu
           # MIPS uses a nonstandard binary representation for NaNs which makes it worth testing
           # non-nightly since https://github.com/rust-lang/rust/pull/113274
           # - mips-unknown-linux-gnu
@@ -201,24 +213,14 @@ jobs:
           # - { target: riscv64gc-unknown-linux-gnu, target_feature: "+v,+zvl128b" }
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
       - name: Setup Rust
-        run: |
-          rustup update nightly --no-self-update
-          rustup default nightly
-          rustup target add ${{ matrix.target }}
-          rustup component add rust-src
+        run: rustup target add ${{ matrix.target }}
 
       - name: Install Cross
-        # Equivalent to `cargo install cross`, but downloading a prebuilt
-        # binary. Ideally we wouldn't hardcode a version, but the version number
-        # being part of the tarball means we can't just use the download/latest
-        # URL :(
+        # Install the latest git version for newer targets.
         run: |
-          CROSS_URL=https://github.com/cross-rs/cross/releases/download/v0.2.5/cross-x86_64-unknown-linux-gnu.tar.gz
-          mkdir -p "$HOME/.bin"
-          curl -sfSL --retry-delay 10 --retry 5 "${CROSS_URL}" | tar zxf - -C "$HOME/.bin"
-          echo "$HOME/.bin" >> $GITHUB_PATH
+          cargo install cross --git https://github.com/cross-rs/cross --rev 4090beca3cfffa44371a5bba524de3a578aa46c3
 
       - name: Configure Emulated CPUs
         run: |
@@ -242,34 +244,11 @@ jobs:
       - name: Test (release)
         run: cross test --verbose --target=${{ matrix.target }} --release
 
-  features:
-    name: "Test cargo features (${{ matrix.simd }} × ${{ matrix.features }})"
+  miri:
     runs-on: ubuntu-latest
-    strategy:
-      fail-fast: false
-      matrix:
-        simd:
-          - ""
-          - "avx512"
-        features:
-          - ""
-          - "--features std"
-          - "--features all_lane_counts"
-          - "--all-features"
-
+    env:
+      PROPTEST_CASES: 16
     steps:
-      - uses: actions/checkout@v2
-      - name: Setup Rust
-        run: |
-          rustup update nightly --no-self-update
-          rustup default nightly
-      - name: Detect AVX512
-        run: echo "CPU_FEATURE=$(lscpu | grep -o avx512[a-z]* | sed s/avx/+avx/ | tr '\n' ',' )" >> $GITHUB_ENV
-      - name: Check build
-        if: ${{ matrix.simd == '' }}
-        run: RUSTFLAGS="-Dwarnings" cargo test --all-targets --no-default-features ${{ matrix.features }}
-      - name: Check AVX
-        if: ${{ matrix.simd == 'avx512' && contains(env.CPU_FEATURE, 'avx512') }}
-        run: |
-          echo "Found AVX features: $CPU_FEATURE"
-          RUSTFLAGS="-Dwarnings -Ctarget-feature=$CPU_FEATURE" cargo test --all-targets --no-default-features ${{ matrix.features }}
+      - uses: actions/checkout@v4
+      - name: Test (Miri)
+        run: cargo miri test
diff --git a/library/portable-simd/.github/workflows/doc.yml b/library/portable-simd/.github/workflows/doc.yml
index 9d1fa66ccb5..22c2cb3f67f 100644
--- a/library/portable-simd/.github/workflows/doc.yml
+++ b/library/portable-simd/.github/workflows/doc.yml
@@ -12,7 +12,7 @@ jobs:
 
     steps:
       - name: Checkout Repository
-        uses: actions/checkout@v1
+        uses: actions/checkout@v4
 
       - name: Setup Rust
         run: |
diff --git a/library/portable-simd/.gitignore b/library/portable-simd/.gitignore
index ea8c4bf7f35..9673e52dcad 100644
--- a/library/portable-simd/.gitignore
+++ b/library/portable-simd/.gitignore
@@ -1 +1,2 @@
 /target
+git-subtree.sh
diff --git a/library/portable-simd/Cargo.toml b/library/portable-simd/Cargo.toml
index d1732aaec2f..21d4584a9f4 100644
--- a/library/portable-simd/Cargo.toml
+++ b/library/portable-simd/Cargo.toml
@@ -5,3 +5,9 @@ members = [
     "crates/std_float",
     "crates/test_helpers",
 ]
+
+[profile.test.package."*"]
+opt-level = 2
+
+[profile.test.package.test_helpers]
+opt-level = 2
diff --git a/library/portable-simd/Cross.toml b/library/portable-simd/Cross.toml
new file mode 100644
index 00000000000..d21e76b92dd
--- /dev/null
+++ b/library/portable-simd/Cross.toml
@@ -0,0 +1,2 @@
+[build.env]
+passthrough = ["PROPTEST_CASES"]
diff --git a/library/portable-simd/crates/core_simd/Cargo.toml b/library/portable-simd/crates/core_simd/Cargo.toml
index b4a8fd70f4c..a7a6d43b11d 100644
--- a/library/portable-simd/crates/core_simd/Cargo.toml
+++ b/library/portable-simd/crates/core_simd/Cargo.toml
@@ -9,10 +9,9 @@ categories = ["hardware-support", "no-std"]
 license = "MIT OR Apache-2.0"
 
 [features]
-default = ["as_crate"]
+default = ["as_crate", "std"]
 as_crate = []
 std = []
-all_lane_counts = []
 
 [target.'cfg(target_arch = "wasm32")'.dev-dependencies]
 wasm-bindgen = "0.2"
diff --git a/library/portable-simd/crates/core_simd/src/lane_count.rs b/library/portable-simd/crates/core_simd/src/lane_count.rs
index 4cd7265ed67..280b27bc9bc 100644
--- a/library/portable-simd/crates/core_simd/src/lane_count.rs
+++ b/library/portable-simd/crates/core_simd/src/lane_count.rs
@@ -33,10 +33,8 @@ macro_rules! supported_lane_count {
     };
 }
 
-supported_lane_count!(1, 2, 4, 8, 16, 32, 64);
-#[cfg(feature = "all_lane_counts")]
 supported_lane_count!(
-    3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
-    31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
-    56, 57, 58, 59, 60, 61, 62, 63
+    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+    27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+    51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
 );
diff --git a/library/portable-simd/crates/core_simd/src/lib.rs b/library/portable-simd/crates/core_simd/src/lib.rs
index 992a7705e3c..7f57847c9c2 100644
--- a/library/portable-simd/crates/core_simd/src/lib.rs
+++ b/library/portable-simd/crates/core_simd/src/lib.rs
@@ -1,7 +1,6 @@
 #![no_std]
 #![feature(
-    const_refs_to_cell,
-    const_mut_refs,
+    const_eval_select,
     convert_float_to_int,
     core_intrinsics,
     decl_macro,
@@ -26,6 +25,7 @@
     all(target_arch = "arm", target_feature = "v7"),
     feature(stdarch_arm_neon_intrinsics)
 )]
+#![cfg_attr(target_arch = "loongarch64", feature(stdarch_loongarch))]
 #![cfg_attr(
     any(target_arch = "powerpc", target_arch = "powerpc64"),
     feature(stdarch_powerpc)
diff --git a/library/portable-simd/crates/core_simd/src/masks.rs b/library/portable-simd/crates/core_simd/src/masks.rs
index 04de3a96827..b763a7c75a5 100644
--- a/library/portable-simd/crates/core_simd/src/masks.rs
+++ b/library/portable-simd/crates/core_simd/src/masks.rs
@@ -308,48 +308,6 @@ where
         Self(mask_impl::Mask::from_bitmask_integer(bitmask))
     }
 
-    /// Creates a bitmask vector from a mask.
-    ///
-    /// Each bit is set if the corresponding element in the mask is `true`.
-    /// The remaining bits are unset.
-    ///
-    /// The bits are packed into the first N bits of the vector:
-    /// ```
-    /// # #![feature(portable_simd)]
-    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
-    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
-    /// # use simd::mask32x8;
-    /// let mask = mask32x8::from_array([true, false, true, false, false, false, true, false]);
-    /// assert_eq!(mask.to_bitmask_vector()[0], 0b01000101);
-    /// ```
-    #[inline]
-    #[must_use = "method returns a new integer and does not mutate the original value"]
-    pub fn to_bitmask_vector(self) -> Simd<u8, N> {
-        self.0.to_bitmask_vector()
-    }
-
-    /// Creates a mask from a bitmask vector.
-    ///
-    /// For each bit, if it is set, the corresponding element in the mask is set to `true`.
-    ///
-    /// The bits are packed into the first N bits of the vector:
-    /// ```
-    /// # #![feature(portable_simd)]
-    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
-    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
-    /// # use simd::{mask32x8, u8x8};
-    /// let bitmask = u8x8::from_array([0b01000101, 0, 0, 0, 0, 0, 0, 0]);
-    /// assert_eq!(
-    ///     mask32x8::from_bitmask_vector(bitmask),
-    ///     mask32x8::from_array([true, false, true, false, false, false, true, false]),
-    /// );
-    /// ```
-    #[inline]
-    #[must_use = "method returns a new mask and does not mutate the original value"]
-    pub fn from_bitmask_vector(bitmask: Simd<u8, N>) -> Self {
-        Self(mask_impl::Mask::from_bitmask_vector(bitmask))
-    }
-
     /// Finds the index of the first set element.
     ///
     /// ```
diff --git a/library/portable-simd/crates/core_simd/src/masks/bitmask.rs b/library/portable-simd/crates/core_simd/src/masks/bitmask.rs
index 96c553426ee..db4312d5bf8 100644
--- a/library/portable-simd/crates/core_simd/src/masks/bitmask.rs
+++ b/library/portable-simd/crates/core_simd/src/masks/bitmask.rs
@@ -123,23 +123,6 @@ where
     }
 
     #[inline]
-    #[must_use = "method returns a new vector and does not mutate the original value"]
-    pub fn to_bitmask_vector(self) -> Simd<u8, N> {
-        let mut bitmask = Simd::splat(0);
-        bitmask.as_mut_array()[..self.0.as_ref().len()].copy_from_slice(self.0.as_ref());
-        bitmask
-    }
-
-    #[inline]
-    #[must_use = "method returns a new mask and does not mutate the original value"]
-    pub fn from_bitmask_vector(bitmask: Simd<u8, N>) -> Self {
-        let mut bytes = <LaneCount<N> as SupportedLaneCount>::BitMask::default();
-        let len = bytes.as_ref().len();
-        bytes.as_mut().copy_from_slice(&bitmask.as_array()[..len]);
-        Self(bytes, PhantomData)
-    }
-
-    #[inline]
     pub fn to_bitmask_integer(self) -> u64 {
         let mut bitmask = [0u8; 8];
         bitmask[..self.0.as_ref().len()].copy_from_slice(self.0.as_ref());
diff --git a/library/portable-simd/crates/core_simd/src/masks/full_masks.rs b/library/portable-simd/crates/core_simd/src/masks/full_masks.rs
index 87f031a9f36..2d01946b574 100644
--- a/library/portable-simd/crates/core_simd/src/masks/full_masks.rs
+++ b/library/portable-simd/crates/core_simd/src/masks/full_masks.rs
@@ -141,62 +141,6 @@ where
     }
 
     #[inline]
-    #[must_use = "method returns a new vector and does not mutate the original value"]
-    pub fn to_bitmask_vector(self) -> Simd<u8, N> {
-        let mut bitmask = Simd::splat(0);
-
-        // Safety: Bytes is the right size array
-        unsafe {
-            // Compute the bitmask
-            let mut bytes: <LaneCount<N> as SupportedLaneCount>::BitMask =
-                core::intrinsics::simd::simd_bitmask(self.0);
-
-            // LLVM assumes bit order should match endianness
-            if cfg!(target_endian = "big") {
-                for x in bytes.as_mut() {
-                    *x = x.reverse_bits()
-                }
-                if N % 8 > 0 {
-                    bytes.as_mut()[N / 8] >>= 8 - N % 8;
-                }
-            }
-
-            bitmask.as_mut_array()[..bytes.as_ref().len()].copy_from_slice(bytes.as_ref());
-        }
-
-        bitmask
-    }
-
-    #[inline]
-    #[must_use = "method returns a new mask and does not mutate the original value"]
-    pub fn from_bitmask_vector(bitmask: Simd<u8, N>) -> Self {
-        let mut bytes = <LaneCount<N> as SupportedLaneCount>::BitMask::default();
-
-        // Safety: Bytes is the right size array
-        unsafe {
-            let len = bytes.as_ref().len();
-            bytes.as_mut().copy_from_slice(&bitmask.as_array()[..len]);
-
-            // LLVM assumes bit order should match endianness
-            if cfg!(target_endian = "big") {
-                for x in bytes.as_mut() {
-                    *x = x.reverse_bits();
-                }
-                if N % 8 > 0 {
-                    bytes.as_mut()[N / 8] >>= 8 - N % 8;
-                }
-            }
-
-            // Compute the regular mask
-            Self::from_int_unchecked(core::intrinsics::simd::simd_select_bitmask(
-                bytes,
-                Self::splat(true).to_int(),
-                Self::splat(false).to_int(),
-            ))
-        }
-    }
-
-    #[inline]
     unsafe fn to_bitmask_impl<U: ReverseBits, const M: usize>(self) -> U
     where
         LaneCount<M>: SupportedLaneCount,
@@ -283,7 +227,7 @@ where
     }
 
     #[inline]
-    #[must_use = "method returns a new vector and does not mutate the original value"]
+    #[must_use = "method returns a new bool and does not mutate the original value"]
     pub fn all(self) -> bool {
         // Safety: use `self` as an integer vector
         unsafe { core::intrinsics::simd::simd_reduce_all(self.to_int()) }
diff --git a/library/portable-simd/crates/core_simd/src/ops.rs b/library/portable-simd/crates/core_simd/src/ops.rs
index dd7303a97b1..d3bd14a3402 100644
--- a/library/portable-simd/crates/core_simd/src/ops.rs
+++ b/library/portable-simd/crates/core_simd/src/ops.rs
@@ -77,7 +77,7 @@ macro_rules! int_divrem_guard {
     (   $lhs:ident,
         $rhs:ident,
         {   const PANIC_ZERO: &'static str = $zero:literal;
-            $simd_call:ident
+            $simd_call:ident, $op:tt
         },
         $int:ident ) => {
         if $rhs.simd_eq(Simd::splat(0 as _)).any() {
@@ -96,8 +96,23 @@ macro_rules! int_divrem_guard {
                 // Nice base case to make it easy to const-fold away the other branch.
                 $rhs
             };
-            // Safety: $lhs and rhs are vectors
-            unsafe { core::intrinsics::simd::$simd_call($lhs, rhs) }
+
+            // aarch64 div fails for arbitrary `v % 0`, mod fails when rhs is MIN, for non-powers-of-two
+            // these operations aren't vectorized on aarch64 anyway
+            #[cfg(target_arch = "aarch64")]
+            {
+                let mut out = Simd::splat(0 as _);
+                for i in 0..Self::LEN {
+                    out[i] = $lhs[i] $op rhs[i];
+                }
+                out
+            }
+
+            #[cfg(not(target_arch = "aarch64"))]
+            {
+                // Safety: $lhs and rhs are vectors
+                unsafe { core::intrinsics::simd::$simd_call($lhs, rhs) }
+            }
         }
     };
 }
@@ -205,14 +220,14 @@ for_base_ops! {
     impl Div::div {
         int_divrem_guard {
             const PANIC_ZERO: &'static str = "attempt to divide by zero";
-            simd_div
+            simd_div, /
         }
     }
 
     impl Rem::rem {
         int_divrem_guard {
             const PANIC_ZERO: &'static str = "attempt to calculate the remainder with a divisor of zero";
-            simd_rem
+            simd_rem, %
         }
     }
 
diff --git a/library/portable-simd/crates/core_simd/src/simd/cmp/eq.rs b/library/portable-simd/crates/core_simd/src/simd/cmp/eq.rs
index 5b4615ce51d..93989ce91b8 100644
--- a/library/portable-simd/crates/core_simd/src/simd/cmp/eq.rs
+++ b/library/portable-simd/crates/core_simd/src/simd/cmp/eq.rs
@@ -12,7 +12,7 @@ pub trait SimdPartialEq {
     #[must_use = "method returns a new mask and does not mutate the original value"]
     fn simd_eq(self, other: Self) -> Self::Mask;
 
-    /// Test if each element is equal to the corresponding element in `other`.
+    /// Test if each element is not equal to the corresponding element in `other`.
     #[must_use = "method returns a new mask and does not mutate the original value"]
     fn simd_ne(self, other: Self) -> Self::Mask;
 }
diff --git a/library/portable-simd/crates/core_simd/src/simd/num/float.rs b/library/portable-simd/crates/core_simd/src/simd/num/float.rs
index 59e43851ea8..79954b937b3 100644
--- a/library/portable-simd/crates/core_simd/src/simd/num/float.rs
+++ b/library/portable-simd/crates/core_simd/src/simd/num/float.rs
@@ -255,6 +255,7 @@ macro_rules! impl_trait {
             type Bits = Simd<$bits_ty, N>;
             type Cast<T: SimdElement> = Simd<T, N>;
 
+            #[cfg(not(target_arch = "aarch64"))]
             #[inline]
             fn cast<T: SimdCast>(self) -> Self::Cast<T>
             {
@@ -262,6 +263,33 @@ macro_rules! impl_trait {
                 unsafe { core::intrinsics::simd::simd_as(self) }
             }
 
+            // https://github.com/llvm/llvm-project/issues/94694
+            #[cfg(target_arch = "aarch64")]
+            #[inline]
+            fn cast<T: SimdCast>(self) -> Self::Cast<T>
+            {
+                const { assert!(N <= 64) };
+                if N <= 2 || N == 4 || N == 8 || N == 16 || N == 32 || N == 64 {
+                    // Safety: supported types are guaranteed by SimdCast
+                    unsafe { core::intrinsics::simd::simd_as(self) }
+                } else if N < 4 {
+                    let x = self.resize::<4>(Default::default()).cast();
+                    x.resize::<N>(x[0])
+                } else if N < 8 {
+                    let x = self.resize::<8>(Default::default()).cast();
+                    x.resize::<N>(x[0])
+                } else if N < 16 {
+                    let x = self.resize::<16>(Default::default()).cast();
+                    x.resize::<N>(x[0])
+                } else if N < 32 {
+                    let x = self.resize::<32>(Default::default()).cast();
+                    x.resize::<N>(x[0])
+                } else {
+                    let x = self.resize::<64>(Default::default()).cast();
+                    x.resize::<N>(x[0])
+                }
+            }
+
             #[inline]
             #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
             unsafe fn to_int_unchecked<I: SimdCast>(self) -> Self::Cast<I>
@@ -391,7 +419,7 @@ macro_rules! impl_trait {
                     self.as_array().iter().sum()
                 } else {
                     // Safety: `self` is a float vector
-                    unsafe { core::intrinsics::simd::simd_reduce_add_ordered(self, 0.) }
+                    unsafe { core::intrinsics::simd::simd_reduce_add_ordered(self, -0.) }
                 }
             }
 
diff --git a/library/portable-simd/crates/core_simd/src/simd/num/int.rs b/library/portable-simd/crates/core_simd/src/simd/num/int.rs
index d7598d9ceaf..3a51235ff95 100644
--- a/library/portable-simd/crates/core_simd/src/simd/num/int.rs
+++ b/library/portable-simd/crates/core_simd/src/simd/num/int.rs
@@ -1,6 +1,6 @@
 use super::sealed::Sealed;
 use crate::simd::{
-    cmp::SimdPartialOrd, num::SimdUint, LaneCount, Mask, Simd, SimdCast, SimdElement,
+    cmp::SimdOrd, cmp::SimdPartialOrd, num::SimdUint, LaneCount, Mask, Simd, SimdCast, SimdElement,
     SupportedLaneCount,
 };
 
@@ -70,11 +70,27 @@ pub trait SimdInt: Copy + Sealed {
     /// # #[cfg(not(feature = "as_crate"))] use core::simd;
     /// # use simd::prelude::*;
     /// use core::i32::{MIN, MAX};
-    /// let xs = Simd::from_array([MIN, MIN +1, -5, 0]);
+    /// let xs = Simd::from_array([MIN, MIN + 1, -5, 0]);
     /// assert_eq!(xs.abs(), Simd::from_array([MIN, MAX, 5, 0]));
     /// ```
     fn abs(self) -> Self;
 
+    /// Lanewise absolute difference.
+    /// Every element becomes the absolute difference of `self` and `second`.
+    ///
+    /// # Examples
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::prelude::*;
+    /// use core::i32::{MIN, MAX};
+    /// let a = Simd::from_array([MIN, MAX, 100, -100]);
+    /// let b = Simd::from_array([MAX, MIN, -80, -120]);
+    /// assert_eq!(a.abs_diff(b), Simd::from_array([u32::MAX, u32::MAX, 180, 20]));
+    /// ```
+    fn abs_diff(self, second: Self) -> Self::Unsigned;
+
     /// Lanewise saturating absolute value, implemented in Rust.
     /// As abs(), except the MIN value becomes MAX instead of itself.
     ///
@@ -203,6 +219,12 @@ pub trait SimdInt: Copy + Sealed {
     /// The least significant bit becomes the most significant bit, second least-significant bit becomes second most-significant bit, etc.
     fn reverse_bits(self) -> Self;
 
+    /// Returns the number of ones in the binary representation of each element.
+    fn count_ones(self) -> Self::Unsigned;
+
+    /// Returns the number of zeros in the binary representation of each element.
+    fn count_zeros(self) -> Self::Unsigned;
+
     /// Returns the number of leading zeros in the binary representation of each element.
     fn leading_zeros(self) -> Self::Unsigned;
 
@@ -260,6 +282,13 @@ macro_rules! impl_trait {
             }
 
             #[inline]
+            fn abs_diff(self, second: Self) -> Self::Unsigned {
+                let max = self.simd_max(second);
+                let min = self.simd_min(second);
+                (max - min).cast()
+            }
+
+            #[inline]
             fn saturating_abs(self) -> Self {
                 // arith shift for -1 or 0 mask based on sign bit, giving 2s complement
                 const SHR: $ty = <$ty>::BITS as $ty - 1;
@@ -345,6 +374,16 @@ macro_rules! impl_trait {
             }
 
             #[inline]
+            fn count_ones(self) -> Self::Unsigned {
+                self.cast::<$unsigned>().count_ones()
+            }
+
+            #[inline]
+            fn count_zeros(self) -> Self::Unsigned {
+                self.cast::<$unsigned>().count_zeros()
+            }
+
+            #[inline]
             fn leading_zeros(self) -> Self::Unsigned {
                 self.cast::<$unsigned>().leading_zeros()
             }
diff --git a/library/portable-simd/crates/core_simd/src/simd/num/uint.rs b/library/portable-simd/crates/core_simd/src/simd/num/uint.rs
index 53dd97f501c..1ab2d8c7b73 100644
--- a/library/portable-simd/crates/core_simd/src/simd/num/uint.rs
+++ b/library/portable-simd/crates/core_simd/src/simd/num/uint.rs
@@ -1,5 +1,5 @@
 use super::sealed::Sealed;
-use crate::simd::{LaneCount, Simd, SimdCast, SimdElement, SupportedLaneCount};
+use crate::simd::{cmp::SimdOrd, LaneCount, Simd, SimdCast, SimdElement, SupportedLaneCount};
 
 /// Operations on SIMD vectors of unsigned integers.
 pub trait SimdUint: Copy + Sealed {
@@ -57,6 +57,22 @@ pub trait SimdUint: Copy + Sealed {
     /// assert_eq!(sat, Simd::splat(0));
     fn saturating_sub(self, second: Self) -> Self;
 
+    /// Lanewise absolute difference.
+    /// Every element becomes the absolute difference of `self` and `second`.
+    ///
+    /// # Examples
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::prelude::*;
+    /// use core::u32::MAX;
+    /// let a = Simd::from_array([0, MAX, 100, 20]);
+    /// let b = Simd::from_array([MAX, 0, 80, 200]);
+    /// assert_eq!(a.abs_diff(b), Simd::from_array([MAX, MAX, 20, 180]));
+    /// ```
+    fn abs_diff(self, second: Self) -> Self;
+
     /// Returns the sum of the elements of the vector, with wrapping addition.
     fn reduce_sum(self) -> Self::Scalar;
 
@@ -85,6 +101,12 @@ pub trait SimdUint: Copy + Sealed {
     /// The least significant bit becomes the most significant bit, second least-significant bit becomes second most-significant bit, etc.
     fn reverse_bits(self) -> Self;
 
+    /// Returns the number of ones in the binary representation of each element.
+    fn count_ones(self) -> Self;
+
+    /// Returns the number of zeros in the binary representation of each element.
+    fn count_zeros(self) -> Self;
+
     /// Returns the number of leading zeros in the binary representation of each element.
     fn leading_zeros(self) -> Self;
 
@@ -139,6 +161,13 @@ macro_rules! impl_trait {
             }
 
             #[inline]
+            fn abs_diff(self, second: Self) -> Self {
+                let max = self.simd_max(second);
+                let min = self.simd_min(second);
+                max - min
+            }
+
+            #[inline]
             fn reduce_sum(self) -> Self::Scalar {
                 // Safety: `self` is an integer vector
                 unsafe { core::intrinsics::simd::simd_reduce_add_ordered(self, 0) }
@@ -193,6 +222,17 @@ macro_rules! impl_trait {
             }
 
             #[inline]
+            fn count_ones(self) -> Self {
+                // Safety: `self` is an integer vector
+                unsafe { core::intrinsics::simd::simd_ctpop(self) }
+            }
+
+            #[inline]
+            fn count_zeros(self) -> Self {
+                (!self).count_ones()
+            }
+
+            #[inline]
             fn leading_zeros(self) -> Self {
                 // Safety: `self` is an integer vector
                 unsafe { core::intrinsics::simd::simd_ctlz(self) }
diff --git a/library/portable-simd/crates/core_simd/src/simd/ptr/const_ptr.rs b/library/portable-simd/crates/core_simd/src/simd/ptr/const_ptr.rs
index be635ea640b..47383809ffb 100644
--- a/library/portable-simd/crates/core_simd/src/simd/ptr/const_ptr.rs
+++ b/library/portable-simd/crates/core_simd/src/simd/ptr/const_ptr.rs
@@ -42,6 +42,19 @@ pub trait SimdConstPtr: Copy + Sealed {
     /// Equivalent to calling [`pointer::addr`] on each element.
     fn addr(self) -> Self::Usize;
 
+    /// Converts an address to a pointer without giving it any provenance.
+    ///
+    /// Without provenance, this pointer is not associated with any actual allocation. Such a
+    /// no-provenance pointer may be used for zero-sized memory accesses (if suitably aligned), but
+    /// non-zero-sized memory accesses with a no-provenance pointer are UB. No-provenance pointers
+    /// are little more than a usize address in disguise.
+    ///
+    /// This is different from [`Self::with_exposed_provenance`], which creates a pointer that picks up a
+    /// previously exposed provenance.
+    ///
+    /// Equivalent to calling [`core::ptr::without_provenance`] on each element.
+    fn without_provenance(addr: Self::Usize) -> Self;
+
     /// Creates a new pointer with the given address.
     ///
     /// This performs the same operation as a cast, but copies the *address-space* and
@@ -119,6 +132,14 @@ where
     }
 
     #[inline]
+    fn without_provenance(addr: Self::Usize) -> Self {
+        // FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
+        // SAFETY: Integer-to-pointer transmutes are valid (if you are okay with not getting any
+        // provenance).
+        unsafe { core::mem::transmute_copy(&addr) }
+    }
+
+    #[inline]
     fn with_addr(self, addr: Self::Usize) -> Self {
         // FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
         //
diff --git a/library/portable-simd/crates/core_simd/src/simd/ptr/mut_ptr.rs b/library/portable-simd/crates/core_simd/src/simd/ptr/mut_ptr.rs
index f6823a949e3..3f20eef21a3 100644
--- a/library/portable-simd/crates/core_simd/src/simd/ptr/mut_ptr.rs
+++ b/library/portable-simd/crates/core_simd/src/simd/ptr/mut_ptr.rs
@@ -39,6 +39,19 @@ pub trait SimdMutPtr: Copy + Sealed {
     /// Equivalent to calling [`pointer::addr`] on each element.
     fn addr(self) -> Self::Usize;
 
+    /// Converts an address to a pointer without giving it any provenance.
+    ///
+    /// Without provenance, this pointer is not associated with any actual allocation. Such a
+    /// no-provenance pointer may be used for zero-sized memory accesses (if suitably aligned), but
+    /// non-zero-sized memory accesses with a no-provenance pointer are UB. No-provenance pointers
+    /// are little more than a usize address in disguise.
+    ///
+    /// This is different from [`Self::with_exposed_provenance`], which creates a pointer that picks up a
+    /// previously exposed provenance.
+    ///
+    /// Equivalent to calling [`core::ptr::without_provenance`] on each element.
+    fn without_provenance(addr: Self::Usize) -> Self;
+
     /// Creates a new pointer with the given address.
     ///
     /// This performs the same operation as a cast, but copies the *address-space* and
@@ -116,6 +129,14 @@ where
     }
 
     #[inline]
+    fn without_provenance(addr: Self::Usize) -> Self {
+        // FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
+        // SAFETY: Integer-to-pointer transmutes are valid (if you are okay with not getting any
+        // provenance).
+        unsafe { core::mem::transmute_copy(&addr) }
+    }
+
+    #[inline]
     fn with_addr(self, addr: Self::Usize) -> Self {
         // FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
         //
diff --git a/library/portable-simd/crates/core_simd/src/swizzle.rs b/library/portable-simd/crates/core_simd/src/swizzle.rs
index d62642fb906..42425ef37e5 100644
--- a/library/portable-simd/crates/core_simd/src/swizzle.rs
+++ b/library/portable-simd/crates/core_simd/src/swizzle.rs
@@ -155,8 +155,7 @@ pub trait Swizzle<const N: usize> {
 
     /// Creates a new mask from the elements of `mask`.
     ///
-    /// Element `i` of the output is `concat[Self::INDEX[i]]`, where `concat` is the concatenation of
-    /// `first` and `second`.
+    /// Element `i` of the output is `mask[Self::INDEX[i]]`.
     #[inline]
     #[must_use = "method returns a new mask and does not mutate the original inputs"]
     fn swizzle_mask<T, const M: usize>(mask: Mask<T, M>) -> Mask<T, N>
@@ -260,6 +259,50 @@ where
         Rotate::<OFFSET>::swizzle(self)
     }
 
+    /// Shifts the vector elements to the left by `OFFSET`, filling in with
+    /// `padding` from the right.
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn shift_elements_left<const OFFSET: usize>(self, padding: T) -> Self {
+        struct Shift<const OFFSET: usize>;
+
+        impl<const OFFSET: usize, const N: usize> Swizzle<N> for Shift<OFFSET> {
+            const INDEX: [usize; N] = const {
+                let mut index = [N; N];
+                let mut i = 0;
+                while i + OFFSET < N {
+                    index[i] = i + OFFSET;
+                    i += 1;
+                }
+                index
+            };
+        }
+
+        Shift::<OFFSET>::concat_swizzle(self, Simd::splat(padding))
+    }
+
+    /// Shifts the vector elements to the right by `OFFSET`, filling in with
+    /// `padding` from the left.
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn shift_elements_right<const OFFSET: usize>(self, padding: T) -> Self {
+        struct Shift<const OFFSET: usize>;
+
+        impl<const OFFSET: usize, const N: usize> Swizzle<N> for Shift<OFFSET> {
+            const INDEX: [usize; N] = const {
+                let mut index = [N; N];
+                let mut i = OFFSET;
+                while i < N {
+                    index[i] = i - OFFSET;
+                    i += 1;
+                }
+                index
+            };
+        }
+
+        Shift::<OFFSET>::concat_swizzle(self, Simd::splat(padding))
+    }
+
     /// Interleave two vectors.
     ///
     /// The resulting vectors contain elements taken alternatively from `self` and `other`, first
@@ -320,7 +363,9 @@ where
     ///
     /// ```
     /// # #![feature(portable_simd)]
-    /// # use core::simd::Simd;
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::Simd;
     /// let a = Simd::from_array([0, 4, 1, 5]);
     /// let b = Simd::from_array([2, 6, 3, 7]);
     /// let (x, y) = a.deinterleave(b);
@@ -391,4 +436,210 @@ where
         }
         Resize::<N>::concat_swizzle(self, Simd::splat(value))
     }
+
+    /// Extract a vector from another vector.
+    ///
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::u32x4;
+    /// let x = u32x4::from_array([0, 1, 2, 3]);
+    /// assert_eq!(x.extract::<1, 2>().to_array(), [1, 2]);
+    /// ```
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn extract<const START: usize, const LEN: usize>(self) -> Simd<T, LEN>
+    where
+        LaneCount<LEN>: SupportedLaneCount,
+    {
+        struct Extract<const N: usize, const START: usize>;
+        impl<const N: usize, const START: usize, const LEN: usize> Swizzle<LEN> for Extract<N, START> {
+            const INDEX: [usize; LEN] = const {
+                assert!(START + LEN <= N, "index out of bounds");
+                let mut index = [0; LEN];
+                let mut i = 0;
+                while i < LEN {
+                    index[i] = START + i;
+                    i += 1;
+                }
+                index
+            };
+        }
+        Extract::<N, START>::swizzle(self)
+    }
+}
+
+impl<T, const N: usize> Mask<T, N>
+where
+    T: MaskElement,
+    LaneCount<N>: SupportedLaneCount,
+{
+    /// Reverse the order of the elements in the mask.
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn reverse(self) -> Self {
+        // Safety: swizzles are safe for masks
+        unsafe { Self::from_int_unchecked(self.to_int().reverse()) }
+    }
+
+    /// Rotates the mask such that the first `OFFSET` elements of the slice move to the end
+    /// while the last `self.len() - OFFSET` elements move to the front. After calling `rotate_elements_left`,
+    /// the element previously at index `OFFSET` will become the first element in the slice.
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn rotate_elements_left<const OFFSET: usize>(self) -> Self {
+        // Safety: swizzles are safe for masks
+        unsafe { Self::from_int_unchecked(self.to_int().rotate_elements_left::<OFFSET>()) }
+    }
+
+    /// Rotates the mask such that the first `self.len() - OFFSET` elements of the mask move to
+    /// the end while the last `OFFSET` elements move to the front. After calling `rotate_elements_right`,
+    /// the element previously at index `self.len() - OFFSET` will become the first element in the slice.
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn rotate_elements_right<const OFFSET: usize>(self) -> Self {
+        // Safety: swizzles are safe for masks
+        unsafe { Self::from_int_unchecked(self.to_int().rotate_elements_right::<OFFSET>()) }
+    }
+
+    /// Shifts the mask elements to the left by `OFFSET`, filling in with
+    /// `padding` from the right.
+    #[inline]
+    #[must_use = "method returns a new mask and does not mutate the original inputs"]
+    pub fn shift_elements_left<const OFFSET: usize>(self, padding: bool) -> Self {
+        // Safety: swizzles are safe for masks
+        unsafe {
+            Self::from_int_unchecked(self.to_int().shift_elements_left::<OFFSET>(if padding {
+                T::TRUE
+            } else {
+                T::FALSE
+            }))
+        }
+    }
+
+    /// Shifts the mask elements to the right by `OFFSET`, filling in with
+    /// `padding` from the left.
+    #[inline]
+    #[must_use = "method returns a new mask and does not mutate the original inputs"]
+    pub fn shift_elements_right<const OFFSET: usize>(self, padding: bool) -> Self {
+        // Safety: swizzles are safe for masks
+        unsafe {
+            Self::from_int_unchecked(self.to_int().shift_elements_right::<OFFSET>(if padding {
+                T::TRUE
+            } else {
+                T::FALSE
+            }))
+        }
+    }
+
+    /// Interleave two masks.
+    ///
+    /// The resulting masks contain elements taken alternatively from `self` and `other`, first
+    /// filling the first result, and then the second.
+    ///
+    /// The reverse of this operation is [`Mask::deinterleave`].
+    ///
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::mask32x4;
+    /// let a = mask32x4::from_array([false, true, false, true]);
+    /// let b = mask32x4::from_array([false, false, true, true]);
+    /// let (x, y) = a.interleave(b);
+    /// assert_eq!(x.to_array(), [false, false, true, false]);
+    /// assert_eq!(y.to_array(), [false, true, true, true]);
+    /// ```
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn interleave(self, other: Self) -> (Self, Self) {
+        let (lo, hi) = self.to_int().interleave(other.to_int());
+        // Safety: swizzles are safe for masks
+        unsafe { (Self::from_int_unchecked(lo), Self::from_int_unchecked(hi)) }
+    }
+
+    /// Deinterleave two masks.
+    ///
+    /// The first result takes every other element of `self` and then `other`, starting with
+    /// the first element.
+    ///
+    /// The second result takes every other element of `self` and then `other`, starting with
+    /// the second element.
+    ///
+    /// The reverse of this operation is [`Mask::interleave`].
+    ///
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::mask32x4;
+    /// let a = mask32x4::from_array([false, true, false, true]);
+    /// let b = mask32x4::from_array([false, false, true, true]);
+    /// let (x, y) = a.deinterleave(b);
+    /// assert_eq!(x.to_array(), [false, false, false, true]);
+    /// assert_eq!(y.to_array(), [true, true, false, true]);
+    /// ```
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn deinterleave(self, other: Self) -> (Self, Self) {
+        let (even, odd) = self.to_int().deinterleave(other.to_int());
+        // Safety: swizzles are safe for masks
+        unsafe {
+            (
+                Self::from_int_unchecked(even),
+                Self::from_int_unchecked(odd),
+            )
+        }
+    }
+
+    /// Resize a mask.
+    ///
+    /// If `M` > `N`, extends the length of a mask, setting the new elements to `value`.
+    /// If `M` < `N`, truncates the mask to the first `M` elements.
+    ///
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::mask32x4;
+    /// let x = mask32x4::from_array([false, true, true, false]);
+    /// assert_eq!(x.resize::<8>(true).to_array(), [false, true, true, false, true, true, true, true]);
+    /// assert_eq!(x.resize::<2>(true).to_array(), [false, true]);
+    /// ```
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn resize<const M: usize>(self, value: bool) -> Mask<T, M>
+    where
+        LaneCount<M>: SupportedLaneCount,
+    {
+        // Safety: swizzles are safe for masks
+        unsafe {
+            Mask::<T, M>::from_int_unchecked(self.to_int().resize::<M>(if value {
+                T::TRUE
+            } else {
+                T::FALSE
+            }))
+        }
+    }
+
+    /// Extract a vector from another vector.
+    ///
+    /// ```
+    /// # #![feature(portable_simd)]
+    /// # #[cfg(feature = "as_crate")] use core_simd::simd;
+    /// # #[cfg(not(feature = "as_crate"))] use core::simd;
+    /// # use simd::mask32x4;
+    /// let x = mask32x4::from_array([false, true, true, false]);
+    /// assert_eq!(x.extract::<1, 2>().to_array(), [true, true]);
+    /// ```
+    #[inline]
+    #[must_use = "method returns a new vector and does not mutate the original inputs"]
+    pub fn extract<const START: usize, const LEN: usize>(self) -> Mask<T, LEN>
+    where
+        LaneCount<LEN>: SupportedLaneCount,
+    {
+        // Safety: swizzles are safe for masks
+        unsafe { Mask::<T, LEN>::from_int_unchecked(self.to_int().extract::<START, LEN>()) }
+    }
 }
diff --git a/library/portable-simd/crates/core_simd/src/swizzle_dyn.rs b/library/portable-simd/crates/core_simd/src/swizzle_dyn.rs
index 3b6388d0f27..773bd028bae 100644
--- a/library/portable-simd/crates/core_simd/src/swizzle_dyn.rs
+++ b/library/portable-simd/crates/core_simd/src/swizzle_dyn.rs
@@ -59,15 +59,40 @@ where
                     target_endian = "little"
                 ))]
                 16 => transize(vqtbl1q_u8, self, idxs),
+                #[cfg(all(
+                    target_arch = "arm",
+                    target_feature = "v7",
+                    target_feature = "neon",
+                    target_endian = "little"
+                ))]
+                16 => transize(armv7_neon_swizzle_u8x16, self, idxs),
                 #[cfg(all(target_feature = "avx2", not(target_feature = "avx512vbmi")))]
                 32 => transize(avx2_pshufb, self, idxs),
                 #[cfg(all(target_feature = "avx512vl", target_feature = "avx512vbmi"))]
-                32 => transize(x86::_mm256_permutexvar_epi8, zeroing_idxs(idxs), self),
-                // Notable absence: avx512bw shuffle
-                // If avx512bw is available, odds of avx512vbmi are good
-                // FIXME: initial AVX512VBMI variant didn't actually pass muster
-                // #[cfg(target_feature = "avx512vbmi")]
-                // 64 => transize(x86::_mm512_permutexvar_epi8, self, idxs),
+                32 => {
+                    // Unlike vpshufb, vpermb doesn't zero out values in the result based on the index high bit
+                    let swizzler = |bytes, idxs| {
+                        let mask = x86::_mm256_cmp_epu8_mask::<{ x86::_MM_CMPINT_LT }>(
+                            idxs,
+                            Simd::<u8, 32>::splat(N as u8).into(),
+                        );
+                        x86::_mm256_maskz_permutexvar_epi8(mask, idxs, bytes)
+                    };
+                    transize(swizzler, self, idxs)
+                }
+                // Notable absence: avx512bw pshufb shuffle
+                #[cfg(all(target_feature = "avx512vl", target_feature = "avx512vbmi"))]
+                64 => {
+                    // Unlike vpshufb, vpermb doesn't zero out values in the result based on the index high bit
+                    let swizzler = |bytes, idxs| {
+                        let mask = x86::_mm512_cmp_epu8_mask::<{ x86::_MM_CMPINT_LT }>(
+                            idxs,
+                            Simd::<u8, 64>::splat(N as u8).into(),
+                        );
+                        x86::_mm512_maskz_permutexvar_epi8(mask, idxs, bytes)
+                    };
+                    transize(swizzler, self, idxs)
+                }
                 _ => {
                     let mut array = [0; N];
                     for (i, k) in idxs.to_array().into_iter().enumerate() {
@@ -82,6 +107,28 @@ where
     }
 }
 
+/// armv7 neon supports swizzling `u8x16` by swizzling two u8x8 blocks
+/// with a u8x8x2 lookup table.
+///
+/// # Safety
+/// This requires armv7 neon to work
+#[cfg(all(
+    target_arch = "arm",
+    target_feature = "v7",
+    target_feature = "neon",
+    target_endian = "little"
+))]
+unsafe fn armv7_neon_swizzle_u8x16(bytes: Simd<u8, 16>, idxs: Simd<u8, 16>) -> Simd<u8, 16> {
+    use core::arch::arm::{uint8x8x2_t, vcombine_u8, vget_high_u8, vget_low_u8, vtbl2_u8};
+    // SAFETY: Caller promised arm neon support
+    unsafe {
+        let bytes = uint8x8x2_t(vget_low_u8(bytes.into()), vget_high_u8(bytes.into()));
+        let lo = vtbl2_u8(bytes, vget_low_u8(idxs.into()));
+        let hi = vtbl2_u8(bytes, vget_high_u8(idxs.into()));
+        vcombine_u8(lo, hi).into()
+    }
+}
+
 /// "vpshufb like it was meant to be" on AVX2
 ///
 /// # Safety
diff --git a/library/portable-simd/crates/core_simd/src/vector.rs b/library/portable-simd/crates/core_simd/src/vector.rs
index 3e239169149..9c4dd36c24f 100644
--- a/library/portable-simd/crates/core_simd/src/vector.rs
+++ b/library/portable-simd/crates/core_simd/src/vector.rs
@@ -99,7 +99,7 @@ use crate::simd::{
 // directly constructing an instance of the type (i.e. `let vector = Simd(array)`) should be
 // avoided, as it will likely become illegal on `#[repr(simd)]` structs in the future. It also
 // causes rustc to emit illegal LLVM IR in some cases.
-#[repr(simd)]
+#[repr(simd, packed)]
 pub struct Simd<T, const N: usize>([T; N])
 where
     LaneCount<N>: SupportedLaneCount,
@@ -144,14 +144,32 @@ where
     /// assert_eq!(v.as_array(), &[8, 8, 8, 8]);
     /// ```
     #[inline]
-    pub fn splat(value: T) -> Self {
-        // This is preferred over `[value; N]`, since it's explicitly a splat:
-        // https://github.com/rust-lang/rust/issues/97804
-        struct Splat;
-        impl<const N: usize> Swizzle<N> for Splat {
-            const INDEX: [usize; N] = [0; N];
+    #[rustc_const_unstable(feature = "portable_simd", issue = "86656")]
+    pub const fn splat(value: T) -> Self {
+        const fn splat_const<T, const N: usize>(value: T) -> Simd<T, N>
+        where
+            T: SimdElement,
+            LaneCount<N>: SupportedLaneCount,
+        {
+            Simd::from_array([value; N])
         }
-        Splat::swizzle::<T, 1>(Simd::<T, 1>::from([value]))
+
+        fn splat_rt<T, const N: usize>(value: T) -> Simd<T, N>
+        where
+            T: SimdElement,
+            LaneCount<N>: SupportedLaneCount,
+        {
+            // This is preferred over `[value; N]`, since it's explicitly a splat:
+            // https://github.com/rust-lang/rust/issues/97804
+            struct Splat;
+            impl<const N: usize> Swizzle<N> for Splat {
+                const INDEX: [usize; N] = [0; N];
+            }
+
+            Splat::swizzle::<T, 1>(Simd::<T, 1>::from([value]))
+        }
+
+        core::intrinsics::const_eval_select((value,), splat_const, splat_rt)
     }
 
     /// Returns an array reference containing the entire SIMD vector.
@@ -425,6 +443,9 @@ where
     ///
     /// When the element is disabled, that memory location is not accessed and the corresponding
     /// value from `or` is passed through.
+    ///
+    /// # Safety
+    /// Enabled loads must not exceed the length of `slice`.
     #[must_use]
     #[inline]
     pub unsafe fn load_select_unchecked(
@@ -442,6 +463,9 @@ where
     ///
     /// When the element is disabled, that memory location is not accessed and the corresponding
     /// value from `or` is passed through.
+    ///
+    /// # Safety
+    /// Enabled `ptr` elements must be safe to read as if by `std::ptr::read`.
     #[must_use]
     #[inline]
     pub unsafe fn load_select_ptr(
@@ -924,6 +948,7 @@ where
     }
 }
 
+/// Lexicographic order. For the SIMD elementwise minimum and maximum, use simd_min and simd_max instead.
 impl<T, const N: usize> PartialOrd for Simd<T, N>
 where
     LaneCount<N>: SupportedLaneCount,
@@ -943,6 +968,7 @@ where
 {
 }
 
+/// Lexicographic order. For the SIMD elementwise minimum and maximum, use simd_min and simd_max instead.
 impl<T, const N: usize> Ord for Simd<T, N>
 where
     LaneCount<N>: SupportedLaneCount,
@@ -1195,6 +1221,7 @@ fn lane_indices<const N: usize>() -> Simd<usize, N>
 where
     LaneCount<N>: SupportedLaneCount,
 {
+    #![allow(clippy::needless_range_loop)]
     let mut index = [0; N];
     for i in 0..N {
         index[i] = i;
diff --git a/library/portable-simd/crates/core_simd/src/vendor.rs b/library/portable-simd/crates/core_simd/src/vendor.rs
index 1a34a3a8de5..57536e4fc77 100644
--- a/library/portable-simd/crates/core_simd/src/vendor.rs
+++ b/library/portable-simd/crates/core_simd/src/vendor.rs
@@ -29,3 +29,6 @@ mod arm;
 
 #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
 mod powerpc;
+
+#[cfg(target_arch = "loongarch64")]
+mod loongarch64;
diff --git a/library/portable-simd/crates/core_simd/src/vendor/loongarch64.rs b/library/portable-simd/crates/core_simd/src/vendor/loongarch64.rs
new file mode 100644
index 00000000000..1290bc166b2
--- /dev/null
+++ b/library/portable-simd/crates/core_simd/src/vendor/loongarch64.rs
@@ -0,0 +1,31 @@
+use crate::simd::*;
+use core::arch::loongarch64::*;
+
+from_transmute! { unsafe u8x16 => v16u8 }
+from_transmute! { unsafe u8x32 => v32u8 }
+from_transmute! { unsafe i8x16 => v16i8 }
+from_transmute! { unsafe i8x32 => v32i8 }
+
+from_transmute! { unsafe u16x8 => v8u16 }
+from_transmute! { unsafe u16x16 => v16u16 }
+from_transmute! { unsafe i16x8 => v8i16 }
+from_transmute! { unsafe i16x16 => v16i16 }
+
+from_transmute! { unsafe u32x4 => v4u32 }
+from_transmute! { unsafe u32x8 => v8u32 }
+from_transmute! { unsafe i32x4 => v4i32 }
+from_transmute! { unsafe i32x8 => v8i32 }
+from_transmute! { unsafe f32x4 => v4f32 }
+from_transmute! { unsafe f32x8 => v8f32 }
+
+from_transmute! { unsafe u64x2 => v2u64 }
+from_transmute! { unsafe u64x4 => v4u64 }
+from_transmute! { unsafe i64x2 => v2i64 }
+from_transmute! { unsafe i64x4 => v4i64 }
+from_transmute! { unsafe f64x2 => v2f64 }
+from_transmute! { unsafe f64x4 => v4f64 }
+
+from_transmute! { unsafe usizex2 => v2u64 }
+from_transmute! { unsafe usizex4 => v4u64 }
+from_transmute! { unsafe isizex2 => v2i64 }
+from_transmute! { unsafe isizex4 => v4i64 }
diff --git a/library/portable-simd/crates/core_simd/tests/layout.rs b/library/portable-simd/crates/core_simd/tests/layout.rs
new file mode 100644
index 00000000000..24114c2d261
--- /dev/null
+++ b/library/portable-simd/crates/core_simd/tests/layout.rs
@@ -0,0 +1,35 @@
+#![feature(portable_simd)]
+
+macro_rules! layout_tests {
+    { $($mod:ident, $ty:ty,)* } => {
+        $(
+        mod $mod {
+            test_helpers::test_lanes! {
+                fn no_padding<const LANES: usize>() {
+                    assert_eq!(
+                        core::mem::size_of::<core_simd::simd::Simd::<$ty, LANES>>(),
+                        core::mem::size_of::<[$ty; LANES]>(),
+                    );
+                }
+            }
+        }
+        )*
+    }
+}
+
+layout_tests! {
+    i8, i8,
+    i16, i16,
+    i32, i32,
+    i64, i64,
+    isize, isize,
+    u8, u8,
+    u16, u16,
+    u32, u32,
+    u64, u64,
+    usize, usize,
+    f32, f32,
+    f64, f64,
+    mut_ptr, *mut (),
+    const_ptr, *const (),
+}
diff --git a/library/portable-simd/crates/core_simd/tests/masks.rs b/library/portable-simd/crates/core_simd/tests/masks.rs
index fc6a3476b7c..48786d02440 100644
--- a/library/portable-simd/crates/core_simd/tests/masks.rs
+++ b/library/portable-simd/crates/core_simd/tests/masks.rs
@@ -99,7 +99,6 @@ macro_rules! test_mask_api {
                 assert_eq!(Mask::<$type, 2>::from_bitmask(bitmask), mask);
             }
 
-            #[cfg(feature = "all_lane_counts")]
             #[test]
             fn roundtrip_bitmask_conversion_odd() {
                 let values = [
@@ -134,48 +133,6 @@ macro_rules! test_mask_api {
                 cast_impl::<i64>();
                 cast_impl::<isize>();
             }
-
-            #[test]
-            fn roundtrip_bitmask_vector_conversion() {
-                use core_simd::simd::ToBytes;
-                let values = [
-                    true, false, false, true, false, false, true, false,
-                    true, true, false, false, false, false, false, true,
-                ];
-                let mask = Mask::<$type, 16>::from_array(values);
-                let bitmask = mask.to_bitmask_vector();
-                assert_eq!(bitmask.resize::<2>(0).to_ne_bytes()[..2], [0b01001001, 0b10000011]);
-                assert_eq!(Mask::<$type, 16>::from_bitmask_vector(bitmask), mask);
-            }
-
-            // rust-lang/portable-simd#379
-            #[test]
-            fn roundtrip_bitmask_vector_conversion_small() {
-                use core_simd::simd::ToBytes;
-                let values = [
-                    true, false, true, true
-                ];
-                let mask = Mask::<$type, 4>::from_array(values);
-                let bitmask = mask.to_bitmask_vector();
-                assert_eq!(bitmask.resize::<1>(0).to_ne_bytes()[0], 0b00001101);
-                assert_eq!(Mask::<$type, 4>::from_bitmask_vector(bitmask), mask);
-            }
-
-            /* FIXME doesn't work with non-powers-of-two, yet
-            // rust-lang/portable-simd#379
-            #[cfg(feature = "all_lane_counts")]
-            #[test]
-            fn roundtrip_bitmask_vector_conversion_odd() {
-                use core_simd::simd::ToBytes;
-                let values = [
-                    true, false, true, false, true, true, false, false, false, true, true,
-                ];
-                let mask = Mask::<$type, 11>::from_array(values);
-                let bitmask = mask.to_bitmask_vector();
-                assert_eq!(bitmask.resize::<2>(0).to_ne_bytes()[..2], [0b00110101, 0b00000110]);
-                assert_eq!(Mask::<$type, 11>::from_bitmask_vector(bitmask), mask);
-            }
-            */
         }
     }
 }
diff --git a/library/portable-simd/crates/core_simd/tests/ops_macros.rs b/library/portable-simd/crates/core_simd/tests/ops_macros.rs
index aa565a13752..6de78f51e59 100644
--- a/library/portable-simd/crates/core_simd/tests/ops_macros.rs
+++ b/library/portable-simd/crates/core_simd/tests/ops_macros.rs
@@ -216,6 +216,22 @@ macro_rules! impl_common_integer_tests {
                 )
             }
 
+            fn count_ones<const LANES: usize>() {
+                test_helpers::test_unary_elementwise(
+                    &$vector::<LANES>::count_ones,
+                    &|x| x.count_ones() as _,
+                    &|_| true,
+                )
+            }
+
+            fn count_zeros<const LANES: usize>() {
+                test_helpers::test_unary_elementwise(
+                    &$vector::<LANES>::count_zeros,
+                    &|x| x.count_zeros() as _,
+                    &|_| true,
+                )
+            }
+
             fn leading_zeros<const LANES: usize>() {
                 test_helpers::test_unary_elementwise(
                     &$vector::<LANES>::leading_zeros,
@@ -307,6 +323,14 @@ macro_rules! impl_signed_tests {
                     assert_eq!(a % b, Vector::<LANES>::splat(0));
                 }
 
+                fn abs_diff<const LANES: usize>() {
+                    test_helpers::test_binary_elementwise(
+                        &Vector::<LANES>::abs_diff,
+                        &Scalar::abs_diff,
+                        &|_, _| true,
+                    )
+                }
+
                 fn simd_min<const LANES: usize>() {
                     use core_simd::simd::cmp::SimdOrd;
                     let a = Vector::<LANES>::splat(Scalar::MIN);
@@ -419,6 +443,14 @@ macro_rules! impl_unsigned_tests {
                         &|_| true,
                     );
                 }
+
+                fn abs_diff<const LANES: usize>() {
+                    test_helpers::test_binary_elementwise(
+                        &Vector::<LANES>::abs_diff,
+                        &Scalar::abs_diff,
+                        &|_, _| true,
+                    )
+                }
             }
 
             impl_binary_op_test!(Scalar, Add::add, AddAssign::add_assign, Scalar::wrapping_add);
@@ -495,6 +527,9 @@ macro_rules! impl_float_tests {
                 }
 
                 fn is_normal<const LANES: usize>() {
+                    // Arm v7 Neon violates float opsem re: subnormals, see
+                    // https://github.com/rust-lang/portable-simd/issues/439
+                    #[cfg(not(target_arch = "arm"))]
                     test_helpers::test_unary_mask_elementwise(
                         &Vector::<LANES>::is_normal,
                         &Scalar::is_normal,
@@ -503,6 +538,9 @@ macro_rules! impl_float_tests {
                 }
 
                 fn is_subnormal<const LANES: usize>() {
+                    // Arm v7 Neon violates float opsem re: subnormals, see
+                    // https://github.com/rust-lang/portable-simd/issues/439
+                    #[cfg(not(target_arch = "arm"))]
                     test_helpers::test_unary_mask_elementwise(
                         &Vector::<LANES>::is_subnormal,
                         &Scalar::is_subnormal,
diff --git a/library/portable-simd/crates/core_simd/tests/swizzle.rs b/library/portable-simd/crates/core_simd/tests/swizzle.rs
index 522d71439b7..7001e5f6bf8 100644
--- a/library/portable-simd/crates/core_simd/tests/swizzle.rs
+++ b/library/portable-simd/crates/core_simd/tests/swizzle.rs
@@ -50,6 +50,24 @@ fn rotate() {
 
 #[test]
 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
+fn shift() {
+    let a = Simd::from_array([1, 2, 3, 4]);
+    assert_eq!(a.shift_elements_left::<0>(0).to_array(), [1, 2, 3, 4]);
+    assert_eq!(a.shift_elements_left::<1>(0).to_array(), [2, 3, 4, 0]);
+    assert_eq!(a.shift_elements_left::<2>(9).to_array(), [3, 4, 9, 9]);
+    assert_eq!(a.shift_elements_left::<3>(8).to_array(), [4, 8, 8, 8]);
+    assert_eq!(a.shift_elements_left::<4>(7).to_array(), [7, 7, 7, 7]);
+    assert_eq!(a.shift_elements_left::<5>(6).to_array(), [6, 6, 6, 6]);
+    assert_eq!(a.shift_elements_right::<0>(0).to_array(), [1, 2, 3, 4]);
+    assert_eq!(a.shift_elements_right::<1>(0).to_array(), [0, 1, 2, 3]);
+    assert_eq!(a.shift_elements_right::<2>(-1).to_array(), [-1, -1, 1, 2]);
+    assert_eq!(a.shift_elements_right::<3>(-2).to_array(), [-2, -2, -2, 1]);
+    assert_eq!(a.shift_elements_right::<4>(-3).to_array(), [-3, -3, -3, -3]);
+    assert_eq!(a.shift_elements_right::<5>(-4).to_array(), [-4, -4, -4, -4]);
+}
+
+#[test]
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
 fn interleave() {
     let a = Simd::from_array([0, 1, 2, 3, 4, 5, 6, 7]);
     let b = Simd::from_array([8, 9, 10, 11, 12, 13, 14, 15]);
diff --git a/library/portable-simd/crates/test_helpers/Cargo.toml b/library/portable-simd/crates/test_helpers/Cargo.toml
index 23dae7c9338..a5359b9abc8 100644
--- a/library/portable-simd/crates/test_helpers/Cargo.toml
+++ b/library/portable-simd/crates/test_helpers/Cargo.toml
@@ -6,6 +6,3 @@ publish = false
 
 [dependencies]
 proptest = { version = "0.10", default-features = false, features = ["alloc"] }
-
-[features]
-all_lane_counts = []
diff --git a/library/portable-simd/crates/test_helpers/src/lib.rs b/library/portable-simd/crates/test_helpers/src/lib.rs
index 51b860a8635..197c920e11e 100644
--- a/library/portable-simd/crates/test_helpers/src/lib.rs
+++ b/library/portable-simd/crates/test_helpers/src/lib.rs
@@ -539,32 +539,22 @@ macro_rules! test_lanes {
                     #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)];
                     lanes_1 1;
                     lanes_2 2;
-                    lanes_4 4;
-                );
-
-                #[cfg(not(miri))] // Miri intrinsic implementations are uniform and larger tests are sloooow
-                $crate::test_lanes_helper!(
-                    #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)];
-                    lanes_8 8;
-                    lanes_16 16;
-                    lanes_32 32;
-                    lanes_64 64;
-                );
-
-                #[cfg(feature = "all_lane_counts")]
-                $crate::test_lanes_helper!(
-                    // test some odd and even non-power-of-2 lengths on miri
-                    #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)];
+                    // Cover an odd and an even non-power-of-2 length in Miri.
+                    // (Even non-power-of-2 vectors have alignment between element
+                    // and vector size, so we want to cover that case as well.)
                     lanes_3 3;
-                    lanes_5 5;
+
                     lanes_6 6;
                 );
 
-                #[cfg(feature = "all_lane_counts")]
                 #[cfg(not(miri))] // Miri intrinsic implementations are uniform and larger tests are sloooow
                 $crate::test_lanes_helper!(
                     #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)];
+                    lanes_4 4;
+                    lanes_5 5;
+
                     lanes_7 7;
+                    lanes_8 8;
                     lanes_9 9;
                     lanes_10 10;
                     lanes_11 11;
@@ -572,52 +562,55 @@ macro_rules! test_lanes {
                     lanes_13 13;
                     lanes_14 14;
                     lanes_15 15;
+                    lanes_16 16;
                     lanes_17 17;
-                    lanes_18 18;
-                    lanes_19 19;
-                    lanes_20 20;
-                    lanes_21 21;
-                    lanes_22 22;
-                    lanes_23 23;
+                    //lanes_18 18;
+                    //lanes_19 19;
+                    //lanes_20 20;
+                    //lanes_21 21;
+                    //lanes_22 22;
+                    //lanes_23 23;
                     lanes_24 24;
-                    lanes_25 25;
-                    lanes_26 26;
-                    lanes_27 27;
-                    lanes_28 28;
-                    lanes_29 29;
-                    lanes_30 30;
-                    lanes_31 31;
-                    lanes_33 33;
-                    lanes_34 34;
-                    lanes_35 35;
-                    lanes_36 36;
-                    lanes_37 37;
-                    lanes_38 38;
-                    lanes_39 39;
-                    lanes_40 40;
-                    lanes_41 41;
-                    lanes_42 42;
-                    lanes_43 43;
-                    lanes_44 44;
-                    lanes_45 45;
-                    lanes_46 46;
+                    //lanes_25 25;
+                    //lanes_26 26;
+                    //lanes_27 27;
+                    //lanes_28 28;
+                    //lanes_29 29;
+                    //lanes_30 30;
+                    //lanes_31 31;
+                    lanes_32 32;
+                    //lanes_33 33;
+                    //lanes_34 34;
+                    //lanes_35 35;
+                    //lanes_36 36;
+                    //lanes_37 37;
+                    //lanes_38 38;
+                    //lanes_39 39;
+                    //lanes_40 40;
+                    //lanes_41 41;
+                    //lanes_42 42;
+                    //lanes_43 43;
+                    //lanes_44 44;
+                    //lanes_45 45;
+                    //lanes_46 46;
                     lanes_47 47;
-                    lanes_48 48;
-                    lanes_49 49;
-                    lanes_50 50;
-                    lanes_51 51;
-                    lanes_52 52;
-                    lanes_53 53;
-                    lanes_54 54;
-                    lanes_55 55;
+                    //lanes_48 48;
+                    //lanes_49 49;
+                    //lanes_50 50;
+                    //lanes_51 51;
+                    //lanes_52 52;
+                    //lanes_53 53;
+                    //lanes_54 54;
+                    //lanes_55 55;
                     lanes_56 56;
                     lanes_57 57;
-                    lanes_58 58;
-                    lanes_59 59;
-                    lanes_60 60;
-                    lanes_61 61;
-                    lanes_62 62;
+                    //lanes_58 58;
+                    //lanes_59 59;
+                    //lanes_60 60;
+                    //lanes_61 61;
+                    //lanes_62 62;
                     lanes_63 63;
+                    lanes_64 64;
                 );
             }
         )*
@@ -639,36 +632,24 @@ macro_rules! test_lanes_panic {
                     core_simd::simd::LaneCount<$lanes>: core_simd::simd::SupportedLaneCount,
                 $body
 
+                // test some odd and even non-power-of-2 lengths on miri
                 $crate::test_lanes_helper!(
                     #[should_panic];
                     lanes_1 1;
                     lanes_2 2;
-                    lanes_4 4;
-                );
-
-                #[cfg(not(miri))] // Miri intrinsic implementations are uniform and larger tests are sloooow
-                $crate::test_lanes_helper!(
-                    #[should_panic];
-                    lanes_8 8;
-                    lanes_16 16;
-                    lanes_32 32;
-                    lanes_64 64;
-                );
-
-                #[cfg(feature = "all_lane_counts")]
-                $crate::test_lanes_helper!(
-                    // test some odd and even non-power-of-2 lengths on miri
-                    #[should_panic];
                     lanes_3 3;
-                    lanes_5 5;
+
                     lanes_6 6;
                 );
 
-                #[cfg(feature = "all_lane_counts")]
                 #[cfg(not(miri))] // Miri intrinsic implementations are uniform and larger tests are sloooow
                 $crate::test_lanes_helper!(
                     #[should_panic];
+                    lanes_4 4;
+                    lanes_5 5;
+
                     lanes_7 7;
+                    lanes_8 8;
                     lanes_9 9;
                     lanes_10 10;
                     lanes_11 11;
@@ -676,52 +657,55 @@ macro_rules! test_lanes_panic {
                     lanes_13 13;
                     lanes_14 14;
                     lanes_15 15;
+                    lanes_16 16;
                     lanes_17 17;
-                    lanes_18 18;
-                    lanes_19 19;
-                    lanes_20 20;
-                    lanes_21 21;
-                    lanes_22 22;
-                    lanes_23 23;
+                    //lanes_18 18;
+                    //lanes_19 19;
+                    //lanes_20 20;
+                    //lanes_21 21;
+                    //lanes_22 22;
+                    //lanes_23 23;
                     lanes_24 24;
-                    lanes_25 25;
-                    lanes_26 26;
-                    lanes_27 27;
-                    lanes_28 28;
-                    lanes_29 29;
-                    lanes_30 30;
-                    lanes_31 31;
-                    lanes_33 33;
-                    lanes_34 34;
-                    lanes_35 35;
-                    lanes_36 36;
-                    lanes_37 37;
-                    lanes_38 38;
-                    lanes_39 39;
-                    lanes_40 40;
-                    lanes_41 41;
-                    lanes_42 42;
-                    lanes_43 43;
-                    lanes_44 44;
-                    lanes_45 45;
-                    lanes_46 46;
+                    //lanes_25 25;
+                    //lanes_26 26;
+                    //lanes_27 27;
+                    //lanes_28 28;
+                    //lanes_29 29;
+                    //lanes_30 30;
+                    //lanes_31 31;
+                    lanes_32 32;
+                    //lanes_33 33;
+                    //lanes_34 34;
+                    //lanes_35 35;
+                    //lanes_36 36;
+                    //lanes_37 37;
+                    //lanes_38 38;
+                    //lanes_39 39;
+                    //lanes_40 40;
+                    //lanes_41 41;
+                    //lanes_42 42;
+                    //lanes_43 43;
+                    //lanes_44 44;
+                    //lanes_45 45;
+                    //lanes_46 46;
                     lanes_47 47;
-                    lanes_48 48;
-                    lanes_49 49;
-                    lanes_50 50;
-                    lanes_51 51;
-                    lanes_52 52;
-                    lanes_53 53;
-                    lanes_54 54;
-                    lanes_55 55;
+                    //lanes_48 48;
+                    //lanes_49 49;
+                    //lanes_50 50;
+                    //lanes_51 51;
+                    //lanes_52 52;
+                    //lanes_53 53;
+                    //lanes_54 54;
+                    //lanes_55 55;
                     lanes_56 56;
                     lanes_57 57;
-                    lanes_58 58;
-                    lanes_59 59;
-                    lanes_60 60;
-                    lanes_61 61;
-                    lanes_62 62;
+                    //lanes_58 58;
+                    //lanes_59 59;
+                    //lanes_60 60;
+                    //lanes_61 61;
+                    //lanes_62 62;
                     lanes_63 63;
+                    lanes_64 64;
                 );
             }
         )*
diff --git a/library/portable-simd/rust-toolchain.toml b/library/portable-simd/rust-toolchain.toml
new file mode 100644
index 00000000000..d17c6d2e889
--- /dev/null
+++ b/library/portable-simd/rust-toolchain.toml
@@ -0,0 +1,3 @@
+[toolchain]
+channel = "nightly-2025-01-16"
+components = ["rustfmt", "clippy", "miri", "rust-src"]
diff --git a/library/portable-simd/subtree-sync.sh b/library/portable-simd/subtree-sync.sh
new file mode 100755
index 00000000000..18360077623
--- /dev/null
+++ b/library/portable-simd/subtree-sync.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -eou pipefail
+
+git fetch origin
+pushd $2
+git fetch origin
+popd
+
+if [ "$(git rev-parse --show-prefix)" != "" ]; then
+    echo "Run this script from the git root" >&2
+    exit 1
+fi
+
+if [ "$(git rev-parse HEAD)" != "$(git rev-parse origin/master)" ]; then
+    echo "$(pwd) is not at origin/master" >&2
+    exit 1
+fi
+
+if [ ! -f library/portable-simd/git-subtree.sh ]; then
+    curl -sS https://raw.githubusercontent.com/bjorn3/git/tqc-subtree-portable/contrib/subtree/git-subtree.sh -o library/portable-simd/git-subtree.sh
+    chmod +x library/portable-simd/git-subtree.sh
+fi
+
+today=$(date +%Y-%m-%d)
+
+case $1 in
+    "push")
+        upstream=rust-upstream-$today
+        merge=sync-from-rust-$today
+
+        pushd $2
+        git checkout master
+        git pull
+        popd
+
+        library/portable-simd/git-subtree.sh push -P library/portable-simd $2 $upstream
+
+        pushd $2
+        git checkout -B $merge origin/master
+        git merge $upstream
+        popd
+        echo "Branch \`$merge\` created in \`$2\`. You may need to resolve merge conflicts."
+        ;;
+    "pull")
+        branch=sync-from-portable-simd-$today
+
+        git checkout -B $branch
+        echo "Creating branch \`$branch\`... You may need to resolve merge conflicts."
+        library/portable-simd/git-subtree.sh pull -P library/portable-simd $2 origin/master
+        ;;
+esac
diff --git a/library/std/Cargo.toml b/library/std/Cargo.toml
index aa391a4b317..add5a20d179 100644
--- a/library/std/Cargo.toml
+++ b/library/std/Cargo.toml
@@ -18,7 +18,7 @@ cfg-if = { version = "1.0", features = ['rustc-dep-of-std'] }
 panic_unwind = { path = "../panic_unwind", optional = true }
 panic_abort = { path = "../panic_abort" }
 core = { path = "../core", public = true }
-compiler_builtins = { version = "=0.1.145" }
+compiler_builtins = { version = "=0.1.146" }
 unwind = { path = "../unwind" }
 hashbrown = { version = "0.15", default-features = false, features = [
     'rustc-dep-of-std',
diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs
index 0871a9e22d3..83b009c86dc 100644
--- a/library/std/src/fs.rs
+++ b/library/std/src/fs.rs
@@ -664,7 +664,7 @@ impl File {
     /// use std::fs::File;
     ///
     /// fn main() -> std::io::Result<()> {
-    ///     let f = File::open("foo.txt")?;
+    ///     let f = File::create("foo.txt")?;
     ///     f.lock()?;
     ///     Ok(())
     /// }
@@ -767,7 +767,7 @@ impl File {
     /// use std::fs::File;
     ///
     /// fn main() -> std::io::Result<()> {
-    ///     let f = File::open("foo.txt")?;
+    ///     let f = File::create("foo.txt")?;
     ///     f.try_lock()?;
     ///     Ok(())
     /// }
diff --git a/library/std/src/keyword_docs.rs b/library/std/src/keyword_docs.rs
index 1d26bf37f4d..825a89fc7f2 100644
--- a/library/std/src/keyword_docs.rs
+++ b/library/std/src/keyword_docs.rs
@@ -651,16 +651,24 @@ mod if_keyword {}
 
 #[doc(keyword = "impl")]
 //
-/// Implement some functionality for a type.
+/// Implementations of functionality for a type, or a type implementing some functionality.
+///
+/// There are two uses of the keyword `impl`:
+///  * An `impl` block is an item that is used to implement some functionality for a type.
+///  * An `impl Trait` in a type-position can be used to designate a type that implements a trait called `Trait`.
+///
+/// # Implementing Functionality for a Type
 ///
 /// The `impl` keyword is primarily used to define implementations on types. Inherent
 /// implementations are standalone, while trait implementations are used to implement traits for
 /// types, or other traits.
 ///
-/// Functions and consts can both be defined in an implementation. A function defined in an
-/// `impl` block can be standalone, meaning it would be called like `Foo::bar()`. If the function
+/// An implementation consists of definitions of functions and consts. A function defined in an
+/// `impl` block can be standalone, meaning it would be called like `Vec::new()`. If the function
 /// takes `self`, `&self`, or `&mut self` as its first argument, it can also be called using
-/// method-call syntax, a familiar feature to any object oriented programmer, like `foo.bar()`.
+/// method-call syntax, a familiar feature to any object-oriented programmer, like `vec.len()`.
+///
+/// ## Inherent Implementations
 ///
 /// ```rust
 /// struct Example {
@@ -680,6 +688,17 @@ mod if_keyword {}
 ///         self.number
 ///     }
 /// }
+/// ```
+///
+/// It matters little where an inherent implementation is defined;
+/// its functionality is in scope wherever its implementing type is.
+///
+/// ## Trait Implementations
+///
+/// ```rust
+/// struct Example {
+///     number: i32,
+/// }
 ///
 /// trait Thingy {
 ///     fn do_thingy(&self);
@@ -692,11 +711,19 @@ mod if_keyword {}
 /// }
 /// ```
 ///
+/// It matters little where a trait implementation is defined;
+/// its functionality can be brought into scope by importing the trait it implements.
+///
 /// For more information on implementations, see the [Rust book][book1] or the [Reference].
 ///
-/// The other use of the `impl` keyword is in `impl Trait` syntax, which can be seen as a shorthand
-/// for "a concrete type that implements this trait". Its primary use is working with closures,
-/// which have type definitions generated at compile time that can't be simply typed out.
+/// # Designating a Type that Implements Some Functionality
+///
+/// The other use of the `impl` keyword is in `impl Trait` syntax, which can be understood to mean
+/// "any (or some) concrete type that implements Trait".
+/// It can be used as the type of a variable declaration,
+/// in [argument position](https://rust-lang.github.io/rfcs/1951-expand-impl-trait.html)
+/// or in [return position](https://rust-lang.github.io/rfcs/3425-return-position-impl-trait-in-traits.html).
+/// One pertinent use case is in working with closures, which have unnameable types.
 ///
 /// ```rust
 /// fn thing_returning_closure() -> impl Fn(i32) -> bool {
diff --git a/library/std/src/sys/pal/uefi/os.rs b/library/std/src/sys/pal/uefi/os.rs
index 6d23c72ef22..e305b8610c9 100644
--- a/library/std/src/sys/pal/uefi/os.rs
+++ b/library/std/src/sys/pal/uefi/os.rs
@@ -17,111 +17,50 @@ pub fn errno() -> RawOsError {
 pub fn error_string(errno: RawOsError) -> String {
     // Keep the List in Alphabetical Order
     // The Messages are taken from UEFI Specification Appendix D - Status Codes
-    match r_efi::efi::Status::from_usize(errno) {
-        Status::ABORTED => "The operation was aborted.".to_owned(),
-        Status::ACCESS_DENIED => "Access was denied.".to_owned(),
-        Status::ALREADY_STARTED => "The protocol has already been started.".to_owned(),
-        Status::BAD_BUFFER_SIZE => "The buffer was not the proper size for the request.".to_owned(),
-        Status::BUFFER_TOO_SMALL => {
-                "The buffer is not large enough to hold the requested data. The required buffer size is returned in the appropriate parameter when this error occurs.".to_owned()
-        }
-        Status::COMPROMISED_DATA => {
-                "The security status of the data is unknown or compromised and the data must be updated or replaced to restore a valid security status.".to_owned()
-        }
-        Status::CONNECTION_FIN => {
-                "The receiving operation fails because the communication peer has closed the connection and there is no more data in the receive buffer of the instance.".to_owned()
-        }
-        Status::CONNECTION_REFUSED => {
-                "The receiving or transmission operation fails because this connection is refused.".to_owned()
-        }
-        Status::CONNECTION_RESET => {
-                "The connect fails because the connection is reset either by instance itself or the communication peer.".to_owned()
-        }
-        Status::CRC_ERROR => "A CRC error was detected.".to_owned(),
-        Status::DEVICE_ERROR =>             "The physical device reported an error while attempting the operation.".to_owned()
-        ,
-        Status::END_OF_FILE => {
-            "The end of the file was reached.".to_owned()
-        }
-        Status::END_OF_MEDIA => {
-            "Beginning or end of media was reached".to_owned()
-        }
-        Status::HOST_UNREACHABLE => {
-            "The remote host is not reachable.".to_owned()
-        }
-        Status::HTTP_ERROR => {
-            "A HTTP error occurred during the network operation.".to_owned()
-        }
-        Status::ICMP_ERROR => {
-                "An ICMP error occurred during the network operation.".to_owned()
-        }
-        Status::INCOMPATIBLE_VERSION => {
-                "The function encountered an internal version that was incompatible with a version requested by the caller.".to_owned()
-        }
-        Status::INVALID_LANGUAGE => {
-            "The language specified was invalid.".to_owned()
-        }
-        Status::INVALID_PARAMETER => {
-            "A parameter was incorrect.".to_owned()
-        }
-        Status::IP_ADDRESS_CONFLICT => {
-            "There is an address conflict address allocation".to_owned()
-        }
-        Status::LOAD_ERROR => {
-            "The image failed to load.".to_owned()
-        }
-        Status::MEDIA_CHANGED => {
-                "The medium in the device has changed since the last access.".to_owned()
-        }
-        Status::NETWORK_UNREACHABLE => {
-                "The network containing the remote host is not reachable.".to_owned()
-        }
-        Status::NO_MAPPING => {
-            "A mapping to a device does not exist.".to_owned()
-        }
-        Status::NO_MEDIA => {
-                "The device does not contain any medium to perform the operation.".to_owned()
-        }
-        Status::NO_RESPONSE => {
-                "The server was not found or did not respond to the request.".to_owned()
-        }
-        Status::NOT_FOUND => "The item was not found.".to_owned(),
-        Status::NOT_READY => {
-            "There is no data pending upon return.".to_owned()
-        }
-        Status::NOT_STARTED => {
-            "The protocol has not been started.".to_owned()
-        }
-        Status::OUT_OF_RESOURCES => {
-            "A resource has run out.".to_owned()
-        }
-        Status::PROTOCOL_ERROR => {
-                "A protocol error occurred during the network operation.".to_owned()
-        }
-        Status::PROTOCOL_UNREACHABLE => {
-            "An ICMP protocol unreachable error is received.".to_owned()
-        }
-        Status::SECURITY_VIOLATION => {
-                "The function was not performed due to a security violation.".to_owned()
-        }
-        Status::TFTP_ERROR => {
-            "A TFTP error occurred during the network operation.".to_owned()
-        }
-        Status::TIMEOUT => "The timeout time expired.".to_owned(),
-        Status::UNSUPPORTED => {
-            "The operation is not supported.".to_owned()
-        }
-        Status::VOLUME_FULL => {
-            "There is no more space on the file system.".to_owned()
-        }
-        Status::VOLUME_CORRUPTED => {
-                "An inconstancy was detected on the file system causing the operating to fail.".to_owned()
-        }
-        Status::WRITE_PROTECTED => {
-            "The device cannot be written to.".to_owned()
-        }
-        _ => format!("Status: {}", errno),
-    }
+    #[rustfmt::skip]
+    let msg = match r_efi::efi::Status::from_usize(errno) {
+        Status::ABORTED => "The operation was aborted.",
+        Status::ACCESS_DENIED => "Access was denied.",
+        Status::ALREADY_STARTED => "The protocol has already been started.",
+        Status::BAD_BUFFER_SIZE => "The buffer was not the proper size for the request.",
+        Status::BUFFER_TOO_SMALL => "The buffer is not large enough to hold the requested data. The required buffer size is returned in the appropriate parameter when this error occurs.",
+        Status::COMPROMISED_DATA => "The security status of the data is unknown or compromised and the data must be updated or replaced to restore a valid security status.",
+        Status::CONNECTION_FIN => "The receiving operation fails because the communication peer has closed the connection and there is no more data in the receive buffer of the instance.",
+        Status::CONNECTION_REFUSED => "The receiving or transmission operation fails because this connection is refused.",
+        Status::CONNECTION_RESET => "The connect fails because the connection is reset either by instance itself or the communication peer.",
+        Status::CRC_ERROR => "A CRC error was detected.",
+        Status::DEVICE_ERROR => "The physical device reported an error while attempting the operation.",
+        Status::END_OF_FILE => "The end of the file was reached.",
+        Status::END_OF_MEDIA => "Beginning or end of media was reached",
+        Status::HOST_UNREACHABLE => "The remote host is not reachable.",
+        Status::HTTP_ERROR => "A HTTP error occurred during the network operation.",
+        Status::ICMP_ERROR => "An ICMP error occurred during the network operation.",
+        Status::INCOMPATIBLE_VERSION => "The function encountered an internal version that was incompatible with a version requested by the caller.",
+        Status::INVALID_LANGUAGE => "The language specified was invalid.",
+        Status::INVALID_PARAMETER => "A parameter was incorrect.",
+        Status::IP_ADDRESS_CONFLICT => "There is an address conflict address allocation",
+        Status::LOAD_ERROR => "The image failed to load.",
+        Status::MEDIA_CHANGED => "The medium in the device has changed since the last access.",
+        Status::NETWORK_UNREACHABLE => "The network containing the remote host is not reachable.",
+        Status::NO_MAPPING => "A mapping to a device does not exist.",
+        Status::NO_MEDIA => "The device does not contain any medium to perform the operation.",
+        Status::NO_RESPONSE => "The server was not found or did not respond to the request.",
+        Status::NOT_FOUND => "The item was not found.",
+        Status::NOT_READY => "There is no data pending upon return.",
+        Status::NOT_STARTED => "The protocol has not been started.",
+        Status::OUT_OF_RESOURCES => "A resource has run out.",
+        Status::PROTOCOL_ERROR => "A protocol error occurred during the network operation.",
+        Status::PROTOCOL_UNREACHABLE => "An ICMP protocol unreachable error is received.",
+        Status::SECURITY_VIOLATION => "The function was not performed due to a security violation.",
+        Status::TFTP_ERROR => "A TFTP error occurred during the network operation.",
+        Status::TIMEOUT => "The timeout time expired.",
+        Status::UNSUPPORTED => "The operation is not supported.",
+        Status::VOLUME_FULL => "There is no more space on the file system.",
+        Status::VOLUME_CORRUPTED => "An inconstancy was detected on the file system causing the operating to fail.",
+        Status::WRITE_PROTECTED => "The device cannot be written to.",
+        _ => return format!("Status: {errno}"),
+    };
+    msg.to_owned()
 }
 
 pub fn getcwd() -> io::Result<PathBuf> {
@@ -314,7 +253,7 @@ mod uefi_env {
 
         let mut start = 0;
 
-        // UEFI Shell returns all keys seperated by NULL.
+        // UEFI Shell returns all keys separated by NULL.
         // End of string is denoted by two NULLs
         for i in 0.. {
             if unsafe { *val.add(i) } == 0 {
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
index cd3558ac6a4..a2375842bdd 100644
--- a/src/bootstrap/src/core/build_steps/compile.rs
+++ b/src/bootstrap/src/core/build_steps/compile.rs
@@ -191,7 +191,7 @@ impl Step for Std {
         // The LLD wrappers and `rust-lld` are self-contained linking components that can be
         // necessary to link the stdlib on some targets. We'll also need to copy these binaries to
         // the `stage0-sysroot` to ensure the linker is found when bootstrapping on such a target.
-        if compiler.stage == 0 && compiler.host == builder.config.build {
+        if compiler.stage == 0 && builder.is_builder_target(&compiler.host) {
             // We want to copy the host `bin` folder within the `rustlib` folder in the sysroot.
             let src_sysroot_bin = builder
                 .rustc_snapshot_sysroot()
@@ -443,8 +443,49 @@ fn compiler_rt_for_profiler(builder: &Builder<'_>) -> PathBuf {
 /// Configure cargo to compile the standard library, adding appropriate env vars
 /// and such.
 pub fn std_cargo(builder: &Builder<'_>, target: TargetSelection, stage: u32, cargo: &mut Cargo) {
-    if let Some(target) = env::var_os("MACOSX_STD_DEPLOYMENT_TARGET") {
-        cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
+    // rustc already ensures that it builds with the minimum deployment
+    // target, so ideally we shouldn't need to do anything here.
+    //
+    // However, `cc` currently defaults to a higher version for backwards
+    // compatibility, which means that compiler-rt, which is built via
+    // compiler-builtins' build script, gets built with a higher deployment
+    // target. This in turn causes warnings while linking, and is generally
+    // a compatibility hazard.
+    //
+    // So, at least until https://github.com/rust-lang/cc-rs/issues/1171, or
+    // perhaps https://github.com/rust-lang/cargo/issues/13115 is resolved, we
+    // explicitly set the deployment target environment variables to avoid
+    // this issue.
+    //
+    // This place also serves as an extension point if we ever wanted to raise
+    // rustc's default deployment target while keeping the prebuilt `std` at
+    // a lower version, so it's kinda nice to have in any case.
+    if target.contains("apple") && !builder.config.dry_run() {
+        // Query rustc for the deployment target, and the associated env var.
+        // The env var is one of the standard `*_DEPLOYMENT_TARGET` vars, i.e.
+        // `MACOSX_DEPLOYMENT_TARGET`, `IPHONEOS_DEPLOYMENT_TARGET`, etc.
+        let mut cmd = command(builder.rustc(cargo.compiler()));
+        cmd.arg("--target").arg(target.rustc_target_arg());
+        cmd.arg("--print=deployment-target");
+        let output = cmd.run_capture_stdout(builder).stdout();
+
+        let (env_var, value) = output.split_once('=').unwrap();
+        // Unconditionally set the env var (if it was set in the environment
+        // already, rustc should've picked that up).
+        cargo.env(env_var.trim(), value.trim());
+
+        // Allow CI to override the deployment target for `std` on macOS.
+        //
+        // This is useful because we might want the host tooling LLVM, `rustc`
+        // and Cargo to have a different deployment target than `std` itself
+        // (currently, these two versions are the same, but in the past, we
+        // supported macOS 10.7 for user code and macOS 10.8 in host tooling).
+        //
+        // It is not necessary on the other platforms, since only macOS has
+        // support for host tooling.
+        if let Some(target) = env::var_os("MACOSX_STD_DEPLOYMENT_TARGET") {
+            cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
+        }
     }
 
     // Paths needed by `library/profiler_builtins/build.rs`.
@@ -1049,12 +1090,12 @@ pub fn rustc_cargo(
     // <https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Internal.20lint.20for.20raw.20.60print!.60.20and.20.60println!.60.3F>.
     cargo.rustflag("-Zon-broken-pipe=kill");
 
-    // We temporarily disable linking here as part of some refactoring.
-    // This way, people can manually use -Z llvm-plugins and -C passes=enzyme for now.
-    // In a follow-up PR, we will re-enable linking here and load the pass for them.
-    //if builder.config.llvm_enzyme {
-    //    cargo.rustflag("-l").rustflag("Enzyme-19");
-    //}
+    // We want to link against registerEnzyme and in the future we want to use additional
+    // functionality from Enzyme core. For that we need to link against Enzyme.
+    // FIXME(ZuseZ4): Get the LLVM version number automatically instead of hardcoding it.
+    if builder.config.llvm_enzyme {
+        cargo.rustflag("-l").rustflag("Enzyme-19");
+    }
 
     // Building with protected visibility reduces the number of dynamic relocations needed, giving
     // us a faster startup time. However GNU ld < 2.40 will error if we try to link a shared object
@@ -1064,9 +1105,7 @@ pub fn rustc_cargo(
         cargo.rustflag("-Zdefault-visibility=protected");
     }
 
-    // We currently don't support cross-crate LTO in stage0. This also isn't hugely necessary
-    // and may just be a time sink.
-    if compiler.stage != 0 {
+    if is_lto_stage(compiler) {
         match builder.config.rust_lto {
             RustcLto::Thin | RustcLto::Fat => {
                 // Since using LTO for optimizing dylibs is currently experimental,
@@ -1234,6 +1273,9 @@ fn rustc_llvm_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelect
     if builder.is_rust_llvm(target) {
         cargo.env("LLVM_RUSTLLVM", "1");
     }
+    if builder.config.llvm_enzyme {
+        cargo.env("LLVM_ENZYME", "1");
+    }
     let llvm::LlvmResult { llvm_config, .. } = builder.ensure(llvm::Llvm { target });
     cargo.env("LLVM_CONFIG", &llvm_config);
 
@@ -1544,7 +1586,8 @@ pub fn compiler_file(
         return PathBuf::new();
     }
     let mut cmd = command(compiler);
-    cmd.args(builder.cflags(target, GitRepo::Rustc, c));
+    cmd.args(builder.cc_handled_clags(target, c));
+    cmd.args(builder.cc_unhandled_cflags(target, GitRepo::Rustc, c));
     cmd.arg(format!("-print-file-name={file}"));
     let out = cmd.run_capture_stdout(builder).stdout();
     PathBuf::from(out.trim())
@@ -2267,7 +2310,8 @@ pub fn strip_debug(builder: &Builder<'_>, target: TargetSelection, path: &Path)
     // FIXME: to make things simpler for now, limit this to the host and target where we know
     // `strip -g` is both available and will fix the issue, i.e. on a x64 linux host that is not
     // cross-compiling. Expand this to other appropriate targets in the future.
-    if target != "x86_64-unknown-linux-gnu" || target != builder.config.build || !path.exists() {
+    if target != "x86_64-unknown-linux-gnu" || !builder.is_builder_target(&target) || !path.exists()
+    {
         return;
     }
 
@@ -2290,3 +2334,8 @@ pub fn strip_debug(builder: &Builder<'_>, target: TargetSelection, path: &Path)
     // everything else (standard library, future stages...) to be rebuilt.
     t!(file.set_modified(previous_mtime));
 }
+
+/// We only use LTO for stage 2+, to speed up build time of intermediate stages.
+pub fn is_lto_stage(build_compiler: &Compiler) -> bool {
+    build_compiler.stage != 0
+}
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
index 18f920b85ee..ae3761a97e5 100644
--- a/src/bootstrap/src/core/build_steps/dist.rs
+++ b/src/bootstrap/src/core/build_steps/dist.rs
@@ -582,7 +582,7 @@ impl Step for DebuggerScripts {
 fn skip_host_target_lib(builder: &Builder<'_>, compiler: Compiler) -> bool {
     // The only true set of target libraries came from the build triple, so
     // let's reduce redundant work by only producing archives from that host.
-    if compiler.host != builder.config.build {
+    if !builder.is_builder_target(&compiler.host) {
         builder.info("\tskipping, not a build host");
         true
     } else {
@@ -637,7 +637,7 @@ fn copy_target_libs(
     for (path, dependency_type) in builder.read_stamp_file(stamp) {
         if dependency_type == DependencyType::TargetSelfContained {
             builder.copy_link(&path, &self_contained_dst.join(path.file_name().unwrap()));
-        } else if dependency_type == DependencyType::Target || builder.config.build == target {
+        } else if dependency_type == DependencyType::Target || builder.is_builder_target(&target) {
             builder.copy_link(&path, &dst.join(path.file_name().unwrap()));
         }
     }
@@ -786,7 +786,7 @@ impl Step for Analysis {
     fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> {
         let compiler = self.compiler;
         let target = self.target;
-        if compiler.host != builder.config.build {
+        if !builder.is_builder_target(&compiler.host) {
             return None;
         }
 
diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs
index 49bf04356d5..ee60dbef7b9 100644
--- a/src/bootstrap/src/core/build_steps/llvm.rs
+++ b/src/bootstrap/src/core/build_steps/llvm.rs
@@ -54,6 +54,14 @@ impl LlvmBuildStatus {
             LlvmBuildStatus::ShouldBuild(_) => true,
         }
     }
+
+    #[cfg(test)]
+    pub fn llvm_result(&self) -> &LlvmResult {
+        match self {
+            LlvmBuildStatus::AlreadyBuilt(res) => res,
+            LlvmBuildStatus::ShouldBuild(meta) => &meta.res,
+        }
+    }
 }
 
 /// Linker flags to pass to LLVM's CMake invocation.
@@ -120,9 +128,19 @@ pub fn prebuilt_llvm_config(
     let root = "src/llvm-project/llvm";
     let out_dir = builder.llvm_out(target);
 
-    let mut llvm_config_ret_dir = builder.llvm_out(builder.config.build);
-    llvm_config_ret_dir.push("bin");
-    let build_llvm_config = llvm_config_ret_dir.join(exe("llvm-config", builder.config.build));
+    let build_llvm_config = if let Some(build_llvm_config) = builder
+        .config
+        .target_config
+        .get(&builder.config.build)
+        .and_then(|config| config.llvm_config.clone())
+    {
+        build_llvm_config
+    } else {
+        let mut llvm_config_ret_dir = builder.llvm_out(builder.config.build);
+        llvm_config_ret_dir.push("bin");
+        llvm_config_ret_dir.join(exe("llvm-config", builder.config.build))
+    };
+
     let llvm_cmake_dir = out_dir.join("lib/cmake/llvm");
     let res = LlvmResult { llvm_config: build_llvm_config, llvm_cmake_dir };
 
@@ -498,7 +516,7 @@ impl Step for Llvm {
         }
 
         // https://llvm.org/docs/HowToCrossCompileLLVM.html
-        if target != builder.config.build {
+        if !builder.is_builder_target(&target) {
             let LlvmResult { llvm_config, .. } =
                 builder.ensure(Llvm { target: builder.config.build });
             if !builder.config.dry_run() {
@@ -643,7 +661,7 @@ fn configure_cmake(
     }
     cfg.target(&target.triple).host(&builder.config.build.triple);
 
-    if target != builder.config.build {
+    if !builder.is_builder_target(&target) {
         cfg.define("CMAKE_CROSSCOMPILING", "True");
 
         if target.contains("netbsd") {
@@ -761,9 +779,15 @@ fn configure_cmake(
     }
 
     cfg.build_arg("-j").build_arg(builder.jobs().to_string());
+    // FIXME(madsmtm): Allow `cmake-rs` to select flags by itself by passing
+    // our flags via `.cflag`/`.cxxflag` instead.
+    //
+    // Needs `suppressed_compiler_flag_prefixes` to be gone, and hence
+    // https://github.com/llvm/llvm-project/issues/88780 to be fixed.
     let mut cflags: OsString = builder
-        .cflags(target, GitRepo::Llvm, CLang::C)
+        .cc_handled_clags(target, CLang::C)
         .into_iter()
+        .chain(builder.cc_unhandled_cflags(target, GitRepo::Llvm, CLang::C))
         .filter(|flag| {
             !suppressed_compiler_flag_prefixes
                 .iter()
@@ -782,8 +806,9 @@ fn configure_cmake(
     }
     cfg.define("CMAKE_C_FLAGS", cflags);
     let mut cxxflags: OsString = builder
-        .cflags(target, GitRepo::Llvm, CLang::Cxx)
+        .cc_handled_clags(target, CLang::Cxx)
         .into_iter()
+        .chain(builder.cc_unhandled_cflags(target, GitRepo::Llvm, CLang::Cxx))
         .filter(|flag| {
             !suppressed_compiler_flag_prefixes
                 .iter()
@@ -968,6 +993,7 @@ impl Step for Enzyme {
             .env("LLVM_CONFIG_REAL", &llvm_config)
             .define("LLVM_ENABLE_ASSERTIONS", "ON")
             .define("ENZYME_EXTERNAL_SHARED_LIB", "ON")
+            .define("ENZYME_RUNPASS", "ON")
             .define("LLVM_DIR", builder.llvm_out(target));
 
         cfg.build();
@@ -1085,7 +1111,7 @@ impl Step for Lld {
             .define("LLVM_CMAKE_DIR", llvm_cmake_dir)
             .define("LLVM_INCLUDE_TESTS", "OFF");
 
-        if target != builder.config.build {
+        if !builder.is_builder_target(&target) {
             // Use the host llvm-tblgen binary.
             cfg.define(
                 "LLVM_TABLEGEN_EXE",
diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs
index b0181410be1..509875a469f 100644
--- a/src/bootstrap/src/core/build_steps/test.rs
+++ b/src/bootstrap/src/core/build_steps/test.rs
@@ -2011,14 +2011,18 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the
         // Only pass correct values for these flags for the `run-make` suite as it
         // requires that a C++ compiler was configured which isn't always the case.
         if !builder.config.dry_run() && mode == "run-make" {
+            let mut cflags = builder.cc_handled_clags(target, CLang::C);
+            cflags.extend(builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::C));
+            let mut cxxflags = builder.cc_handled_clags(target, CLang::Cxx);
+            cxxflags.extend(builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::Cxx));
             cmd.arg("--cc")
                 .arg(builder.cc(target))
                 .arg("--cxx")
                 .arg(builder.cxx(target).unwrap())
                 .arg("--cflags")
-                .arg(builder.cflags(target, GitRepo::Rustc, CLang::C).join(" "))
+                .arg(cflags.join(" "))
                 .arg("--cxxflags")
-                .arg(builder.cflags(target, GitRepo::Rustc, CLang::Cxx).join(" "));
+                .arg(cxxflags.join(" "));
             copts_passed = true;
             if let Some(ar) = builder.ar(target) {
                 cmd.arg("--ar").arg(ar);
@@ -2738,7 +2742,7 @@ impl Step for Crate {
             cargo
         } else {
             // Also prepare a sysroot for the target.
-            if builder.config.build != target {
+            if !builder.is_builder_target(&target) {
                 builder.ensure(compile::Std::new(compiler, target).force_recompile(true));
                 builder.ensure(RemoteCopyLibs { compiler, target });
             }
diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs
index 793fa24991b..1291a634a6f 100644
--- a/src/bootstrap/src/core/build_steps/tool.rs
+++ b/src/bootstrap/src/core/build_steps/tool.rs
@@ -1,6 +1,7 @@
 use std::path::PathBuf;
 use std::{env, fs};
 
+use crate::core::build_steps::compile::is_lto_stage;
 use crate::core::build_steps::toolstate::ToolState;
 use crate::core::build_steps::{compile, llvm};
 use crate::core::builder;
@@ -659,14 +660,16 @@ impl Step for Rustdoc {
         );
 
         // rustdoc is performance sensitive, so apply LTO to it.
-        let lto = match builder.config.rust_lto {
-            RustcLto::Off => Some("off"),
-            RustcLto::Thin => Some("thin"),
-            RustcLto::Fat => Some("fat"),
-            RustcLto::ThinLocal => None,
-        };
-        if let Some(lto) = lto {
-            cargo.env(cargo_profile_var("LTO", &builder.config), lto);
+        if is_lto_stage(&build_compiler) {
+            let lto = match builder.config.rust_lto {
+                RustcLto::Off => Some("off"),
+                RustcLto::Thin => Some("thin"),
+                RustcLto::Fat => Some("fat"),
+                RustcLto::ThinLocal => None,
+            };
+            if let Some(lto) = lto {
+                cargo.env(cargo_profile_var("LTO", &builder.config), lto);
+            }
         }
 
         let _guard = builder.msg_tool(
diff --git a/src/bootstrap/src/core/builder/cargo.rs b/src/bootstrap/src/core/builder/cargo.rs
index 2ecab262413..205649b12bb 100644
--- a/src/bootstrap/src/core/builder/cargo.rs
+++ b/src/bootstrap/src/core/builder/cargo.rs
@@ -323,8 +323,15 @@ impl Cargo {
             let cc = ccacheify(&builder.cc(target));
             self.command.env(format!("CC_{triple_underscored}"), &cc);
 
-            let cflags = builder.cflags(target, GitRepo::Rustc, CLang::C).join(" ");
-            self.command.env(format!("CFLAGS_{triple_underscored}"), &cflags);
+            // Extend `CXXFLAGS_$TARGET` with our extra flags.
+            let env = format!("CFLAGS_{triple_underscored}");
+            let mut cflags =
+                builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::C).join(" ");
+            if let Ok(var) = std::env::var(&env) {
+                cflags.push(' ');
+                cflags.push_str(&var);
+            }
+            self.command.env(env, &cflags);
 
             if let Some(ar) = builder.ar(target) {
                 let ranlib = format!("{} s", ar.display());
@@ -335,10 +342,17 @@ impl Cargo {
 
             if let Ok(cxx) = builder.cxx(target) {
                 let cxx = ccacheify(&cxx);
-                let cxxflags = builder.cflags(target, GitRepo::Rustc, CLang::Cxx).join(" ");
-                self.command
-                    .env(format!("CXX_{triple_underscored}"), &cxx)
-                    .env(format!("CXXFLAGS_{triple_underscored}"), cxxflags);
+                self.command.env(format!("CXX_{triple_underscored}"), &cxx);
+
+                // Extend `CXXFLAGS_$TARGET` with our extra flags.
+                let env = format!("CXXFLAGS_{triple_underscored}");
+                let mut cxxflags =
+                    builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::Cxx).join(" ");
+                if let Ok(var) = std::env::var(&env) {
+                    cxxflags.push(' ');
+                    cxxflags.push_str(&var);
+                }
+                self.command.env(&env, cxxflags);
             }
         }
 
diff --git a/src/bootstrap/src/core/builder/tests.rs b/src/bootstrap/src/core/builder/tests.rs
index 74e1ed5c637..a0be474ca3e 100644
--- a/src/bootstrap/src/core/builder/tests.rs
+++ b/src/bootstrap/src/core/builder/tests.rs
@@ -1,5 +1,7 @@
 use std::thread;
 
+use llvm::prebuilt_llvm_config;
+
 use super::*;
 use crate::Flags;
 use crate::core::build_steps::doc::DocumentationFormat;
@@ -954,3 +956,128 @@ fn test_test_coverage() {
         assert_eq!(modes, expected);
     }
 }
+
+#[test]
+fn test_prebuilt_llvm_config_path_resolution() {
+    fn configure(config: &str) -> Config {
+        Config::parse_inner(
+            Flags::parse(&[
+                "build".to_string(),
+                "--dry-run".to_string(),
+                "--config=/does/not/exist".to_string(),
+            ]),
+            |&_| toml::from_str(&config),
+        )
+    }
+
+    // Removes Windows disk prefix if present
+    fn drop_win_disk_prefix_if_present(path: PathBuf) -> PathBuf {
+        let path_str = path.to_str().unwrap();
+        if let Some((_, without_prefix)) = path_str.split_once(":/") {
+            return PathBuf::from(format!("/{}", without_prefix));
+        }
+
+        path
+    }
+
+    let config = configure(
+        r#"
+            [llvm]
+            download-ci-llvm = false
+
+            [build]
+            build = "x86_64-unknown-linux-gnu"
+            host = ["arm-unknown-linux-gnueabihf"]
+            target = ["arm-unknown-linux-gnueabihf"]
+
+            [target.x86_64-unknown-linux-gnu]
+            llvm-config = "/some/path/to/llvm-config"
+
+            [target.arm-unknown-linux-gnueabihf]
+            cc = "arm-linux-gnueabihf-gcc"
+            cxx = "arm-linux-gnueabihf-g++"
+        "#,
+    );
+
+    let build = Build::new(config);
+    let builder = Builder::new(&build);
+
+    let expected = PathBuf::from("/some/path/to/llvm-config");
+
+    let actual = prebuilt_llvm_config(
+        &builder,
+        TargetSelection::from_user("arm-unknown-linux-gnueabihf"),
+        false,
+    )
+    .llvm_result()
+    .llvm_config
+    .clone();
+    let actual = drop_win_disk_prefix_if_present(actual);
+    assert_eq!(expected, actual);
+
+    let actual = prebuilt_llvm_config(&builder, builder.config.build, false)
+        .llvm_result()
+        .llvm_config
+        .clone();
+    let actual = drop_win_disk_prefix_if_present(actual);
+    assert_eq!(expected, actual);
+    assert_eq!(expected, actual);
+
+    let config = configure(
+        r#"
+            [llvm]
+            download-ci-llvm = false
+        "#,
+    );
+
+    let build = Build::new(config.clone());
+    let builder = Builder::new(&build);
+
+    let actual = prebuilt_llvm_config(&builder, builder.config.build, false)
+        .llvm_result()
+        .llvm_config
+        .clone();
+    let expected = builder
+        .out
+        .join(builder.config.build)
+        .join("llvm/bin")
+        .join(exe("llvm-config", builder.config.build));
+    assert_eq!(expected, actual);
+
+    let config = configure(
+        r#"
+            [llvm]
+            download-ci-llvm = true
+        "#,
+    );
+
+    let build = Build::new(config.clone());
+    let builder = Builder::new(&build);
+
+    let actual = prebuilt_llvm_config(&builder, builder.config.build, false)
+        .llvm_result()
+        .llvm_config
+        .clone();
+    let expected = builder
+        .out
+        .join(builder.config.build)
+        .join("ci-llvm/bin")
+        .join(exe("llvm-config", builder.config.build));
+    assert_eq!(expected, actual);
+}
+
+#[test]
+fn test_is_builder_target() {
+    let target1 = TargetSelection::from_user(TEST_TRIPLE_1);
+    let target2 = TargetSelection::from_user(TEST_TRIPLE_2);
+
+    for (target1, target2) in [(target1, target2), (target2, target1)] {
+        let mut config = configure("build", &[], &[]);
+        config.build = target1;
+        let build = Build::new(config);
+        let builder = Builder::new(&build);
+
+        assert!(builder.is_builder_target(&target1));
+        assert!(!builder.is_builder_target(&target2));
+    }
+}
diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs
index 6c8cda18548..9e4a0816e0d 100644
--- a/src/bootstrap/src/core/sanity.rs
+++ b/src/bootstrap/src/core/sanity.rs
@@ -329,7 +329,7 @@ than building it.
         if target.contains("musl") && !target.contains("unikraft") {
             // If this is a native target (host is also musl) and no musl-root is given,
             // fall back to the system toolchain in /usr before giving up
-            if build.musl_root(*target).is_none() && build.config.build == *target {
+            if build.musl_root(*target).is_none() && build.is_builder_target(target) {
                 let target = build.config.target_config.entry(*target).or_default();
                 target.musl_root = Some("/usr".into());
             }
diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
index bc146eda1d5..665ab117002 100644
--- a/src/bootstrap/src/lib.rs
+++ b/src/bootstrap/src/lib.rs
@@ -249,6 +249,7 @@ impl Mode {
     }
 }
 
+#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
 pub enum CLang {
     C,
     Cxx,
@@ -738,7 +739,7 @@ impl Build {
     /// Note that if LLVM is configured externally then the directory returned
     /// will likely be empty.
     fn llvm_out(&self, target: TargetSelection) -> PathBuf {
-        if self.config.llvm_from_ci && self.config.build == target {
+        if self.config.llvm_from_ci && self.is_builder_target(&target) {
             self.config.ci_llvm_root()
         } else {
             self.out.join(target).join("llvm")
@@ -788,7 +789,7 @@ impl Build {
     fn is_system_llvm(&self, target: TargetSelection) -> bool {
         match self.config.target_config.get(&target) {
             Some(Target { llvm_config: Some(_), .. }) => {
-                let ci_llvm = self.config.llvm_from_ci && target == self.config.build;
+                let ci_llvm = self.config.llvm_from_ci && self.is_builder_target(&target);
                 !ci_llvm
             }
             // We're building from the in-tree src/llvm-project sources.
@@ -1178,9 +1179,9 @@ Executed at: {executed_at}"#,
         self.cc.borrow()[&target].path().into()
     }
 
-    /// Returns a list of flags to pass to the C compiler for the target
-    /// specified.
-    fn cflags(&self, target: TargetSelection, which: GitRepo, c: CLang) -> Vec<String> {
+    /// Returns C flags that `cc-rs` thinks should be enabled for the
+    /// specified target by default.
+    fn cc_handled_clags(&self, target: TargetSelection, c: CLang) -> Vec<String> {
         if self.config.dry_run() {
             return Vec::new();
         }
@@ -1189,14 +1190,23 @@ Executed at: {executed_at}"#,
             CLang::Cxx => self.cxx.borrow()[&target].clone(),
         };
 
-        // Filter out -O and /O (the optimization flags) that we picked up from
-        // cc-rs because the build scripts will determine that for themselves.
-        let mut base = base
-            .args()
+        // Filter out -O and /O (the optimization flags) that we picked up
+        // from cc-rs, that's up to the caller to figure out.
+        base.args()
             .iter()
             .map(|s| s.to_string_lossy().into_owned())
             .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
-            .collect::<Vec<String>>();
+            .collect::<Vec<String>>()
+    }
+
+    /// Returns extra C flags that `cc-rs` doesn't handle.
+    fn cc_unhandled_cflags(
+        &self,
+        target: TargetSelection,
+        which: GitRepo,
+        c: CLang,
+    ) -> Vec<String> {
+        let mut base = Vec::new();
 
         // If we're compiling C++ on macOS then we add a flag indicating that
         // we want libc++ (more filled out than libstdc++), ensuring that
@@ -1264,7 +1274,7 @@ Executed at: {executed_at}"#,
             // need to use CXX compiler as linker to resolve the exception functions
             // that are only existed in CXX libraries
             Some(self.cxx.borrow()[&target].path().into())
-        } else if target != self.config.build
+        } else if !self.is_builder_target(&target)
             && helpers::use_host_linker(target)
             && !target.is_msvc()
         {
@@ -1915,6 +1925,11 @@ to download LLVM rather than building it.
         stream.reset().unwrap();
         result
     }
+
+    /// Checks if the given target is the same as the builder target.
+    fn is_builder_target(&self, target: &TargetSelection) -> bool {
+        &self.config.build == target
+    }
 }
 
 #[cfg(unix)]
diff --git a/src/bootstrap/src/utils/cc_detect.rs b/src/bootstrap/src/utils/cc_detect.rs
index 4aec554b432..f6afd50afce 100644
--- a/src/bootstrap/src/utils/cc_detect.rs
+++ b/src/bootstrap/src/utils/cc_detect.rs
@@ -142,7 +142,8 @@ pub fn find_target(build: &Build, target: TargetSelection) {
     };
 
     build.cc.borrow_mut().insert(target, compiler.clone());
-    let cflags = build.cflags(target, GitRepo::Rustc, CLang::C);
+    let mut cflags = build.cc_handled_clags(target, CLang::C);
+    cflags.extend(build.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::C));
 
     // If we use llvm-libunwind, we will need a C++ compiler as well for all targets
     // We'll need one anyways if the target triple is also a host triple
@@ -168,7 +169,8 @@ pub fn find_target(build: &Build, target: TargetSelection) {
     build.verbose(|| println!("CC_{} = {:?}", target.triple, build.cc(target)));
     build.verbose(|| println!("CFLAGS_{} = {cflags:?}", target.triple));
     if let Ok(cxx) = build.cxx(target) {
-        let cxxflags = build.cflags(target, GitRepo::Rustc, CLang::Cxx);
+        let mut cxxflags = build.cc_handled_clags(target, CLang::Cxx);
+        cxxflags.extend(build.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::Cxx));
         build.verbose(|| println!("CXX_{} = {cxx:?}", target.triple));
         build.verbose(|| println!("CXXFLAGS_{} = {cxxflags:?}", target.triple));
     }
diff --git a/src/ci/docker/host-x86_64/dist-loongarch64-linux/Dockerfile b/src/ci/docker/host-x86_64/dist-loongarch64-linux/Dockerfile
index 71eb72686b0..e3f23149284 100644
--- a/src/ci/docker/host-x86_64/dist-loongarch64-linux/Dockerfile
+++ b/src/ci/docker/host-x86_64/dist-loongarch64-linux/Dockerfile
@@ -3,8 +3,8 @@ FROM ubuntu:22.04
 COPY scripts/cross-apt-packages.sh /scripts/
 RUN sh /scripts/cross-apt-packages.sh
 
-COPY scripts/crosstool-ng-git.sh /scripts/
-RUN sh /scripts/crosstool-ng-git.sh
+COPY scripts/crosstool-ng.sh /scripts/
+RUN sh /scripts/crosstool-ng.sh
 
 COPY scripts/rustbuild-setup.sh /scripts/
 RUN sh /scripts/rustbuild-setup.sh
diff --git a/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile b/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile
index 5081f25e567..2c33b5526ee 100644
--- a/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile
+++ b/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile
@@ -3,8 +3,8 @@ FROM ubuntu:22.04
 COPY scripts/cross-apt-packages.sh /scripts/
 RUN sh /scripts/cross-apt-packages.sh
 
-COPY scripts/crosstool-ng-git.sh /scripts/
-RUN sh /scripts/crosstool-ng-git.sh
+COPY scripts/crosstool-ng.sh /scripts/
+RUN sh /scripts/crosstool-ng.sh
 
 COPY scripts/rustbuild-setup.sh /scripts/
 RUN sh /scripts/rustbuild-setup.sh
diff --git a/src/ci/docker/host-x86_64/dist-powerpc64le-linux/Dockerfile b/src/ci/docker/host-x86_64/dist-powerpc64le-linux/Dockerfile
index 9d3be51d037..cb20f43cff7 100644
--- a/src/ci/docker/host-x86_64/dist-powerpc64le-linux/Dockerfile
+++ b/src/ci/docker/host-x86_64/dist-powerpc64le-linux/Dockerfile
@@ -3,8 +3,8 @@ FROM ubuntu:22.04
 COPY scripts/cross-apt-packages.sh /scripts/
 RUN sh /scripts/cross-apt-packages.sh
 
-COPY scripts/crosstool-ng-git.sh /scripts/
-RUN sh /scripts/crosstool-ng-git.sh
+COPY scripts/crosstool-ng.sh /scripts/
+RUN sh /scripts/crosstool-ng.sh
 
 COPY scripts/rustbuild-setup.sh /scripts/
 RUN sh /scripts/rustbuild-setup.sh
diff --git a/src/ci/docker/scripts/crosstool-ng-git.sh b/src/ci/docker/scripts/crosstool-ng-git.sh
deleted file mode 100644
index e86810ae613..00000000000
--- a/src/ci/docker/scripts/crosstool-ng-git.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-set -ex
-
-URL=https://github.com/crosstool-ng/crosstool-ng
-REV=ed12fa68402f58e171a6f79500f73f4781fdc9e5
-
-mkdir crosstool-ng
-cd crosstool-ng
-git init
-git fetch --depth=1 ${URL} ${REV}
-git reset --hard FETCH_HEAD
-./bootstrap
-./configure --prefix=/usr/local
-make -j$(nproc)
-make install
-cd ..
-rm -rf crosstool-ng
diff --git a/src/ci/docker/scripts/crosstool-ng.sh b/src/ci/docker/scripts/crosstool-ng.sh
index c3ee19b8d2c..eee912b0d75 100644
--- a/src/ci/docker/scripts/crosstool-ng.sh
+++ b/src/ci/docker/scripts/crosstool-ng.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 set -ex
 
-CT_NG=1.26.0
+CT_NG=1.27.0
 
 url="https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-$CT_NG.tar.gz"
 curl -Lf $url | tar xzf -
diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml
index 341d82599fd..c08104e796b 100644
--- a/src/ci/github-actions/jobs.yml
+++ b/src/ci/github-actions/jobs.yml
@@ -12,15 +12,15 @@ runners:
 
   # Large runner used mainly for its bigger disk capacity
   - &job-linux-4c-largedisk
-    os: ubuntu-22.04-4core-16gb
+    os: ubuntu-24.04-4core-16gb
     <<: *base-job
 
   - &job-linux-8c
-    os: ubuntu-22.04-8core-32gb
+    os: ubuntu-24.04-8core-32gb
     <<: *base-job
 
   - &job-linux-16c
-    os: ubuntu-22.04-16core-64gb
+    os: ubuntu-24.04-16core-64gb
     <<: *base-job
 
   - &job-macos-xl
@@ -59,6 +59,7 @@ envs:
     SCRIPT: ./x.py --stage 2 test --skip tests/ui --skip tests/rustdoc -- --exact
     RUST_CONFIGURE_ARGS: --build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc
     RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
+    # Ensure that host tooling is tested on our minimum supported macOS version.
     MACOSX_DEPLOYMENT_TARGET: 10.12
     MACOSX_STD_DEPLOYMENT_TARGET: 10.12
     SELECT_XCODE: /Applications/Xcode_15.2.app
@@ -370,7 +371,9 @@ auto:
       SCRIPT: ./x.py dist bootstrap --include-default-paths --host=x86_64-apple-darwin --target=x86_64-apple-darwin
       RUST_CONFIGURE_ARGS: --enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set rust.lto=thin --set rust.codegen-units=1
       RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
+      # Ensure that host tooling is built to support our minimum support macOS version.
       MACOSX_DEPLOYMENT_TARGET: 10.12
+      MACOSX_STD_DEPLOYMENT_TARGET: 10.12
       SELECT_XCODE: /Applications/Xcode_15.2.app
       NO_LLVM_ASSERTIONS: 1
       NO_DEBUG_ASSERTIONS: 1
@@ -386,7 +389,10 @@ auto:
       # https://github.com/rust-lang/rust/issues/129069
       RUST_CONFIGURE_ARGS: --enable-sanitizers --enable-profiler --set rust.jemalloc --set target.aarch64-apple-ios-macabi.sanitizers=false --set target.x86_64-apple-ios-macabi.sanitizers=false
       RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
+      # Ensure that host tooling is built to support our minimum support macOS version.
+      # FIXME(madsmtm): This might be redundant, as we're not building host tooling here (?)
       MACOSX_DEPLOYMENT_TARGET: 10.12
+      MACOSX_STD_DEPLOYMENT_TARGET: 10.12
       SELECT_XCODE: /Applications/Xcode_15.2.app
       NO_LLVM_ASSERTIONS: 1
       NO_DEBUG_ASSERTIONS: 1
@@ -404,7 +410,6 @@ auto:
       <<: *env-x86_64-apple-tests
     <<: *job-macos-xl
 
-  # This target only needs to support 11.0 and up as nothing else supports the hardware
   - name: dist-aarch64-apple
     env:
       SCRIPT: ./x.py dist bootstrap --include-default-paths --host=aarch64-apple-darwin --target=aarch64-apple-darwin
@@ -419,6 +424,8 @@ auto:
       RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
       SELECT_XCODE: /Applications/Xcode_15.4.app
       USE_XCODE_CLANG: 1
+      # Aarch64 tooling only needs to support macOS 11.0 and up as nothing else
+      # supports the hardware.
       MACOSX_DEPLOYMENT_TARGET: 11.0
       MACOSX_STD_DEPLOYMENT_TARGET: 11.0
       NO_LLVM_ASSERTIONS: 1
@@ -428,7 +435,6 @@ auto:
       CODEGEN_BACKENDS: llvm,cranelift
     <<: *job-macos-m1
 
-  # This target only needs to support 11.0 and up as nothing else supports the hardware
   - name: aarch64-apple
     env:
       SCRIPT: ./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin
@@ -439,6 +445,8 @@ auto:
       RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
       SELECT_XCODE: /Applications/Xcode_15.4.app
       USE_XCODE_CLANG: 1
+      # Aarch64 tooling only needs to support macOS 11.0 and up as nothing else
+      # supports the hardware, so only need to test it there.
       MACOSX_DEPLOYMENT_TARGET: 11.0
       MACOSX_STD_DEPLOYMENT_TARGET: 11.0
       NO_LLVM_ASSERTIONS: 1
@@ -452,26 +460,26 @@ auto:
 
   - name: x86_64-msvc-1
     env:
-      RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler
+      RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-sanitizers --enable-profiler
       SCRIPT: make ci-msvc-py
     <<: *job-windows-25
 
   - name: x86_64-msvc-2
     env:
-      RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler
+      RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-sanitizers --enable-profiler
       SCRIPT: make ci-msvc-ps1
     <<: *job-windows-25
 
   # i686-msvc is split into two jobs to run tests in parallel.
   - name: i686-msvc-1
     env:
-      RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc
+      RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc  --enable-sanitizers
       SCRIPT: make ci-msvc-py
     <<: *job-windows
 
   - name: i686-msvc-2
     env:
-      RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc
+      RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc --enable-sanitizers
       SCRIPT: make ci-msvc-ps1
     <<: *job-windows
 
diff --git a/src/doc/edition-guide b/src/doc/edition-guide
-Subproject f56aecc3b036dff16404b525a83b00f911b9bbe
+Subproject 8dbdda7cae4fa030f09f8f5b63994d4d1dde74b
diff --git a/src/doc/embedded-book b/src/doc/embedded-book
-Subproject ddbf1b4e2858fedb71b7c42eb15c4576517dc12
+Subproject 0b8219ac23a3e09464e4e0166c768cf1c4bba0d
diff --git a/src/doc/reference b/src/doc/reference
-Subproject 4249fb411dd27f945e2881eb0378044b94cee06
+Subproject de2d5289e45506b11dd652bef4f99de64be70e1
diff --git a/src/doc/rust-by-example b/src/doc/rust-by-example
-Subproject 743766929f1e53e72fab74394ae259bbfb4a761
+Subproject 66543bbc5b7dbd4e679092c07ae06ba6c73fd91
diff --git a/src/doc/rustc/src/check-cfg.md b/src/doc/rustc/src/check-cfg.md
index c62ca9fd9ad..00add2651ae 100644
--- a/src/doc/rustc/src/check-cfg.md
+++ b/src/doc/rustc/src/check-cfg.md
@@ -135,7 +135,7 @@ As of `2025-01-02T`, the list of known names is as follows:
  - `windows`
 
 > Starting with 1.85.0, the `test` cfg is consider to be a "userspace" config
-> despite being also set by `rustc` and should be managed by the build-system it-self.
+> despite being also set by `rustc` and should be managed by the build system itself.
 
 Like with `values(any())`, well known names checking can be disabled by passing `cfg(any())`
 as argument to `--check-cfg`.
diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md
index bb89d97a798..28bb15952d0 100644
--- a/src/doc/rustc/src/platform-support.md
+++ b/src/doc/rustc/src/platform-support.md
@@ -165,11 +165,11 @@ target | std | notes
 `i586-pc-windows-msvc` | * | 32-bit Windows (original Pentium) [^x86_32-floats-x87]
 `i586-unknown-linux-gnu` | ✓ | 32-bit Linux (kernel 3.2, glibc 2.17, original Pentium) [^x86_32-floats-x87]
 `i586-unknown-linux-musl` | ✓ | 32-bit Linux (musl 1.2.3, original Pentium) [^x86_32-floats-x87]
-[`i686-linux-android`](platform-support/android.md) | ✓ | 32-bit x86 Android ([PentiumPro with SSE](https://developer.android.com/ndk/guides/abis.html#x86)) [^x86_32-floats-return-ABI]
+[`i686-linux-android`](platform-support/android.md) | ✓ | 32-bit x86 Android ([Pentium 4 plus various extensions](https://developer.android.com/ndk/guides/abis.html#x86)) [^x86_32-floats-return-ABI]
 [`i686-pc-windows-gnullvm`](platform-support/pc-windows-gnullvm.md) | ✓ | 32-bit x86 MinGW (Windows 10+, Pentium 4), LLVM ABI [^x86_32-floats-return-ABI]
 [`i686-unknown-freebsd`](platform-support/freebsd.md) | ✓ | 32-bit x86 FreeBSD (Pentium 4) [^x86_32-floats-return-ABI]
 `i686-unknown-linux-musl` | ✓ | 32-bit Linux with musl 1.2.3 (Pentium 4) [^x86_32-floats-return-ABI]
-[`i686-unknown-uefi`](platform-support/unknown-uefi.md) | ? (Pentium 4, softfloat) | 32-bit UEFI
+[`i686-unknown-uefi`](platform-support/unknown-uefi.md) | ? | 32-bit UEFI (Pentium 4, softfloat)
 [`loongarch64-unknown-none`](platform-support/loongarch-none.md) | * | LoongArch64 Bare-metal (LP64D ABI)
 [`loongarch64-unknown-none-softfloat`](platform-support/loongarch-none.md) | * | LoongArch64 Bare-metal (LP64S ABI)
 [`nvptx64-nvidia-cuda`](platform-support/nvptx64-nvidia-cuda.md) | * | --emit=asm generates PTX code that [runs on NVIDIA GPUs]
@@ -311,12 +311,12 @@ target | std | host | notes
 [`i386-apple-ios`](platform-support/apple-ios.md) | ✓ |  | 32-bit x86 iOS (Penryn) [^x86_32-floats-return-ABI]
 [`i586-pc-nto-qnx700`](platform-support/nto-qnx.md) | * |  | 32-bit x86 QNX Neutrino 7.0 RTOS (Pentium 4) [^x86_32-floats-return-ABI]
 [`i586-unknown-netbsd`](platform-support/netbsd.md) | ✓ |  | 32-bit x86 (original Pentium) [^x86_32-floats-x87]
+[`i586-unknown-redox`](platform-support/redox.md) | ✓ |  | 32-bit x86 Redox OS (PentiumPro) [^x86_32-floats-x87]
 [`i686-apple-darwin`](platform-support/apple-darwin.md) | ✓ | ✓ | 32-bit macOS (10.12+, Sierra+, Penryn) [^x86_32-floats-return-ABI]
 `i686-unknown-haiku` | ✓ | ✓ | 32-bit Haiku (Pentium 4) [^x86_32-floats-return-ABI]
-[`i686-unknown-hurd-gnu`](platform-support/hurd.md) | ✓ | ✓ | 32-bit GNU/Hurd (Pentium 4) [^x86_32-floats-x87]
+[`i686-unknown-hurd-gnu`](platform-support/hurd.md) | ✓ | ✓ | 32-bit GNU/Hurd (Pentium 4) [^x86_32-floats-return-ABI]
 [`i686-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | NetBSD/i386 (Pentium 4) [^x86_32-floats-return-ABI]
 [`i686-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 32-bit OpenBSD (Pentium 4) [^x86_32-floats-return-ABI]
-[`i686-unknown-redox`](platform-support/redox.md) | ✓ |  | i686 Redox OS (PentiumPro) [^x86_32-floats-x87]
 `i686-uwp-windows-gnu` | ✓ |  | [^x86_32-floats-return-ABI]
 [`i686-uwp-windows-msvc`](platform-support/uwp-windows-msvc.md) | ✓ |  | [^x86_32-floats-return-ABI]
 [`i686-win7-windows-gnu`](platform-support/win7-windows-gnu.md) | ✓ |   | 32-bit Windows 7 support [^x86_32-floats-return-ABI]
diff --git a/src/doc/rustc/src/platform-support/redox.md b/src/doc/rustc/src/platform-support/redox.md
index 1b3321956ef..2bba92d504c 100644
--- a/src/doc/rustc/src/platform-support/redox.md
+++ b/src/doc/rustc/src/platform-support/redox.md
@@ -9,7 +9,7 @@ Target triplets available so far:
 
 - `x86_64-unknown-redox` (tier 2)
 - `aarch64-unknown-redox` (tier 3)
-- `i686-unknown-redox` (tier 3)
+- `i586-unknown-redox` (tier 3)
 
 ## Target maintainers
 
@@ -36,7 +36,7 @@ target = [
     "<HOST_TARGET>",
     "x86_64-unknown-redox",
     "aarch64-unknown-redox",
-    "i686-unknown-redox",
+    "i586-unknown-redox",
 ]
 ```
 
diff --git a/src/librustdoc/passes/strip_aliased_non_local.rs b/src/librustdoc/passes/strip_aliased_non_local.rs
index fa7737bc143..7f5c7da3634 100644
--- a/src/librustdoc/passes/strip_aliased_non_local.rs
+++ b/src/librustdoc/passes/strip_aliased_non_local.rs
@@ -26,7 +26,7 @@ impl DocFolder for AliasedNonLocalStripper<'_> {
         Some(match i.kind {
             clean::TypeAliasItem(..) => {
                 let mut stripper = NonLocalStripper { tcx: self.tcx };
-                // don't call `fold_item` as that could strip the type-alias it-self
+                // don't call `fold_item` as that could strip the type alias itself
                 // which we don't want to strip out
                 stripper.fold_item_recur(i)
             }
diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
index 27b8c038ad2..cd5ca74f8ad 100644
--- a/src/tools/build-manifest/src/main.rs
+++ b/src/tools/build-manifest/src/main.rs
@@ -100,6 +100,7 @@ static TARGETS: &[&str] = &[
     "i586-pc-windows-msvc",
     "i586-unknown-linux-gnu",
     "i586-unknown-linux-musl",
+    "i586-unknown-redox",
     "i686-apple-darwin",
     "i686-linux-android",
     "i686-pc-windows-gnu",
@@ -108,7 +109,6 @@ static TARGETS: &[&str] = &[
     "i686-unknown-freebsd",
     "i686-unknown-linux-gnu",
     "i686-unknown-linux-musl",
-    "i686-unknown-redox",
     "i686-unknown-uefi",
     "loongarch64-unknown-linux-gnu",
     "loongarch64-unknown-linux-musl",
diff --git a/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr b/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr
index 129fab5ff97..f0d7104a57d 100644
--- a/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr
+++ b/src/tools/clippy/tests/ui-toml/dbg_macro/dbg_macro.stderr
@@ -8,8 +8,9 @@ LL |     if let Some(n) = dbg!(n.checked_sub(4)) { n } else { n }
    = help: to override `-D warnings` add `#[allow(clippy::dbg_macro)]`
 help: remove the invocation before committing it to a version control system
    |
-LL |     if let Some(n) = n.checked_sub(4) { n } else { n }
-   |                      ~~~~~~~~~~~~~~~~
+LL -     if let Some(n) = dbg!(n.checked_sub(4)) { n } else { n }
+LL +     if let Some(n) = n.checked_sub(4) { n } else { n }
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui-toml/dbg_macro/dbg_macro.rs:10:8
@@ -19,8 +20,9 @@ LL |     if dbg!(n <= 1) {
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     if n <= 1 {
-   |        ~~~~~~
+LL -     if dbg!(n <= 1) {
+LL +     if n <= 1 {
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui-toml/dbg_macro/dbg_macro.rs:11:9
@@ -30,7 +32,8 @@ LL |         dbg!(1)
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         1
+LL -         dbg!(1)
+LL +         1
    |
 
 error: the `dbg!` macro is intended as a debugging tool
@@ -41,7 +44,8 @@ LL |         dbg!(n * factorial(n - 1))
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         n * factorial(n - 1)
+LL -         dbg!(n * factorial(n - 1))
+LL +         n * factorial(n - 1)
    |
 
 error: the `dbg!` macro is intended as a debugging tool
@@ -52,8 +56,9 @@ LL |     dbg!(42);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     42;
-   |     ~~
+LL -     dbg!(42);
+LL +     42;
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui-toml/dbg_macro/dbg_macro.rs:19:14
@@ -63,8 +68,9 @@ LL |     foo(3) + dbg!(factorial(4));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     foo(3) + factorial(4);
-   |              ~~~~~~~~~~~~
+LL -     foo(3) + dbg!(factorial(4));
+LL +     foo(3) + factorial(4);
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui-toml/dbg_macro/dbg_macro.rs:20:5
@@ -74,8 +80,9 @@ LL |     dbg!(1, 2, 3, 4, 5);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     (1, 2, 3, 4, 5);
-   |     ~~~~~~~~~~~~~~~
+LL -     dbg!(1, 2, 3, 4, 5);
+LL +     (1, 2, 3, 4, 5);
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/src/tools/clippy/tests/ui-toml/doc_valid_idents_append/doc_markdown.stderr b/src/tools/clippy/tests/ui-toml/doc_valid_idents_append/doc_markdown.stderr
index a6e0ad0f804..8ba237ee75c 100644
--- a/src/tools/clippy/tests/ui-toml/doc_valid_idents_append/doc_markdown.stderr
+++ b/src/tools/clippy/tests/ui-toml/doc_valid_idents_append/doc_markdown.stderr
@@ -8,8 +8,9 @@ LL | /// TestItemThingyOfCoolness might sound cool but is not on the list and sh
    = help: to override `-D warnings` add `#[allow(clippy::doc_markdown)]`
 help: try
    |
-LL | /// `TestItemThingyOfCoolness` might sound cool but is not on the list and should be linted.
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// TestItemThingyOfCoolness might sound cool but is not on the list and should be linted.
+LL + /// `TestItemThingyOfCoolness` might sound cool but is not on the list and should be linted.
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui-toml/doc_valid_idents_replace/doc_markdown.stderr b/src/tools/clippy/tests/ui-toml/doc_valid_idents_replace/doc_markdown.stderr
index d4d8a579798..9f2d7cf54e0 100644
--- a/src/tools/clippy/tests/ui-toml/doc_valid_idents_replace/doc_markdown.stderr
+++ b/src/tools/clippy/tests/ui-toml/doc_valid_idents_replace/doc_markdown.stderr
@@ -8,8 +8,9 @@ LL | /// OAuth and LaTeX are inside Clippy's default list.
    = help: to override `-D warnings` add `#[allow(clippy::doc_markdown)]`
 help: try
    |
-LL | /// `OAuth` and LaTeX are inside Clippy's default list.
-   |     ~~~~~~~
+LL - /// OAuth and LaTeX are inside Clippy's default list.
+LL + /// `OAuth` and LaTeX are inside Clippy's default list.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui-toml/doc_valid_idents_replace/doc_markdown.rs:6:15
@@ -19,8 +20,9 @@ LL | /// OAuth and LaTeX are inside Clippy's default list.
    |
 help: try
    |
-LL | /// OAuth and `LaTeX` are inside Clippy's default list.
-   |               ~~~~~~~
+LL - /// OAuth and LaTeX are inside Clippy's default list.
+LL + /// OAuth and `LaTeX` are inside Clippy's default list.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui-toml/doc_valid_idents_replace/doc_markdown.rs:9:5
@@ -30,8 +32,9 @@ LL | /// TestItemThingyOfCoolness might sound cool but is not on the list and sh
    |
 help: try
    |
-LL | /// `TestItemThingyOfCoolness` might sound cool but is not on the list and should be linted.
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// TestItemThingyOfCoolness might sound cool but is not on the list and should be linted.
+LL + /// `TestItemThingyOfCoolness` might sound cool but is not on the list and should be linted.
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/src/tools/clippy/tests/ui-toml/enum_variant_size/enum_variant_size.stderr b/src/tools/clippy/tests/ui-toml/enum_variant_size/enum_variant_size.stderr
index 8f7ebbd9546..020b3cc7878 100644
--- a/src/tools/clippy/tests/ui-toml/enum_variant_size/enum_variant_size.stderr
+++ b/src/tools/clippy/tests/ui-toml/enum_variant_size/enum_variant_size.stderr
@@ -14,8 +14,9 @@ LL | | }
    = help: to override `-D warnings` add `#[allow(clippy::large_enum_variant)]`
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     B(Box<[u8; 501]>),
-   |       ~~~~~~~~~~~~~~
+LL -     B([u8; 501]),
+LL +     B(Box<[u8; 501]>),
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.default.stderr b/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.default.stderr
index 2d700f60759..de9f17520ff 100644
--- a/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.default.stderr
+++ b/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.default.stderr
@@ -33,8 +33,9 @@ LL |     fn hash_slice<H: Hasher>(date: &[Self], states: &mut H) {
    |
 help: consider using the default names
    |
-LL |     fn hash_slice<H: Hasher>(data: &[Self], state: &mut H) {
-   |                              ~~~~           ~~~~~
+LL -     fn hash_slice<H: Hasher>(date: &[Self], states: &mut H) {
+LL +     fn hash_slice<H: Hasher>(data: &[Self], state: &mut H) {
+   |
 
 error: renamed function parameter of trait impl
   --> tests/ui-toml/renamed_function_params/renamed_function_params.rs:80:18
diff --git a/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.extend.stderr b/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.extend.stderr
index e57554fa613..bdc4eeaad80 100644
--- a/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.extend.stderr
+++ b/src/tools/clippy/tests/ui-toml/renamed_function_params/renamed_function_params.extend.stderr
@@ -27,8 +27,9 @@ LL |     fn hash_slice<H: Hasher>(date: &[Self], states: &mut H) {
    |
 help: consider using the default names
    |
-LL |     fn hash_slice<H: Hasher>(data: &[Self], state: &mut H) {
-   |                              ~~~~           ~~~~~
+LL -     fn hash_slice<H: Hasher>(date: &[Self], states: &mut H) {
+LL +     fn hash_slice<H: Hasher>(data: &[Self], state: &mut H) {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/tools/clippy/tests/ui-toml/unwrap_used/unwrap_used.stderr b/src/tools/clippy/tests/ui-toml/unwrap_used/unwrap_used.stderr
index b58ce9b8af3..2aff276a4a1 100644
--- a/src/tools/clippy/tests/ui-toml/unwrap_used/unwrap_used.stderr
+++ b/src/tools/clippy/tests/ui-toml/unwrap_used/unwrap_used.stderr
@@ -8,8 +8,9 @@ LL |         let _ = boxed_slice.get(1).unwrap();
    = help: to override `-D warnings` add `#[allow(clippy::get_unwrap)]`
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &boxed_slice[1];
-   |                 ~~~~~~~~~~~~~~~
+LL -         let _ = boxed_slice.get(1).unwrap();
+LL +         let _ = &boxed_slice[1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:38:17
@@ -30,8 +31,9 @@ LL |         let _ = some_slice.get(0).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_slice[0];
-   |                 ~~~~~~~~~~~~~~
+LL -         let _ = some_slice.get(0).unwrap();
+LL +         let _ = &some_slice[0];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:39:17
@@ -50,8 +52,9 @@ LL |         let _ = some_vec.get(0).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_vec[0];
-   |                 ~~~~~~~~~~~~
+LL -         let _ = some_vec.get(0).unwrap();
+LL +         let _ = &some_vec[0];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:40:17
@@ -70,8 +73,9 @@ LL |         let _ = some_vecdeque.get(0).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_vecdeque[0];
-   |                 ~~~~~~~~~~~~~~~~~
+LL -         let _ = some_vecdeque.get(0).unwrap();
+LL +         let _ = &some_vecdeque[0];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:41:17
@@ -90,8 +94,9 @@ LL |         let _ = some_hashmap.get(&1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_hashmap[&1];
-   |                 ~~~~~~~~~~~~~~~~~
+LL -         let _ = some_hashmap.get(&1).unwrap();
+LL +         let _ = &some_hashmap[&1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:42:17
@@ -110,8 +115,9 @@ LL |         let _ = some_btreemap.get(&1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_btreemap[&1];
-   |                 ~~~~~~~~~~~~~~~~~~
+LL -         let _ = some_btreemap.get(&1).unwrap();
+LL +         let _ = &some_btreemap[&1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:43:17
@@ -130,8 +136,9 @@ LL |         let _: u8 = *boxed_slice.get(1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _: u8 = boxed_slice[1];
-   |                     ~~~~~~~~~~~~~~
+LL -         let _: u8 = *boxed_slice.get(1).unwrap();
+LL +         let _: u8 = boxed_slice[1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:47:22
@@ -150,8 +157,9 @@ LL |         *boxed_slice.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         boxed_slice[0] = 1;
-   |         ~~~~~~~~~~~~~~
+LL -         *boxed_slice.get_mut(0).unwrap() = 1;
+LL +         boxed_slice[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:52:10
@@ -170,8 +178,9 @@ LL |         *some_slice.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         some_slice[0] = 1;
-   |         ~~~~~~~~~~~~~
+LL -         *some_slice.get_mut(0).unwrap() = 1;
+LL +         some_slice[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:53:10
@@ -190,8 +199,9 @@ LL |         *some_vec.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         some_vec[0] = 1;
-   |         ~~~~~~~~~~~
+LL -         *some_vec.get_mut(0).unwrap() = 1;
+LL +         some_vec[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:54:10
@@ -210,8 +220,9 @@ LL |         *some_vecdeque.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         some_vecdeque[0] = 1;
-   |         ~~~~~~~~~~~~~~~~
+LL -         *some_vecdeque.get_mut(0).unwrap() = 1;
+LL +         some_vecdeque[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:55:10
@@ -230,8 +241,9 @@ LL |         let _ = some_vec.get(0..1).unwrap().to_vec();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = some_vec[0..1].to_vec();
-   |                 ~~~~~~~~~~~~~~
+LL -         let _ = some_vec.get(0..1).unwrap().to_vec();
+LL +         let _ = some_vec[0..1].to_vec();
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:67:17
@@ -250,8 +262,9 @@ LL |         let _ = some_vec.get_mut(0..1).unwrap().to_vec();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = some_vec[0..1].to_vec();
-   |                 ~~~~~~~~~~~~~~
+LL -         let _ = some_vec.get_mut(0..1).unwrap().to_vec();
+LL +         let _ = some_vec[0..1].to_vec();
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:68:17
@@ -270,8 +283,9 @@ LL |     let _ = boxed_slice.get(1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |     let _ = &boxed_slice[1];
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = boxed_slice.get(1).unwrap();
+LL +     let _ = &boxed_slice[1];
+   |
 
 error: called `.get().unwrap()` on a slice
   --> tests/ui-toml/unwrap_used/unwrap_used.rs:94:17
@@ -281,8 +295,9 @@ LL |         let _ = Box::new([0]).get(1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &Box::new([0])[1];
-   |                 ~~~~~~~~~~~~~~~~~
+LL -         let _ = Box::new([0]).get(1).unwrap();
+LL +         let _ = &Box::new([0])[1];
+   |
 
 error: aborting due to 28 previous errors
 
diff --git a/src/tools/clippy/tests/ui/assign_ops2.stderr b/src/tools/clippy/tests/ui/assign_ops2.stderr
index ddeba2b2ff8..09b101b216a 100644
--- a/src/tools/clippy/tests/ui/assign_ops2.stderr
+++ b/src/tools/clippy/tests/ui/assign_ops2.stderr
@@ -8,12 +8,14 @@ LL |     a += a + 1;
    = help: to override `-D warnings` add `#[allow(clippy::misrefactored_assign_op)]`
 help: did you mean `a = a + 1` or `a = a + a + 1`? Consider replacing it with
    |
-LL |     a += 1;
-   |     ~~~~~~
+LL -     a += a + 1;
+LL +     a += 1;
+   |
 help: or
    |
-LL |     a = a + a + 1;
-   |     ~~~~~~~~~~~~~
+LL -     a += a + 1;
+LL +     a = a + a + 1;
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:11:5
@@ -23,12 +25,14 @@ LL |     a += 1 + a;
    |
 help: did you mean `a = a + 1` or `a = a + 1 + a`? Consider replacing it with
    |
-LL |     a += 1;
-   |     ~~~~~~
+LL -     a += 1 + a;
+LL +     a += 1;
+   |
 help: or
    |
-LL |     a = a + 1 + a;
-   |     ~~~~~~~~~~~~~
+LL -     a += 1 + a;
+LL +     a = a + 1 + a;
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:13:5
@@ -38,12 +42,14 @@ LL |     a -= a - 1;
    |
 help: did you mean `a = a - 1` or `a = a - (a - 1)`? Consider replacing it with
    |
-LL |     a -= 1;
-   |     ~~~~~~
+LL -     a -= a - 1;
+LL +     a -= 1;
+   |
 help: or
    |
-LL |     a = a - (a - 1);
-   |     ~~~~~~~~~~~~~~~
+LL -     a -= a - 1;
+LL +     a = a - (a - 1);
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:15:5
@@ -53,12 +59,14 @@ LL |     a *= a * 99;
    |
 help: did you mean `a = a * 99` or `a = a * a * 99`? Consider replacing it with
    |
-LL |     a *= 99;
-   |     ~~~~~~~
+LL -     a *= a * 99;
+LL +     a *= 99;
+   |
 help: or
    |
-LL |     a = a * a * 99;
-   |     ~~~~~~~~~~~~~~
+LL -     a *= a * 99;
+LL +     a = a * a * 99;
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:17:5
@@ -68,12 +76,14 @@ LL |     a *= 42 * a;
    |
 help: did you mean `a = a * 42` or `a = a * 42 * a`? Consider replacing it with
    |
-LL |     a *= 42;
-   |     ~~~~~~~
+LL -     a *= 42 * a;
+LL +     a *= 42;
+   |
 help: or
    |
-LL |     a = a * 42 * a;
-   |     ~~~~~~~~~~~~~~
+LL -     a *= 42 * a;
+LL +     a = a * 42 * a;
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:19:5
@@ -83,12 +93,14 @@ LL |     a /= a / 2;
    |
 help: did you mean `a = a / 2` or `a = a / (a / 2)`? Consider replacing it with
    |
-LL |     a /= 2;
-   |     ~~~~~~
+LL -     a /= a / 2;
+LL +     a /= 2;
+   |
 help: or
    |
-LL |     a = a / (a / 2);
-   |     ~~~~~~~~~~~~~~~
+LL -     a /= a / 2;
+LL +     a = a / (a / 2);
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:21:5
@@ -98,12 +110,14 @@ LL |     a %= a % 5;
    |
 help: did you mean `a = a % 5` or `a = a % (a % 5)`? Consider replacing it with
    |
-LL |     a %= 5;
-   |     ~~~~~~
+LL -     a %= a % 5;
+LL +     a %= 5;
+   |
 help: or
    |
-LL |     a = a % (a % 5);
-   |     ~~~~~~~~~~~~~~~
+LL -     a %= a % 5;
+LL +     a = a % (a % 5);
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:23:5
@@ -113,12 +127,14 @@ LL |     a &= a & 1;
    |
 help: did you mean `a = a & 1` or `a = a & a & 1`? Consider replacing it with
    |
-LL |     a &= 1;
-   |     ~~~~~~
+LL -     a &= a & 1;
+LL +     a &= 1;
+   |
 help: or
    |
-LL |     a = a & a & 1;
-   |     ~~~~~~~~~~~~~
+LL -     a &= a & 1;
+LL +     a = a & a & 1;
+   |
 
 error: variable appears on both sides of an assignment operation
   --> tests/ui/assign_ops2.rs:25:5
@@ -128,12 +144,14 @@ LL |     a *= a * a;
    |
 help: did you mean `a = a * a` or `a = a * a * a`? Consider replacing it with
    |
-LL |     a *= a;
-   |     ~~~~~~
+LL -     a *= a * a;
+LL +     a *= a;
+   |
 help: or
    |
-LL |     a = a * a * a;
-   |     ~~~~~~~~~~~~~
+LL -     a *= a * a;
+LL +     a = a * a * a;
+   |
 
 error: manual implementation of an assign operation
   --> tests/ui/assign_ops2.rs:63:5
diff --git a/src/tools/clippy/tests/ui/bind_instead_of_map_multipart.stderr b/src/tools/clippy/tests/ui/bind_instead_of_map_multipart.stderr
index d271381adea..7c5882d4296 100644
--- a/src/tools/clippy/tests/ui/bind_instead_of_map_multipart.stderr
+++ b/src/tools/clippy/tests/ui/bind_instead_of_map_multipart.stderr
@@ -11,8 +11,9 @@ LL | #![deny(clippy::bind_instead_of_map)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: use `map` instead
    |
-LL |     let _ = Some("42").map(|s| if s.len() < 42 { 0 } else { s.len() });
-   |                        ~~~                       ~          ~~~~~~~
+LL -     let _ = Some("42").and_then(|s| if s.len() < 42 { Some(0) } else { Some(s.len()) });
+LL +     let _ = Some("42").map(|s| if s.len() < 42 { 0 } else { s.len() });
+   |
 
 error: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)`
   --> tests/ui/bind_instead_of_map_multipart.rs:8:13
@@ -22,8 +23,9 @@ LL |     let _ = Ok::<_, ()>("42").and_then(|s| if s.len() < 42 { Ok(0) } else {
    |
 help: use `map` instead
    |
-LL |     let _ = Ok::<_, ()>("42").map(|s| if s.len() < 42 { 0 } else { s.len() });
-   |                               ~~~                       ~          ~~~~~~~
+LL -     let _ = Ok::<_, ()>("42").and_then(|s| if s.len() < 42 { Ok(0) } else { Ok(s.len()) });
+LL +     let _ = Ok::<_, ()>("42").map(|s| if s.len() < 42 { 0 } else { s.len() });
+   |
 
 error: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)`
   --> tests/ui/bind_instead_of_map_multipart.rs:11:13
@@ -33,8 +35,9 @@ LL |     let _ = Err::<(), _>("42").or_else(|s| if s.len() < 42 { Err(s.len() +
    |
 help: use `map_err` instead
    |
-LL |     let _ = Err::<(), _>("42").map_err(|s| if s.len() < 42 { s.len() + 20 } else { s.len() });
-   |                                ~~~~~~~                       ~~~~~~~~~~~~          ~~~~~~~
+LL -     let _ = Err::<(), _>("42").or_else(|s| if s.len() < 42 { Err(s.len() + 20) } else { Err(s.len()) });
+LL +     let _ = Err::<(), _>("42").map_err(|s| if s.len() < 42 { s.len() + 20 } else { s.len() });
+   |
 
 error: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)`
   --> tests/ui/bind_instead_of_map_multipart.rs:19:5
@@ -83,8 +86,9 @@ LL |     let _ = Some("").and_then(|s| if s.len() == 20 { Some(m!()) } else { So
    |
 help: use `map` instead
    |
-LL |     let _ = Some("").map(|s| if s.len() == 20 { m!() } else { Some(20) });
-   |                      ~~~                        ~~~~          ~~~~~~~~
+LL -     let _ = Some("").and_then(|s| if s.len() == 20 { Some(m!()) } else { Some(Some(20)) });
+LL +     let _ = Some("").map(|s| if s.len() == 20 { m!() } else { Some(20) });
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/src/tools/clippy/tests/ui/borrow_deref_ref_unfixable.stderr b/src/tools/clippy/tests/ui/borrow_deref_ref_unfixable.stderr
index 7d3a5c84a82..71f43af46c2 100644
--- a/src/tools/clippy/tests/ui/borrow_deref_ref_unfixable.stderr
+++ b/src/tools/clippy/tests/ui/borrow_deref_ref_unfixable.stderr
@@ -8,12 +8,14 @@ LL |         let x: &str = &*s;
    = help: to override `-D warnings` add `#[allow(clippy::borrow_deref_ref)]`
 help: if you would like to reborrow, try removing `&*`
    |
-LL |         let x: &str = s;
-   |                       ~
+LL -         let x: &str = &*s;
+LL +         let x: &str = s;
+   |
 help: if you would like to deref, try using `&**`
    |
-LL |         let x: &str = &**s;
-   |                       ~~~~
+LL -         let x: &str = &*s;
+LL +         let x: &str = &**s;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/cast.stderr b/src/tools/clippy/tests/ui/cast.stderr
index 452482fc88e..901447c738e 100644
--- a/src/tools/clippy/tests/ui/cast.stderr
+++ b/src/tools/clippy/tests/ui/cast.stderr
@@ -81,8 +81,9 @@ LL |     1i32 as i8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i8::try_from(1i32);
-   |     ~~~~~~~~~~~~~~~~~~
+LL -     1i32 as i8;
+LL +     i8::try_from(1i32);
+   |
 
 error: casting `i32` to `u8` may truncate the value
   --> tests/ui/cast.rs:52:5
@@ -93,8 +94,9 @@ LL |     1i32 as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u8::try_from(1i32);
-   |     ~~~~~~~~~~~~~~~~~~
+LL -     1i32 as u8;
+LL +     u8::try_from(1i32);
+   |
 
 error: casting `f64` to `isize` may truncate the value
   --> tests/ui/cast.rs:54:5
@@ -127,8 +129,9 @@ LL |     1f32 as u32 as u16;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u16::try_from(1f32 as u32);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     1f32 as u32 as u16;
+LL +     u16::try_from(1f32 as u32);
+   |
 
 error: casting `f32` to `u32` may truncate the value
   --> tests/ui/cast.rs:59:5
@@ -153,8 +156,9 @@ LL |         let _x: i8 = 1i32 as _;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |         let _x: i8 = 1i32.try_into();
-   |                      ~~~~~~~~~~~~~~~
+LL -         let _x: i8 = 1i32 as _;
+LL +         let _x: i8 = 1i32.try_into();
+   |
 
 error: casting `f32` to `i32` may truncate the value
   --> tests/ui/cast.rs:66:9
@@ -228,8 +232,9 @@ LL |     1usize as i8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i8::try_from(1usize);
-   |     ~~~~~~~~~~~~~~~~~~~~
+LL -     1usize as i8;
+LL +     i8::try_from(1usize);
+   |
 
 error: casting `usize` to `i16` may truncate the value
   --> tests/ui/cast.rs:90:5
@@ -240,8 +245,9 @@ LL |     1usize as i16;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i16::try_from(1usize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1usize as i16;
+LL +     i16::try_from(1usize);
+   |
 
 error: casting `usize` to `i16` may wrap around the value on targets with 16-bit wide pointers
   --> tests/ui/cast.rs:90:5
@@ -261,8 +267,9 @@ LL |     1usize as i32;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i32::try_from(1usize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1usize as i32;
+LL +     i32::try_from(1usize);
+   |
 
 error: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers
   --> tests/ui/cast.rs:95:5
@@ -300,8 +307,9 @@ LL |     1u64 as isize;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     isize::try_from(1u64);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1u64 as isize;
+LL +     isize::try_from(1u64);
+   |
 
 error: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers
   --> tests/ui/cast.rs:111:5
@@ -360,8 +368,9 @@ LL |     (-99999999999i64).min(1) as i8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i8::try_from((-99999999999i64).min(1));
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     (-99999999999i64).min(1) as i8;
+LL +     i8::try_from((-99999999999i64).min(1));
+   |
 
 error: casting `u64` to `u8` may truncate the value
   --> tests/ui/cast.rs:222:5
@@ -372,8 +381,9 @@ LL |     999999u64.clamp(0, 256) as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u8::try_from(999999u64.clamp(0, 256));
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     999999u64.clamp(0, 256) as u8;
+LL +     u8::try_from(999999u64.clamp(0, 256));
+   |
 
 error: casting `main::E2` to `u8` may truncate the value
   --> tests/ui/cast.rs:245:21
@@ -384,8 +394,9 @@ LL |             let _ = self as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |             let _ = u8::try_from(self);
-   |                     ~~~~~~~~~~~~~~~~~~
+LL -             let _ = self as u8;
+LL +             let _ = u8::try_from(self);
+   |
 
 error: casting `main::E2::B` to `u8` will truncate the value
   --> tests/ui/cast.rs:247:21
@@ -405,8 +416,9 @@ LL |             let _ = self as i8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |             let _ = i8::try_from(self);
-   |                     ~~~~~~~~~~~~~~~~~~
+LL -             let _ = self as i8;
+LL +             let _ = i8::try_from(self);
+   |
 
 error: casting `main::E5::A` to `i8` will truncate the value
   --> tests/ui/cast.rs:291:21
@@ -423,8 +435,9 @@ LL |             let _ = self as i16;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |             let _ = i16::try_from(self);
-   |                     ~~~~~~~~~~~~~~~~~~~
+LL -             let _ = self as i16;
+LL +             let _ = i16::try_from(self);
+   |
 
 error: casting `main::E7` to `usize` may truncate the value on targets with 32-bit wide pointers
   --> tests/ui/cast.rs:327:21
@@ -435,8 +448,9 @@ LL |             let _ = self as usize;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |             let _ = usize::try_from(self);
-   |                     ~~~~~~~~~~~~~~~~~~~~~
+LL -             let _ = self as usize;
+LL +             let _ = usize::try_from(self);
+   |
 
 error: casting `main::E10` to `u16` may truncate the value
   --> tests/ui/cast.rs:374:21
@@ -447,8 +461,9 @@ LL |             let _ = self as u16;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |             let _ = u16::try_from(self);
-   |                     ~~~~~~~~~~~~~~~~~~~
+LL -             let _ = self as u16;
+LL +             let _ = u16::try_from(self);
+   |
 
 error: casting `u32` to `u8` may truncate the value
   --> tests/ui/cast.rs:385:13
@@ -459,8 +474,9 @@ LL |     let c = (q >> 16) as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     let c = u8::try_from(q >> 16);
-   |             ~~~~~~~~~~~~~~~~~~~~~
+LL -     let c = (q >> 16) as u8;
+LL +     let c = u8::try_from(q >> 16);
+   |
 
 error: casting `u32` to `u8` may truncate the value
   --> tests/ui/cast.rs:389:13
@@ -471,8 +487,9 @@ LL |     let c = (q / 1000) as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     let c = u8::try_from(q / 1000);
-   |             ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let c = (q / 1000) as u8;
+LL +     let c = u8::try_from(q / 1000);
+   |
 
 error: casting `i32` to `u32` may lose the sign of the value
   --> tests/ui/cast.rs:401:9
@@ -674,8 +691,9 @@ LL |     m!();
    = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |             let _ = u8::try_from(u32::MAX); // cast_possible_truncation
-   |                     ~~~~~~~~~~~~~~~~~~~~~~
+LL -             let _ = u32::MAX as u8; // cast_possible_truncation
+LL +             let _ = u8::try_from(u32::MAX); // cast_possible_truncation
+   |
 
 error: casting `f64` to `f32` may truncate the value
   --> tests/ui/cast.rs:474:21
@@ -698,7 +716,8 @@ LL |     bar.unwrap().unwrap() as usize
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     usize::try_from(bar.unwrap().unwrap())
+LL -     bar.unwrap().unwrap() as usize
+LL +     usize::try_from(bar.unwrap().unwrap())
    |
 
 error: casting `i64` to `usize` may lose the sign of the value
@@ -716,8 +735,9 @@ LL |     (256 & 999999u64) as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u8::try_from(256 & 999999u64);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     (256 & 999999u64) as u8;
+LL +     u8::try_from(256 & 999999u64);
+   |
 
 error: casting `u64` to `u8` may truncate the value
   --> tests/ui/cast.rs:500:5
@@ -728,8 +748,9 @@ LL |     (255 % 999999u64) as u8;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u8::try_from(255 % 999999u64);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     (255 % 999999u64) as u8;
+LL +     u8::try_from(255 % 999999u64);
+   |
 
 error: aborting due to 92 previous errors
 
diff --git a/src/tools/clippy/tests/ui/cast_lossless_bool.stderr b/src/tools/clippy/tests/ui/cast_lossless_bool.stderr
index 82d6b2e4b8e..68992271762 100644
--- a/src/tools/clippy/tests/ui/cast_lossless_bool.stderr
+++ b/src/tools/clippy/tests/ui/cast_lossless_bool.stderr
@@ -9,8 +9,9 @@ LL |     let _ = true as u8;
    = help: to override `-D warnings` add `#[allow(clippy::cast_lossless)]`
 help: use `u8::from` instead
    |
-LL |     let _ = u8::from(true);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = true as u8;
+LL +     let _ = u8::from(true);
+   |
 
 error: casts from `bool` to `u16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:9:13
@@ -21,8 +22,9 @@ LL |     let _ = true as u16;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u16::from` instead
    |
-LL |     let _ = u16::from(true);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = true as u16;
+LL +     let _ = u16::from(true);
+   |
 
 error: casts from `bool` to `u32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:10:13
@@ -33,8 +35,9 @@ LL |     let _ = true as u32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u32::from` instead
    |
-LL |     let _ = u32::from(true);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = true as u32;
+LL +     let _ = u32::from(true);
+   |
 
 error: casts from `bool` to `u64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:11:13
@@ -45,8 +48,9 @@ LL |     let _ = true as u64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u64::from` instead
    |
-LL |     let _ = u64::from(true);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = true as u64;
+LL +     let _ = u64::from(true);
+   |
 
 error: casts from `bool` to `u128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:12:13
@@ -57,8 +61,9 @@ LL |     let _ = true as u128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u128::from` instead
    |
-LL |     let _ = u128::from(true);
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = true as u128;
+LL +     let _ = u128::from(true);
+   |
 
 error: casts from `bool` to `usize` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:13:13
@@ -69,8 +74,9 @@ LL |     let _ = true as usize;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `usize::from` instead
    |
-LL |     let _ = usize::from(true);
-   |             ~~~~~~~~~~~~~~~~~
+LL -     let _ = true as usize;
+LL +     let _ = usize::from(true);
+   |
 
 error: casts from `bool` to `i8` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:15:13
@@ -81,8 +87,9 @@ LL |     let _ = true as i8;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i8::from` instead
    |
-LL |     let _ = i8::from(true);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = true as i8;
+LL +     let _ = i8::from(true);
+   |
 
 error: casts from `bool` to `i16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:16:13
@@ -93,8 +100,9 @@ LL |     let _ = true as i16;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i16::from` instead
    |
-LL |     let _ = i16::from(true);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = true as i16;
+LL +     let _ = i16::from(true);
+   |
 
 error: casts from `bool` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:17:13
@@ -105,8 +113,9 @@ LL |     let _ = true as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     let _ = i32::from(true);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = true as i32;
+LL +     let _ = i32::from(true);
+   |
 
 error: casts from `bool` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:18:13
@@ -117,8 +126,9 @@ LL |     let _ = true as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     let _ = i64::from(true);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = true as i64;
+LL +     let _ = i64::from(true);
+   |
 
 error: casts from `bool` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:19:13
@@ -129,8 +139,9 @@ LL |     let _ = true as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     let _ = i128::from(true);
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = true as i128;
+LL +     let _ = i128::from(true);
+   |
 
 error: casts from `bool` to `isize` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:20:13
@@ -141,8 +152,9 @@ LL |     let _ = true as isize;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `isize::from` instead
    |
-LL |     let _ = isize::from(true);
-   |             ~~~~~~~~~~~~~~~~~
+LL -     let _ = true as isize;
+LL +     let _ = isize::from(true);
+   |
 
 error: casts from `bool` to `u16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:23:13
@@ -153,8 +165,9 @@ LL |     let _ = (true | false) as u16;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u16::from` instead
    |
-LL |     let _ = u16::from(true | false);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = (true | false) as u16;
+LL +     let _ = u16::from(true | false);
+   |
 
 error: casts from `bool` to `u8` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:25:13
@@ -165,8 +178,9 @@ LL |     let _ = true as U8;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `U8::from` instead
    |
-LL |     let _ = U8::from(true);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = true as U8;
+LL +     let _ = U8::from(true);
+   |
 
 error: casts from `bool` to `u8` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_bool.rs:53:13
@@ -177,8 +191,9 @@ LL |     let _ = true as u8;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u8::from` instead
    |
-LL |     let _ = u8::from(true);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = true as u8;
+LL +     let _ = u8::from(true);
+   |
 
 error: aborting due to 15 previous errors
 
diff --git a/src/tools/clippy/tests/ui/cast_lossless_float.stderr b/src/tools/clippy/tests/ui/cast_lossless_float.stderr
index b36f8bcecf5..3f405e3f402 100644
--- a/src/tools/clippy/tests/ui/cast_lossless_float.stderr
+++ b/src/tools/clippy/tests/ui/cast_lossless_float.stderr
@@ -9,8 +9,9 @@ LL |     let _ = x0 as f32;
    = help: to override `-D warnings` add `#[allow(clippy::cast_lossless)]`
 help: use `f32::from` instead
    |
-LL |     let _ = f32::from(x0);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x0 as f32;
+LL +     let _ = f32::from(x0);
+   |
 
 error: casts from `i8` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:13:13
@@ -21,8 +22,9 @@ LL |     let _ = x0 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(x0);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x0 as f64;
+LL +     let _ = f64::from(x0);
+   |
 
 error: casts from `i8` to `f32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:14:13
@@ -33,8 +35,9 @@ LL |     let _ = x0 as F32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `F32::from` instead
    |
-LL |     let _ = F32::from(x0);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x0 as F32;
+LL +     let _ = F32::from(x0);
+   |
 
 error: casts from `i8` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:15:13
@@ -45,8 +48,9 @@ LL |     let _ = x0 as F64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `F64::from` instead
    |
-LL |     let _ = F64::from(x0);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x0 as F64;
+LL +     let _ = F64::from(x0);
+   |
 
 error: casts from `u8` to `f32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:17:13
@@ -57,8 +61,9 @@ LL |     let _ = x1 as f32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f32::from` instead
    |
-LL |     let _ = f32::from(x1);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x1 as f32;
+LL +     let _ = f32::from(x1);
+   |
 
 error: casts from `u8` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:18:13
@@ -69,8 +74,9 @@ LL |     let _ = x1 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(x1);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x1 as f64;
+LL +     let _ = f64::from(x1);
+   |
 
 error: casts from `i16` to `f32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:20:13
@@ -81,8 +87,9 @@ LL |     let _ = x2 as f32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f32::from` instead
    |
-LL |     let _ = f32::from(x2);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x2 as f32;
+LL +     let _ = f32::from(x2);
+   |
 
 error: casts from `i16` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:21:13
@@ -93,8 +100,9 @@ LL |     let _ = x2 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(x2);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x2 as f64;
+LL +     let _ = f64::from(x2);
+   |
 
 error: casts from `u16` to `f32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:23:13
@@ -105,8 +113,9 @@ LL |     let _ = x3 as f32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f32::from` instead
    |
-LL |     let _ = f32::from(x3);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x3 as f32;
+LL +     let _ = f32::from(x3);
+   |
 
 error: casts from `u16` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:24:13
@@ -117,8 +126,9 @@ LL |     let _ = x3 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(x3);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x3 as f64;
+LL +     let _ = f64::from(x3);
+   |
 
 error: casts from `i32` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:26:13
@@ -129,8 +139,9 @@ LL |     let _ = x4 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(x4);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x4 as f64;
+LL +     let _ = f64::from(x4);
+   |
 
 error: casts from `u32` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:28:13
@@ -141,8 +152,9 @@ LL |     let _ = x5 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(x5);
-   |             ~~~~~~~~~~~~~
+LL -     let _ = x5 as f64;
+LL +     let _ = f64::from(x5);
+   |
 
 error: casts from `f32` to `f64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_float.rs:31:13
@@ -153,8 +165,9 @@ LL |     let _ = 1.0f32 as f64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `f64::from` instead
    |
-LL |     let _ = f64::from(1.0f32);
-   |             ~~~~~~~~~~~~~~~~~
+LL -     let _ = 1.0f32 as f64;
+LL +     let _ = f64::from(1.0f32);
+   |
 
 error: aborting due to 13 previous errors
 
diff --git a/src/tools/clippy/tests/ui/cast_lossless_integer.stderr b/src/tools/clippy/tests/ui/cast_lossless_integer.stderr
index c93ecb8fb56..d2580913bb5 100644
--- a/src/tools/clippy/tests/ui/cast_lossless_integer.stderr
+++ b/src/tools/clippy/tests/ui/cast_lossless_integer.stderr
@@ -9,8 +9,9 @@ LL |     0u8 as u16;
    = help: to override `-D warnings` add `#[allow(clippy::cast_lossless)]`
 help: use `u16::from` instead
    |
-LL |     u16::from(0u8);
-   |     ~~~~~~~~~~~~~~
+LL -     0u8 as u16;
+LL +     u16::from(0u8);
+   |
 
 error: casts from `u8` to `i16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:10:5
@@ -21,8 +22,9 @@ LL |     0u8 as i16;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i16::from` instead
    |
-LL |     i16::from(0u8);
-   |     ~~~~~~~~~~~~~~
+LL -     0u8 as i16;
+LL +     i16::from(0u8);
+   |
 
 error: casts from `u8` to `u32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:12:5
@@ -33,8 +35,9 @@ LL |     0u8 as u32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u32::from` instead
    |
-LL |     u32::from(0u8);
-   |     ~~~~~~~~~~~~~~
+LL -     0u8 as u32;
+LL +     u32::from(0u8);
+   |
 
 error: casts from `u8` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:14:5
@@ -45,8 +48,9 @@ LL |     0u8 as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     i32::from(0u8);
-   |     ~~~~~~~~~~~~~~
+LL -     0u8 as i32;
+LL +     i32::from(0u8);
+   |
 
 error: casts from `u8` to `u64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:16:5
@@ -57,8 +61,9 @@ LL |     0u8 as u64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u64::from` instead
    |
-LL |     u64::from(0u8);
-   |     ~~~~~~~~~~~~~~
+LL -     0u8 as u64;
+LL +     u64::from(0u8);
+   |
 
 error: casts from `u8` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:18:5
@@ -69,8 +74,9 @@ LL |     0u8 as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     i64::from(0u8);
-   |     ~~~~~~~~~~~~~~
+LL -     0u8 as i64;
+LL +     i64::from(0u8);
+   |
 
 error: casts from `u8` to `u128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:20:5
@@ -81,8 +87,9 @@ LL |     0u8 as u128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u128::from` instead
    |
-LL |     u128::from(0u8);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u8 as u128;
+LL +     u128::from(0u8);
+   |
 
 error: casts from `u8` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:22:5
@@ -93,8 +100,9 @@ LL |     0u8 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0u8);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u8 as i128;
+LL +     i128::from(0u8);
+   |
 
 error: casts from `u16` to `u32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:25:5
@@ -105,8 +113,9 @@ LL |     0u16 as u32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u32::from` instead
    |
-LL |     u32::from(0u16);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u16 as u32;
+LL +     u32::from(0u16);
+   |
 
 error: casts from `u16` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:27:5
@@ -117,8 +126,9 @@ LL |     0u16 as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     i32::from(0u16);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u16 as i32;
+LL +     i32::from(0u16);
+   |
 
 error: casts from `u16` to `u64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:29:5
@@ -129,8 +139,9 @@ LL |     0u16 as u64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u64::from` instead
    |
-LL |     u64::from(0u16);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u16 as u64;
+LL +     u64::from(0u16);
+   |
 
 error: casts from `u16` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:31:5
@@ -141,8 +152,9 @@ LL |     0u16 as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     i64::from(0u16);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u16 as i64;
+LL +     i64::from(0u16);
+   |
 
 error: casts from `u16` to `u128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:33:5
@@ -153,8 +165,9 @@ LL |     0u16 as u128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u128::from` instead
    |
-LL |     u128::from(0u16);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0u16 as u128;
+LL +     u128::from(0u16);
+   |
 
 error: casts from `u16` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:35:5
@@ -165,8 +178,9 @@ LL |     0u16 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0u16);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0u16 as i128;
+LL +     i128::from(0u16);
+   |
 
 error: casts from `u32` to `u64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:38:5
@@ -177,8 +191,9 @@ LL |     0u32 as u64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u64::from` instead
    |
-LL |     u64::from(0u32);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u32 as u64;
+LL +     u64::from(0u32);
+   |
 
 error: casts from `u32` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:40:5
@@ -189,8 +204,9 @@ LL |     0u32 as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     i64::from(0u32);
-   |     ~~~~~~~~~~~~~~~
+LL -     0u32 as i64;
+LL +     i64::from(0u32);
+   |
 
 error: casts from `u32` to `u128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:42:5
@@ -201,8 +217,9 @@ LL |     0u32 as u128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u128::from` instead
    |
-LL |     u128::from(0u32);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0u32 as u128;
+LL +     u128::from(0u32);
+   |
 
 error: casts from `u32` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:44:5
@@ -213,8 +230,9 @@ LL |     0u32 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0u32);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0u32 as i128;
+LL +     i128::from(0u32);
+   |
 
 error: casts from `u64` to `u128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:47:5
@@ -225,8 +243,9 @@ LL |     0u64 as u128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u128::from` instead
    |
-LL |     u128::from(0u64);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0u64 as u128;
+LL +     u128::from(0u64);
+   |
 
 error: casts from `u64` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:49:5
@@ -237,8 +256,9 @@ LL |     0u64 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0u64);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0u64 as i128;
+LL +     i128::from(0u64);
+   |
 
 error: casts from `i8` to `i16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:52:5
@@ -249,8 +269,9 @@ LL |     0i8 as i16;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i16::from` instead
    |
-LL |     i16::from(0i8);
-   |     ~~~~~~~~~~~~~~
+LL -     0i8 as i16;
+LL +     i16::from(0i8);
+   |
 
 error: casts from `i8` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:54:5
@@ -261,8 +282,9 @@ LL |     0i8 as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     i32::from(0i8);
-   |     ~~~~~~~~~~~~~~
+LL -     0i8 as i32;
+LL +     i32::from(0i8);
+   |
 
 error: casts from `i8` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:56:5
@@ -273,8 +295,9 @@ LL |     0i8 as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     i64::from(0i8);
-   |     ~~~~~~~~~~~~~~
+LL -     0i8 as i64;
+LL +     i64::from(0i8);
+   |
 
 error: casts from `i8` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:58:5
@@ -285,8 +308,9 @@ LL |     0i8 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0i8);
-   |     ~~~~~~~~~~~~~~~
+LL -     0i8 as i128;
+LL +     i128::from(0i8);
+   |
 
 error: casts from `i16` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:61:5
@@ -297,8 +321,9 @@ LL |     0i16 as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     i32::from(0i16);
-   |     ~~~~~~~~~~~~~~~
+LL -     0i16 as i32;
+LL +     i32::from(0i16);
+   |
 
 error: casts from `i16` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:63:5
@@ -309,8 +334,9 @@ LL |     0i16 as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     i64::from(0i16);
-   |     ~~~~~~~~~~~~~~~
+LL -     0i16 as i64;
+LL +     i64::from(0i16);
+   |
 
 error: casts from `i16` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:65:5
@@ -321,8 +347,9 @@ LL |     0i16 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0i16);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0i16 as i128;
+LL +     i128::from(0i16);
+   |
 
 error: casts from `i32` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:68:5
@@ -333,8 +360,9 @@ LL |     0i32 as i64;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i64::from` instead
    |
-LL |     i64::from(0i32);
-   |     ~~~~~~~~~~~~~~~
+LL -     0i32 as i64;
+LL +     i64::from(0i32);
+   |
 
 error: casts from `i32` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:70:5
@@ -345,8 +373,9 @@ LL |     0i32 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0i32);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0i32 as i128;
+LL +     i128::from(0i32);
+   |
 
 error: casts from `i64` to `i128` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:73:5
@@ -357,8 +386,9 @@ LL |     0i64 as i128;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i128::from` instead
    |
-LL |     i128::from(0i64);
-   |     ~~~~~~~~~~~~~~~~
+LL -     0i64 as i128;
+LL +     i128::from(0i64);
+   |
 
 error: casts from `u8` to `u16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:77:13
@@ -369,8 +399,9 @@ LL |     let _ = (1u8 + 1u8) as u16;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `u16::from` instead
    |
-LL |     let _ = u16::from(1u8 + 1u8);
-   |             ~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = (1u8 + 1u8) as u16;
+LL +     let _ = u16::from(1u8 + 1u8);
+   |
 
 error: casts from `i8` to `i64` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:80:13
@@ -381,8 +412,9 @@ LL |     let _ = 1i8 as I64Alias;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `I64Alias::from` instead
    |
-LL |     let _ = I64Alias::from(1i8);
-   |             ~~~~~~~~~~~~~~~~~~~
+LL -     let _ = 1i8 as I64Alias;
+LL +     let _ = I64Alias::from(1i8);
+   |
 
 error: casts from `u8` to `u16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:83:18
@@ -393,8 +425,9 @@ LL |     let _: u16 = 0u8 as _;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `Into::into` instead
    |
-LL |     let _: u16 = 0u8.into();
-   |                  ~~~~~~~~~~
+LL -     let _: u16 = 0u8 as _;
+LL +     let _: u16 = 0u8.into();
+   |
 
 error: casts from `i8` to `i16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:85:18
@@ -405,8 +438,9 @@ LL |     let _: i16 = -1i8 as _;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `Into::into` instead
    |
-LL |     let _: i16 = (-1i8).into();
-   |                  ~~~~~~~~~~~~~
+LL -     let _: i16 = -1i8 as _;
+LL +     let _: i16 = (-1i8).into();
+   |
 
 error: casts from `u8` to `u16` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:87:18
@@ -417,8 +451,9 @@ LL |     let _: u16 = (1u8 + 2) as _;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `Into::into` instead
    |
-LL |     let _: u16 = (1u8 + 2).into();
-   |                  ~~~~~~~~~~~~~~~~
+LL -     let _: u16 = (1u8 + 2) as _;
+LL +     let _: u16 = (1u8 + 2).into();
+   |
 
 error: casts from `u16` to `u32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:89:18
@@ -429,8 +464,9 @@ LL |     let _: u32 = 1i8 as u16 as _;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `Into::into` instead
    |
-LL |     let _: u32 = (1i8 as u16).into();
-   |                  ~~~~~~~~~~~~~~~~~~~
+LL -     let _: u32 = 1i8 as u16 as _;
+LL +     let _: u32 = (1i8 as u16).into();
+   |
 
 error: casts from `i8` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:124:13
@@ -441,8 +477,9 @@ LL |     let _ = sign_cast!(x, u8, i8) as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     let _ = i32::from(sign_cast!(x, u8, i8));
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = sign_cast!(x, u8, i8) as i32;
+LL +     let _ = i32::from(sign_cast!(x, u8, i8));
+   |
 
 error: casts from `i8` to `i32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:126:13
@@ -453,8 +490,9 @@ LL |     let _ = (sign_cast!(x, u8, i8) + 1) as i32;
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `i32::from` instead
    |
-LL |     let _ = i32::from(sign_cast!(x, u8, i8) + 1);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = (sign_cast!(x, u8, i8) + 1) as i32;
+LL +     let _ = i32::from(sign_cast!(x, u8, i8) + 1);
+   |
 
 error: casts from `u8` to `u32` can be expressed infallibly using `From`
   --> tests/ui/cast_lossless_integer.rs:133:13
@@ -469,7 +507,8 @@ LL |     let _ = in_macro!();
    = note: this error originates in the macro `in_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use `u32::from` instead
    |
-LL |             u32::from(1u8)
+LL -             1u8 as u32
+LL +             u32::from(1u8)
    |
 
 error: casts from `u8` to `u32` can be expressed infallibly using `From`
@@ -481,8 +520,9 @@ LL |     let _ = 0u8 as ty!();
    = help: an `as` cast can become silently lossy if the types change in the future
 help: use `<ty!()>::from` instead
    |
-LL |     let _ = <ty!()>::from(0u8);
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let _ = 0u8 as ty!();
+LL +     let _ = <ty!()>::from(0u8);
+   |
 
 error: aborting due to 40 previous errors
 
diff --git a/src/tools/clippy/tests/ui/cast_size.64bit.stderr b/src/tools/clippy/tests/ui/cast_size.64bit.stderr
index bc37107d80e..6b9919f8a10 100644
--- a/src/tools/clippy/tests/ui/cast_size.64bit.stderr
+++ b/src/tools/clippy/tests/ui/cast_size.64bit.stderr
@@ -9,8 +9,9 @@ LL |     1isize as i8;
    = help: to override `-D warnings` add `#[allow(clippy::cast_possible_truncation)]`
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i8::try_from(1isize);
-   |     ~~~~~~~~~~~~~~~~~~~~
+LL -     1isize as i8;
+LL +     i8::try_from(1isize);
+   |
 
 error: casting `isize` to `f32` causes a loss of precision (`isize` is 32 or 64 bits wide, but `f32`'s mantissa is only 23 bits wide)
   --> tests/ui/cast_size.rs:21:5
@@ -48,8 +49,9 @@ LL |     1isize as i32;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i32::try_from(1isize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1isize as i32;
+LL +     i32::try_from(1isize);
+   |
 
 error: casting `isize` to `u32` may truncate the value on targets with 64-bit wide pointers
   --> tests/ui/cast_size.rs:29:5
@@ -60,8 +62,9 @@ LL |     1isize as u32;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u32::try_from(1isize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1isize as u32;
+LL +     u32::try_from(1isize);
+   |
 
 error: casting `usize` to `u32` may truncate the value on targets with 64-bit wide pointers
   --> tests/ui/cast_size.rs:30:5
@@ -72,8 +75,9 @@ LL |     1usize as u32;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     u32::try_from(1usize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1usize as u32;
+LL +     u32::try_from(1usize);
+   |
 
 error: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers
   --> tests/ui/cast_size.rs:31:5
@@ -84,8 +88,9 @@ LL |     1usize as i32;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     i32::try_from(1usize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1usize as i32;
+LL +     i32::try_from(1usize);
+   |
 
 error: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers
   --> tests/ui/cast_size.rs:31:5
@@ -105,8 +110,9 @@ LL |     1i64 as isize;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     isize::try_from(1i64);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1i64 as isize;
+LL +     isize::try_from(1i64);
+   |
 
 error: casting `i64` to `usize` may truncate the value on targets with 32-bit wide pointers
   --> tests/ui/cast_size.rs:33:5
@@ -117,8 +123,9 @@ LL |     1i64 as usize;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     usize::try_from(1i64);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1i64 as usize;
+LL +     usize::try_from(1i64);
+   |
 
 error: casting `u64` to `isize` may truncate the value on targets with 32-bit wide pointers
   --> tests/ui/cast_size.rs:34:5
@@ -129,8 +136,9 @@ LL |     1u64 as isize;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     isize::try_from(1u64);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1u64 as isize;
+LL +     isize::try_from(1u64);
+   |
 
 error: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers
   --> tests/ui/cast_size.rs:34:5
@@ -147,8 +155,9 @@ LL |     1u64 as usize;
    = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ...
 help: ... or use `try_from` and handle the error accordingly
    |
-LL |     usize::try_from(1u64);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1u64 as usize;
+LL +     usize::try_from(1u64);
+   |
 
 error: casting `u32` to `isize` may wrap around the value on targets with 32-bit wide pointers
   --> tests/ui/cast_size.rs:36:5
diff --git a/src/tools/clippy/tests/ui/create_dir.stderr b/src/tools/clippy/tests/ui/create_dir.stderr
index ab51705bb55..9bb98a2606d 100644
--- a/src/tools/clippy/tests/ui/create_dir.stderr
+++ b/src/tools/clippy/tests/ui/create_dir.stderr
@@ -8,8 +8,9 @@ LL |     std::fs::create_dir("foo");
    = help: to override `-D warnings` add `#[allow(clippy::create_dir)]`
 help: consider calling `std::fs::create_dir_all` instead
    |
-LL |     create_dir_all("foo");
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     std::fs::create_dir("foo");
+LL +     create_dir_all("foo");
+   |
 
 error: calling `std::fs::create_dir` where there may be a better way
   --> tests/ui/create_dir.rs:11:5
@@ -19,8 +20,9 @@ LL |     std::fs::create_dir("bar").unwrap();
    |
 help: consider calling `std::fs::create_dir_all` instead
    |
-LL |     create_dir_all("bar").unwrap();
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     std::fs::create_dir("bar").unwrap();
+LL +     create_dir_all("bar").unwrap();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/src/tools/clippy/tests/ui/dbg_macro/dbg_macro.stderr b/src/tools/clippy/tests/ui/dbg_macro/dbg_macro.stderr
index b3d74b9ff61..f218614fdd6 100644
--- a/src/tools/clippy/tests/ui/dbg_macro/dbg_macro.stderr
+++ b/src/tools/clippy/tests/ui/dbg_macro/dbg_macro.stderr
@@ -8,8 +8,9 @@ LL |     if let Some(n) = dbg!(n.checked_sub(4)) { n } else { n }
    = help: to override `-D warnings` add `#[allow(clippy::dbg_macro)]`
 help: remove the invocation before committing it to a version control system
    |
-LL |     if let Some(n) = n.checked_sub(4) { n } else { n }
-   |                      ~~~~~~~~~~~~~~~~
+LL -     if let Some(n) = dbg!(n.checked_sub(4)) { n } else { n }
+LL +     if let Some(n) = n.checked_sub(4) { n } else { n }
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:11:8
@@ -19,8 +20,9 @@ LL |     if dbg!(n <= 1) {
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     if n <= 1 {
-   |        ~~~~~~
+LL -     if dbg!(n <= 1) {
+LL +     if n <= 1 {
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:13:9
@@ -30,7 +32,8 @@ LL |         dbg!(1)
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         1
+LL -         dbg!(1)
+LL +         1
    |
 
 error: the `dbg!` macro is intended as a debugging tool
@@ -41,7 +44,8 @@ LL |         dbg!(n * factorial(n - 1))
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         n * factorial(n - 1)
+LL -         dbg!(n * factorial(n - 1))
+LL +         n * factorial(n - 1)
    |
 
 error: the `dbg!` macro is intended as a debugging tool
@@ -52,8 +56,9 @@ LL |     dbg!(42);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     42;
-   |     ~~
+LL -     dbg!(42);
+LL +     42;
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:24:14
@@ -63,8 +68,9 @@ LL |     foo(3) + dbg!(factorial(4));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     foo(3) + factorial(4);
-   |              ~~~~~~~~~~~~
+LL -     foo(3) + dbg!(factorial(4));
+LL +     foo(3) + factorial(4);
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:26:5
@@ -74,8 +80,9 @@ LL |     dbg!(1, 2, 3, 4, 5);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     (1, 2, 3, 4, 5);
-   |     ~~~~~~~~~~~~~~~
+LL -     dbg!(1, 2, 3, 4, 5);
+LL +     (1, 2, 3, 4, 5);
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:48:5
@@ -96,8 +103,9 @@ LL |     let _ = dbg!();
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     let _ = ();
-   |             ~~
+LL -     let _ = dbg!();
+LL +     let _ = ();
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:53:9
@@ -107,8 +115,9 @@ LL |     bar(dbg!());
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     bar(());
-   |         ~~
+LL -     bar(dbg!());
+LL +     bar(());
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:55:10
@@ -118,8 +127,9 @@ LL |     foo!(dbg!());
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     foo!(());
-   |          ~~
+LL -     foo!(dbg!());
+LL +     foo!(());
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:57:16
@@ -129,8 +139,9 @@ LL |     foo2!(foo!(dbg!()));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     foo2!(foo!(()));
-   |                ~~
+LL -     foo2!(foo!(dbg!()));
+LL +     foo2!(foo!(()));
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:43:13
@@ -155,8 +166,9 @@ LL |         dbg!(2);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         2;
-   |         ~
+LL -         dbg!(2);
+LL +         2;
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:86:5
@@ -166,8 +178,9 @@ LL |     dbg!(1);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     1;
-   |     ~
+LL -     dbg!(1);
+LL +     1;
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:92:5
@@ -177,8 +190,9 @@ LL |     dbg!(1);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     1;
-   |     ~
+LL -     dbg!(1);
+LL +     1;
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:99:9
@@ -188,8 +202,9 @@ LL |         dbg!(1);
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         1;
-   |         ~
+LL -         dbg!(1);
+LL +         1;
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:106:31
@@ -199,8 +214,9 @@ LL |         println!("dbg: {:?}", dbg!(s));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         println!("dbg: {:?}", s);
-   |                               ~
+LL -         println!("dbg: {:?}", dbg!(s));
+LL +         println!("dbg: {:?}", s);
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro.rs:108:22
@@ -210,8 +226,9 @@ LL |         print!("{}", dbg!(s));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |         print!("{}", s);
-   |                      ~
+LL -         print!("{}", dbg!(s));
+LL +         print!("{}", s);
+   |
 
 error: aborting due to 19 previous errors
 
diff --git a/src/tools/clippy/tests/ui/dbg_macro/dbg_macro_unfixable.stderr b/src/tools/clippy/tests/ui/dbg_macro/dbg_macro_unfixable.stderr
index b8e91906b93..e8d5f9f2f46 100644
--- a/src/tools/clippy/tests/ui/dbg_macro/dbg_macro_unfixable.stderr
+++ b/src/tools/clippy/tests/ui/dbg_macro/dbg_macro_unfixable.stderr
@@ -19,8 +19,9 @@ LL |     dbg!(dbg!(dbg!(42)));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     dbg!(dbg!(42));
-   |     ~~~~~~~~~~~~~~
+LL -     dbg!(dbg!(dbg!(42)));
+LL +     dbg!(dbg!(42));
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro_unfixable.rs:8:10
@@ -30,8 +31,9 @@ LL |     dbg!(dbg!(dbg!(42)));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     dbg!(dbg!(42));
-   |          ~~~~~~~~
+LL -     dbg!(dbg!(dbg!(42)));
+LL +     dbg!(dbg!(42));
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro_unfixable.rs:8:15
@@ -41,8 +43,9 @@ LL |     dbg!(dbg!(dbg!(42)));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     dbg!(dbg!(42));
-   |               ~~
+LL -     dbg!(dbg!(dbg!(42)));
+LL +     dbg!(dbg!(42));
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro_unfixable.rs:10:5
@@ -52,8 +55,9 @@ LL |     dbg!(1, 2, dbg!(3, 4));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     (1, 2, dbg!(3, 4));
-   |     ~~~~~~~~~~~~~~~~~~
+LL -     dbg!(1, 2, dbg!(3, 4));
+LL +     (1, 2, dbg!(3, 4));
+   |
 
 error: the `dbg!` macro is intended as a debugging tool
   --> tests/ui/dbg_macro/dbg_macro_unfixable.rs:10:16
@@ -63,8 +67,9 @@ LL |     dbg!(1, 2, dbg!(3, 4));
    |
 help: remove the invocation before committing it to a version control system
    |
-LL |     dbg!(1, 2, (3, 4));
-   |                ~~~~~~
+LL -     dbg!(1, 2, dbg!(3, 4));
+LL +     dbg!(1, 2, (3, 4));
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/src/tools/clippy/tests/ui/doc/doc-fixable.stderr b/src/tools/clippy/tests/ui/doc/doc-fixable.stderr
index 27a04e4b558..54d73581485 100644
--- a/src/tools/clippy/tests/ui/doc/doc-fixable.stderr
+++ b/src/tools/clippy/tests/ui/doc/doc-fixable.stderr
@@ -8,8 +8,9 @@ LL | /// The foo_bar function does _nothing_. See also foo::bar. (note the dot t
    = help: to override `-D warnings` add `#[allow(clippy::doc_markdown)]`
 help: try
    |
-LL | /// The `foo_bar` function does _nothing_. See also foo::bar. (note the dot there)
-   |         ~~~~~~~~~
+LL - /// The foo_bar function does _nothing_. See also foo::bar. (note the dot there)
+LL + /// The `foo_bar` function does _nothing_. See also foo::bar. (note the dot there)
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:9:51
@@ -19,8 +20,9 @@ LL | /// The foo_bar function does _nothing_. See also foo::bar. (note the dot t
    |
 help: try
    |
-LL | /// The foo_bar function does _nothing_. See also `foo::bar`. (note the dot there)
-   |                                                   ~~~~~~~~~~
+LL - /// The foo_bar function does _nothing_. See also foo::bar. (note the dot there)
+LL + /// The foo_bar function does _nothing_. See also `foo::bar`. (note the dot there)
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:10:83
@@ -30,8 +32,9 @@ LL | /// Markdown is _weird_. I mean _really weird_. This \_ is ok. So is `_`. B
    |
 help: try
    |
-LL | /// Markdown is _weird_. I mean _really weird_. This \_ is ok. So is `_`. But not `Foo::some_fun`
-   |                                                                                   ~~~~~~~~~~~~~~~
+LL - /// Markdown is _weird_. I mean _really weird_. This \_ is ok. So is `_`. But not Foo::some_fun
+LL + /// Markdown is _weird_. I mean _really weird_. This \_ is ok. So is `_`. But not `Foo::some_fun`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:12:13
@@ -41,8 +44,9 @@ LL | /// Here be ::a::global:path, and _::another::global::path_.  :: is not a p
    |
 help: try
    |
-LL | /// Here be `::a::global:path`, and _::another::global::path_.  :: is not a path though.
-   |             ~~~~~~~~~~~~~~~~~~
+LL - /// Here be ::a::global:path, and _::another::global::path_.  :: is not a path though.
+LL + /// Here be `::a::global:path`, and _::another::global::path_.  :: is not a path though.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:12:36
@@ -52,8 +56,9 @@ LL | /// Here be ::a::global:path, and _::another::global::path_.  :: is not a p
    |
 help: try
    |
-LL | /// Here be ::a::global:path, and _`::another::global::path`_.  :: is not a path though.
-   |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// Here be ::a::global:path, and _::another::global::path_.  :: is not a path though.
+LL + /// Here be ::a::global:path, and _`::another::global::path`_.  :: is not a path though.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:13:25
@@ -63,8 +68,9 @@ LL | /// Import an item from ::awesome::global::blob:: (Intended postfix)
    |
 help: try
    |
-LL | /// Import an item from `::awesome::global::blob::` (Intended postfix)
-   |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// Import an item from ::awesome::global::blob:: (Intended postfix)
+LL + /// Import an item from `::awesome::global::blob::` (Intended postfix)
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:14:31
@@ -74,8 +80,9 @@ LL | /// These are the options for ::Cat: (Intended trailing single colon, shoul
    |
 help: try
    |
-LL | /// These are the options for `::Cat`: (Intended trailing single colon, shouldn't be linted)
-   |                               ~~~~~~~
+LL - /// These are the options for ::Cat: (Intended trailing single colon, shouldn't be linted)
+LL + /// These are the options for `::Cat`: (Intended trailing single colon, shouldn't be linted)
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:15:22
@@ -85,8 +92,9 @@ LL | /// That's not code ~NotInCodeBlock~.
    |
 help: try
    |
-LL | /// That's not code ~`NotInCodeBlock`~.
-   |                      ~~~~~~~~~~~~~~~~
+LL - /// That's not code ~NotInCodeBlock~.
+LL + /// That's not code ~`NotInCodeBlock`~.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:16:5
@@ -96,8 +104,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:30:5
@@ -107,8 +116,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:37:5
@@ -118,8 +128,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:51:5
@@ -129,8 +140,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:79:5
@@ -140,8 +152,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:96:5
@@ -151,8 +164,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:104:8
@@ -162,8 +176,9 @@ LL | /// ## CamelCaseThing
    |
 help: try
    |
-LL | /// ## `CamelCaseThing`
-   |        ~~~~~~~~~~~~~~~~
+LL - /// ## CamelCaseThing
+LL + /// ## `CamelCaseThing`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:107:7
@@ -173,8 +188,9 @@ LL | /// # CamelCaseThing
    |
 help: try
    |
-LL | /// # `CamelCaseThing`
-   |       ~~~~~~~~~~~~~~~~
+LL - /// # CamelCaseThing
+LL + /// # `CamelCaseThing`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:109:22
@@ -184,8 +200,9 @@ LL | /// Not a title #897 CamelCaseThing
    |
 help: try
    |
-LL | /// Not a title #897 `CamelCaseThing`
-   |                      ~~~~~~~~~~~~~~~~
+LL - /// Not a title #897 CamelCaseThing
+LL + /// Not a title #897 `CamelCaseThing`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:110:5
@@ -195,8 +212,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:117:5
@@ -206,8 +224,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:130:5
@@ -217,8 +236,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:141:43
@@ -228,8 +248,9 @@ LL | /** E.g., serialization of an empty list: FooBar
    |
 help: try
    |
-LL | /** E.g., serialization of an empty list: `FooBar`
-   |                                           ~~~~~~~~
+LL - /** E.g., serialization of an empty list: FooBar
+LL + /** E.g., serialization of an empty list: `FooBar`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:146:5
@@ -239,8 +260,9 @@ LL | And BarQuz too.
    |
 help: try
    |
-LL | And `BarQuz` too.
-   |     ~~~~~~~~
+LL - And BarQuz too.
+LL + And `BarQuz` too.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:147:1
@@ -250,7 +272,8 @@ LL | be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | `be_sure_we_got_to_the_end_of_it`
+LL - be_sure_we_got_to_the_end_of_it
+LL + `be_sure_we_got_to_the_end_of_it`
    |
 
 error: item in documentation is missing backticks
@@ -261,8 +284,9 @@ LL | /** E.g., serialization of an empty list: FooBar
    |
 help: try
    |
-LL | /** E.g., serialization of an empty list: `FooBar`
-   |                                           ~~~~~~~~
+LL - /** E.g., serialization of an empty list: FooBar
+LL + /** E.g., serialization of an empty list: `FooBar`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:157:5
@@ -272,8 +296,9 @@ LL | And BarQuz too.
    |
 help: try
    |
-LL | And `BarQuz` too.
-   |     ~~~~~~~~
+LL - And BarQuz too.
+LL + And `BarQuz` too.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:158:1
@@ -283,7 +308,8 @@ LL | be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | `be_sure_we_got_to_the_end_of_it`
+LL - be_sure_we_got_to_the_end_of_it
+LL + `be_sure_we_got_to_the_end_of_it`
    |
 
 error: item in documentation is missing backticks
@@ -294,8 +320,9 @@ LL | /// be_sure_we_got_to_the_end_of_it
    |
 help: try
    |
-LL | /// `be_sure_we_got_to_the_end_of_it`
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// be_sure_we_got_to_the_end_of_it
+LL + /// `be_sure_we_got_to_the_end_of_it`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:188:22
@@ -305,8 +332,9 @@ LL | /// An iterator over mycrate::Collection's values.
    |
 help: try
    |
-LL | /// An iterator over `mycrate::Collection`'s values.
-   |                      ~~~~~~~~~~~~~~~~~~~~~
+LL - /// An iterator over mycrate::Collection's values.
+LL + /// An iterator over `mycrate::Collection`'s values.
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:212:34
@@ -316,8 +344,9 @@ LL | /// Foo \[bar\] \[baz\] \[qux\]. DocMarkdownLint
    |
 help: try
    |
-LL | /// Foo \[bar\] \[baz\] \[qux\]. `DocMarkdownLint`
-   |                                  ~~~~~~~~~~~~~~~~~
+LL - /// Foo \[bar\] \[baz\] \[qux\]. DocMarkdownLint
+LL + /// Foo \[bar\] \[baz\] \[qux\]. `DocMarkdownLint`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:235:22
@@ -327,8 +356,9 @@ LL | /// There is no try (do() or do_not()).
    |
 help: try
    |
-LL | /// There is no try (`do()` or do_not()).
-   |                      ~~~~~~
+LL - /// There is no try (do() or do_not()).
+LL + /// There is no try (`do()` or do_not()).
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:235:30
@@ -338,8 +368,9 @@ LL | /// There is no try (do() or do_not()).
    |
 help: try
    |
-LL | /// There is no try (do() or `do_not()`).
-   |                              ~~~~~~~~~~
+LL - /// There is no try (do() or do_not()).
+LL + /// There is no try (do() or `do_not()`).
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:238:5
@@ -349,8 +380,9 @@ LL | /// ABes
    |
 help: try
    |
-LL | /// `ABes`
-   |     ~~~~~~
+LL - /// ABes
+LL + /// `ABes`
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/doc-fixable.rs:244:9
@@ -360,8 +392,9 @@ LL |     /// foo()
    |
 help: try
    |
-LL |     /// `foo()`
-   |         ~~~~~~~
+LL -     /// foo()
+LL +     /// `foo()`
+   |
 
 error: you should put bare URLs between `<`/`>` or make a proper Markdown link
   --> tests/ui/doc/doc-fixable.rs:248:5
diff --git a/src/tools/clippy/tests/ui/doc/doc_markdown-issue_13097.stderr b/src/tools/clippy/tests/ui/doc/doc_markdown-issue_13097.stderr
index ae68a767ec9..65b8f2ed80b 100644
--- a/src/tools/clippy/tests/ui/doc/doc_markdown-issue_13097.stderr
+++ b/src/tools/clippy/tests/ui/doc/doc_markdown-issue_13097.stderr
@@ -11,8 +11,9 @@ LL | #![deny(clippy::doc_markdown)]
    |         ^^^^^^^^^^^^^^^^^^^^
 help: try
    |
-LL |     /// `HumaNified`
-   |         ~~~~~~~~~~~~
+LL -     /// HumaNified
+LL +     /// `HumaNified`
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/doc/issue_10262.stderr b/src/tools/clippy/tests/ui/doc/issue_10262.stderr
index f43d9551e94..f9ecb3de219 100644
--- a/src/tools/clippy/tests/ui/doc/issue_10262.stderr
+++ b/src/tools/clippy/tests/ui/doc/issue_10262.stderr
@@ -8,8 +8,9 @@ LL | /// AviSynth documentation:
    = help: to override `-D warnings` add `#[allow(clippy::doc_markdown)]`
 help: try
    |
-LL | /// `AviSynth` documentation:
-   |     ~~~~~~~~~~
+LL - /// AviSynth documentation:
+LL + /// `AviSynth` documentation:
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/doc/issue_12795.stderr b/src/tools/clippy/tests/ui/doc/issue_12795.stderr
index 5700145ec8f..047de915ed4 100644
--- a/src/tools/clippy/tests/ui/doc/issue_12795.stderr
+++ b/src/tools/clippy/tests/ui/doc/issue_12795.stderr
@@ -8,8 +8,9 @@ LL | //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b(
    = help: to override `-D warnings` add `#[allow(clippy::doc_markdown)]`
 help: try
    |
-LL | //! A comment with `a_b(x)` and a_c in it and (a_b((c)) ) too and (maybe a_b((c)))
-   |                    ~~~~~~~~
+LL - //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b((c)))
+LL + //! A comment with `a_b(x)` and a_c in it and (a_b((c)) ) too and (maybe a_b((c)))
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/issue_12795.rs:3:31
@@ -19,8 +20,9 @@ LL | //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b(
    |
 help: try
    |
-LL | //! A comment with a_b(x) and `a_c` in it and (a_b((c)) ) too and (maybe a_b((c)))
-   |                               ~~~~~
+LL - //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b((c)))
+LL + //! A comment with a_b(x) and `a_c` in it and (a_b((c)) ) too and (maybe a_b((c)))
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/issue_12795.rs:3:46
@@ -30,8 +32,9 @@ LL | //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b(
    |
 help: try
    |
-LL | //! A comment with a_b(x) and a_c in it and (`a_b((c))` ) too and (maybe a_b((c)))
-   |                                              ~~~~~~~~~~
+LL - //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b((c)))
+LL + //! A comment with a_b(x) and a_c in it and (`a_b((c))` ) too and (maybe a_b((c)))
+   |
 
 error: item in documentation is missing backticks
   --> tests/ui/doc/issue_12795.rs:3:72
@@ -41,8 +44,9 @@ LL | //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b(
    |
 help: try
    |
-LL | //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe `a_b((c))`)
-   |                                                                        ~~~~~~~~~~
+LL - //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe a_b((c)))
+LL + //! A comment with a_b(x) and a_c in it and (a_b((c)) ) too and (maybe `a_b((c))`)
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/tools/clippy/tests/ui/doc/issue_9473.stderr b/src/tools/clippy/tests/ui/doc/issue_9473.stderr
index 35aa2884cc1..744c8dc8c83 100644
--- a/src/tools/clippy/tests/ui/doc/issue_9473.stderr
+++ b/src/tools/clippy/tests/ui/doc/issue_9473.stderr
@@ -8,8 +8,9 @@ LL | /// Blah blah blah <code>[FooBar]&lt;[FooBar]&gt;</code>[FooBar].
    = help: to override `-D warnings` add `#[allow(clippy::doc_markdown)]`
 help: try
    |
-LL | /// Blah blah blah <code>[FooBar]&lt;[FooBar]&gt;</code>[`FooBar`].
-   |                                                          ~~~~~~~~
+LL - /// Blah blah blah <code>[FooBar]&lt;[FooBar]&gt;</code>[FooBar].
+LL + /// Blah blah blah <code>[FooBar]&lt;[FooBar]&gt;</code>[`FooBar`].
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/doc/unbalanced_ticks.stderr b/src/tools/clippy/tests/ui/doc/unbalanced_ticks.stderr
index c9fd25eb1a1..4114a823822 100644
--- a/src/tools/clippy/tests/ui/doc/unbalanced_ticks.stderr
+++ b/src/tools/clippy/tests/ui/doc/unbalanced_ticks.stderr
@@ -29,8 +29,9 @@ LL | /// This paragraph is fine and should_be linted normally.
    |
 help: try
    |
-LL | /// This paragraph is fine and `should_be` linted normally.
-   |                                ~~~~~~~~~~~
+LL - /// This paragraph is fine and should_be linted normally.
+LL + /// This paragraph is fine and `should_be` linted normally.
+   |
 
 error: backticks are unbalanced
   --> tests/ui/doc/unbalanced_ticks.rs:20:5
@@ -48,8 +49,9 @@ LL | /// ## not_fine
    |
 help: try
    |
-LL | /// ## `not_fine`
-   |        ~~~~~~~~~~
+LL - /// ## not_fine
+LL + /// ## `not_fine`
+   |
 
 error: backticks are unbalanced
   --> tests/ui/doc/unbalanced_ticks.rs:37:5
@@ -75,8 +77,9 @@ LL | /// - This item needs backticks_here
    |
 help: try
    |
-LL | /// - This item needs `backticks_here`
-   |                       ~~~~~~~~~~~~~~~~
+LL - /// - This item needs backticks_here
+LL + /// - This item needs `backticks_here`
+   |
 
 error: backticks are unbalanced
   --> tests/ui/doc/unbalanced_ticks.rs:53:5
diff --git a/src/tools/clippy/tests/ui/eager_transmute.stderr b/src/tools/clippy/tests/ui/eager_transmute.stderr
index 5cf7bd49a92..68690c3730d 100644
--- a/src/tools/clippy/tests/ui/eager_transmute.stderr
+++ b/src/tools/clippy/tests/ui/eager_transmute.stderr
@@ -8,8 +8,9 @@ LL |     (op < 4).then_some(unsafe { std::mem::transmute(op) })
    = help: to override `-D warnings` add `#[allow(clippy::eager_transmute)]`
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     (op < 4).then(|| unsafe { std::mem::transmute(op) })
-   |              ~~~~ ++
+LL -     (op < 4).then_some(unsafe { std::mem::transmute(op) })
+LL +     (op < 4).then(|| unsafe { std::mem::transmute(op) })
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:27:33
@@ -19,8 +20,9 @@ LL |     (op < 4).then_some(unsafe { std::mem::transmute::<_, Opcode>(op) });
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     (op < 4).then(|| unsafe { std::mem::transmute::<_, Opcode>(op) });
-   |              ~~~~ ++
+LL -     (op < 4).then_some(unsafe { std::mem::transmute::<_, Opcode>(op) });
+LL +     (op < 4).then(|| unsafe { std::mem::transmute::<_, Opcode>(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:28:33
@@ -30,8 +32,9 @@ LL |     (op > 4).then_some(unsafe { std::mem::transmute::<_, Opcode>(op) });
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     (op > 4).then(|| unsafe { std::mem::transmute::<_, Opcode>(op) });
-   |              ~~~~ ++
+LL -     (op > 4).then_some(unsafe { std::mem::transmute::<_, Opcode>(op) });
+LL +     (op > 4).then(|| unsafe { std::mem::transmute::<_, Opcode>(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:29:34
@@ -41,8 +44,9 @@ LL |     (op == 0).then_some(unsafe { std::mem::transmute::<_, Opcode>(op) });
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     (op == 0).then(|| unsafe { std::mem::transmute::<_, Opcode>(op) });
-   |               ~~~~ ++
+LL -     (op == 0).then_some(unsafe { std::mem::transmute::<_, Opcode>(op) });
+LL +     (op == 0).then(|| unsafe { std::mem::transmute::<_, Opcode>(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:31:68
@@ -52,8 +56,9 @@ LL |     let _: Option<Opcode> = (op > 0 && op < 10).then_some(unsafe { std::mem
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (op > 0 && op < 10).then(|| unsafe { std::mem::transmute(op) });
-   |                                                 ~~~~ ++
+LL -     let _: Option<Opcode> = (op > 0 && op < 10).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (op > 0 && op < 10).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:32:86
@@ -63,8 +68,9 @@ LL |     let _: Option<Opcode> = (op > 0 && op < 10 && unrelated == 0).then_some
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (op > 0 && op < 10 && unrelated == 0).then(|| unsafe { std::mem::transmute(op) });
-   |                                                                   ~~~~ ++
+LL -     let _: Option<Opcode> = (op > 0 && op < 10 && unrelated == 0).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (op > 0 && op < 10 && unrelated == 0).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:35:84
@@ -74,8 +80,9 @@ LL |     let _: Option<Opcode> = (op2.foo[0] > 0 && op2.foo[0] < 10).then_some(u
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (op2.foo[0] > 0 && op2.foo[0] < 10).then(|| unsafe { std::mem::transmute(op2.foo[0]) });
-   |                                                                 ~~~~ ++
+LL -     let _: Option<Opcode> = (op2.foo[0] > 0 && op2.foo[0] < 10).then_some(unsafe { std::mem::transmute(op2.foo[0]) });
+LL +     let _: Option<Opcode> = (op2.foo[0] > 0 && op2.foo[0] < 10).then(|| unsafe { std::mem::transmute(op2.foo[0]) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:47:70
@@ -85,8 +92,9 @@ LL |     let _: Option<Opcode> = (1..=3).contains(&op).then_some(unsafe { std::m
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (1..=3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
-   |                                                   ~~~~ ++
+LL -     let _: Option<Opcode> = (1..=3).contains(&op).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (1..=3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:48:83
@@ -96,8 +104,9 @@ LL |     let _: Option<Opcode> = ((1..=3).contains(&op) || op == 4).then_some(un
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = ((1..=3).contains(&op) || op == 4).then(|| unsafe { std::mem::transmute(op) });
-   |                                                                ~~~~ ++
+LL -     let _: Option<Opcode> = ((1..=3).contains(&op) || op == 4).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = ((1..=3).contains(&op) || op == 4).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:49:69
@@ -107,8 +116,9 @@ LL |     let _: Option<Opcode> = (1..3).contains(&op).then_some(unsafe { std::me
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (1..3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
-   |                                                  ~~~~ ++
+LL -     let _: Option<Opcode> = (1..3).contains(&op).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (1..3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:50:68
@@ -118,8 +128,9 @@ LL |     let _: Option<Opcode> = (1..).contains(&op).then_some(unsafe { std::mem
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (1..).contains(&op).then(|| unsafe { std::mem::transmute(op) });
-   |                                                 ~~~~ ++
+LL -     let _: Option<Opcode> = (1..).contains(&op).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (1..).contains(&op).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:51:68
@@ -129,8 +140,9 @@ LL |     let _: Option<Opcode> = (..3).contains(&op).then_some(unsafe { std::mem
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (..3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
-   |                                                 ~~~~ ++
+LL -     let _: Option<Opcode> = (..3).contains(&op).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (..3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:52:69
@@ -140,8 +152,9 @@ LL |     let _: Option<Opcode> = (..=3).contains(&op).then_some(unsafe { std::me
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<Opcode> = (..=3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
-   |                                                  ~~~~ ++
+LL -     let _: Option<Opcode> = (..=3).contains(&op).then_some(unsafe { std::mem::transmute(op) });
+LL +     let _: Option<Opcode> = (..=3).contains(&op).then(|| unsafe { std::mem::transmute(op) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:61:24
@@ -151,8 +164,9 @@ LL |     (op < 4).then_some(std::mem::transmute::<_, Opcode>(op));
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     (op < 4).then(|| std::mem::transmute::<_, Opcode>(op));
-   |              ~~~~ ++
+LL -     (op < 4).then_some(std::mem::transmute::<_, Opcode>(op));
+LL +     (op < 4).then(|| std::mem::transmute::<_, Opcode>(op));
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:90:62
@@ -162,8 +176,9 @@ LL |     let _: Option<NonZero<u8>> = (v1 > 0).then_some(unsafe { std::mem::tran
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<NonZero<u8>> = (v1 > 0).then(|| unsafe { std::mem::transmute(v1) });
-   |                                           ~~~~ ++
+LL -     let _: Option<NonZero<u8>> = (v1 > 0).then_some(unsafe { std::mem::transmute(v1) });
+LL +     let _: Option<NonZero<u8>> = (v1 > 0).then(|| unsafe { std::mem::transmute(v1) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:96:86
@@ -173,8 +188,9 @@ LL |     let _: Option<NonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then_some
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<NonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then(|| unsafe { std::mem::transmute(v2) });
-   |                                                                   ~~~~ ++
+LL -     let _: Option<NonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then_some(unsafe { std::mem::transmute(v2) });
+LL +     let _: Option<NonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then(|| unsafe { std::mem::transmute(v2) });
+   |
 
 error: this transmute is always evaluated eagerly, even if the condition is false
   --> tests/ui/eager_transmute.rs:102:93
@@ -184,8 +200,9 @@ LL |     let _: Option<NonZeroNonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).th
    |
 help: consider using `bool::then` to only transmute if the condition holds
    |
-LL |     let _: Option<NonZeroNonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then(|| unsafe { std::mem::transmute(v2) });
-   |                                                                          ~~~~ ++
+LL -     let _: Option<NonZeroNonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then_some(unsafe { std::mem::transmute(v2) });
+LL +     let _: Option<NonZeroNonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then(|| unsafe { std::mem::transmute(v2) });
+   |
 
 error: aborting due to 17 previous errors
 
diff --git a/src/tools/clippy/tests/ui/empty_line_after/doc_comments.stderr b/src/tools/clippy/tests/ui/empty_line_after/doc_comments.stderr
index 7b197ae67e0..ca05a1b03eb 100644
--- a/src/tools/clippy/tests/ui/empty_line_after/doc_comments.stderr
+++ b/src/tools/clippy/tests/ui/empty_line_after/doc_comments.stderr
@@ -131,8 +131,9 @@ LL |       fn first_in_module() {}
    = help: if the empty line is unintentional, remove it
 help: if the comment should document the parent module use an inner doc comment
    |
-LL |     /*!
-   |       ~
+LL -     /**
+LL +     /*!
+   |
 
 error: empty line after doc comment
   --> tests/ui/empty_line_after/doc_comments.rs:85:5
diff --git a/src/tools/clippy/tests/ui/excessive_precision.stderr b/src/tools/clippy/tests/ui/excessive_precision.stderr
index 81e4fb6765d..b1f12eed420 100644
--- a/src/tools/clippy/tests/ui/excessive_precision.stderr
+++ b/src/tools/clippy/tests/ui/excessive_precision.stderr
@@ -8,8 +8,9 @@ LL |     const BAD32_1: f32 = 0.123_456_789_f32;
    = help: to override `-D warnings` add `#[allow(clippy::excessive_precision)]`
 help: consider changing the type or truncating it to
    |
-LL |     const BAD32_1: f32 = 0.123_456_79_f32;
-   |                          ~~~~~~~~~~~~~~~~
+LL -     const BAD32_1: f32 = 0.123_456_789_f32;
+LL +     const BAD32_1: f32 = 0.123_456_79_f32;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:21:26
@@ -19,8 +20,9 @@ LL |     const BAD32_2: f32 = 0.123_456_789;
    |
 help: consider changing the type or truncating it to
    |
-LL |     const BAD32_2: f32 = 0.123_456_79;
-   |                          ~~~~~~~~~~~~
+LL -     const BAD32_2: f32 = 0.123_456_789;
+LL +     const BAD32_2: f32 = 0.123_456_79;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:22:26
@@ -30,8 +32,9 @@ LL |     const BAD32_3: f32 = 0.100_000_000_000_1;
    |
 help: consider changing the type or truncating it to
    |
-LL |     const BAD32_3: f32 = 0.1;
-   |                          ~~~
+LL -     const BAD32_3: f32 = 0.100_000_000_000_1;
+LL +     const BAD32_3: f32 = 0.1;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:23:29
@@ -41,8 +44,9 @@ LL |     const BAD32_EDGE: f32 = 1.000_000_9;
    |
 help: consider changing the type or truncating it to
    |
-LL |     const BAD32_EDGE: f32 = 1.000_001;
-   |                             ~~~~~~~~~
+LL -     const BAD32_EDGE: f32 = 1.000_000_9;
+LL +     const BAD32_EDGE: f32 = 1.000_001;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:27:26
@@ -52,8 +56,9 @@ LL |     const BAD64_3: f64 = 0.100_000_000_000_000_000_1;
    |
 help: consider changing the type or truncating it to
    |
-LL |     const BAD64_3: f64 = 0.1;
-   |                          ~~~
+LL -     const BAD64_3: f64 = 0.100_000_000_000_000_000_1;
+LL +     const BAD64_3: f64 = 0.1;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:30:22
@@ -63,8 +68,9 @@ LL |     println!("{:?}", 8.888_888_888_888_888_888_888);
    |
 help: consider changing the type or truncating it to
    |
-LL |     println!("{:?}", 8.888_888_888_888_89);
-   |                      ~~~~~~~~~~~~~~~~~~~~
+LL -     println!("{:?}", 8.888_888_888_888_888_888_888);
+LL +     println!("{:?}", 8.888_888_888_888_89);
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:41:22
@@ -74,8 +80,9 @@ LL |     let bad32: f32 = 1.123_456_789;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad32: f32 = 1.123_456_8;
-   |                      ~~~~~~~~~~~
+LL -     let bad32: f32 = 1.123_456_789;
+LL +     let bad32: f32 = 1.123_456_8;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:42:26
@@ -85,8 +92,9 @@ LL |     let bad32_suf: f32 = 1.123_456_789_f32;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad32_suf: f32 = 1.123_456_8_f32;
-   |                          ~~~~~~~~~~~~~~~
+LL -     let bad32_suf: f32 = 1.123_456_789_f32;
+LL +     let bad32_suf: f32 = 1.123_456_8_f32;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:43:21
@@ -96,8 +104,9 @@ LL |     let bad32_inf = 1.123_456_789_f32;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad32_inf = 1.123_456_8_f32;
-   |                     ~~~~~~~~~~~~~~~
+LL -     let bad32_inf = 1.123_456_789_f32;
+LL +     let bad32_inf = 1.123_456_8_f32;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:53:36
@@ -107,8 +116,9 @@ LL |     let bad_vec32: Vec<f32> = vec![0.123_456_789];
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad_vec32: Vec<f32> = vec![0.123_456_79];
-   |                                    ~~~~~~~~~~~~
+LL -     let bad_vec32: Vec<f32> = vec![0.123_456_789];
+LL +     let bad_vec32: Vec<f32> = vec![0.123_456_79];
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:54:36
@@ -118,8 +128,9 @@ LL |     let bad_vec64: Vec<f64> = vec![0.123_456_789_123_456_789];
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad_vec64: Vec<f64> = vec![0.123_456_789_123_456_78];
-   |                                    ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let bad_vec64: Vec<f64> = vec![0.123_456_789_123_456_789];
+LL +     let bad_vec64: Vec<f64> = vec![0.123_456_789_123_456_78];
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:58:24
@@ -129,8 +140,9 @@ LL |     let bad_e32: f32 = 1.123_456_788_888e-10;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad_e32: f32 = 1.123_456_8e-10;
-   |                        ~~~~~~~~~~~~~~~
+LL -     let bad_e32: f32 = 1.123_456_788_888e-10;
+LL +     let bad_e32: f32 = 1.123_456_8e-10;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:61:27
@@ -140,8 +152,9 @@ LL |     let bad_bige32: f32 = 1.123_456_788_888E-10;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let bad_bige32: f32 = 1.123_456_8E-10;
-   |                           ~~~~~~~~~~~~~~~
+LL -     let bad_bige32: f32 = 1.123_456_788_888E-10;
+LL +     let bad_bige32: f32 = 1.123_456_8E-10;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:70:13
@@ -151,8 +164,9 @@ LL |     let _ = 2.225_073_858_507_201_1e-308_f64;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let _ = 2.225_073_858_507_201e-308_f64;
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = 2.225_073_858_507_201_1e-308_f64;
+LL +     let _ = 2.225_073_858_507_201e-308_f64;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:73:13
@@ -162,8 +176,9 @@ LL |     let _ = 1.000_000_000_000_001e-324_f64;
    |
 help: consider changing the type or truncating it to
    |
-LL |     let _ = 0_f64;
-   |             ~~~~~
+LL -     let _ = 1.000_000_000_000_001e-324_f64;
+LL +     let _ = 0_f64;
+   |
 
 error: float has excessive precision
   --> tests/ui/excessive_precision.rs:83:20
@@ -173,8 +188,9 @@ LL |     const _: f64 = 3.0000000000000000e+00;
    |
 help: consider changing the type or truncating it to
    |
-LL |     const _: f64 = 3.0;
-   |                    ~~~
+LL -     const _: f64 = 3.0000000000000000e+00;
+LL +     const _: f64 = 3.0;
+   |
 
 error: aborting due to 16 previous errors
 
diff --git a/src/tools/clippy/tests/ui/fn_to_numeric_cast_any.stderr b/src/tools/clippy/tests/ui/fn_to_numeric_cast_any.stderr
index a05b7138bc9..c069c9d1672 100644
--- a/src/tools/clippy/tests/ui/fn_to_numeric_cast_any.stderr
+++ b/src/tools/clippy/tests/ui/fn_to_numeric_cast_any.stderr
@@ -8,8 +8,9 @@ LL |     let _ = foo as i8;
    = help: to override `-D warnings` add `#[allow(clippy::fn_to_numeric_cast_any)]`
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as i8;
-   |             ~~~~~~~~~~~
+LL -     let _ = foo as i8;
+LL +     let _ = foo() as i8;
+   |
 
 error: casting function pointer `foo` to `i16`
   --> tests/ui/fn_to_numeric_cast_any.rs:26:13
@@ -19,8 +20,9 @@ LL |     let _ = foo as i16;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as i16;
-   |             ~~~~~~~~~~~~
+LL -     let _ = foo as i16;
+LL +     let _ = foo() as i16;
+   |
 
 error: casting function pointer `foo` to `i32`
   --> tests/ui/fn_to_numeric_cast_any.rs:28:13
@@ -30,8 +32,9 @@ LL |     let _ = foo as i32;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as i32;
-   |             ~~~~~~~~~~~~
+LL -     let _ = foo as i32;
+LL +     let _ = foo() as i32;
+   |
 
 error: casting function pointer `foo` to `i64`
   --> tests/ui/fn_to_numeric_cast_any.rs:30:13
@@ -41,8 +44,9 @@ LL |     let _ = foo as i64;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as i64;
-   |             ~~~~~~~~~~~~
+LL -     let _ = foo as i64;
+LL +     let _ = foo() as i64;
+   |
 
 error: casting function pointer `foo` to `i128`
   --> tests/ui/fn_to_numeric_cast_any.rs:32:13
@@ -52,8 +56,9 @@ LL |     let _ = foo as i128;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as i128;
-   |             ~~~~~~~~~~~~~
+LL -     let _ = foo as i128;
+LL +     let _ = foo() as i128;
+   |
 
 error: casting function pointer `foo` to `isize`
   --> tests/ui/fn_to_numeric_cast_any.rs:34:13
@@ -63,8 +68,9 @@ LL |     let _ = foo as isize;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as isize;
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = foo as isize;
+LL +     let _ = foo() as isize;
+   |
 
 error: casting function pointer `foo` to `u8`
   --> tests/ui/fn_to_numeric_cast_any.rs:37:13
@@ -74,8 +80,9 @@ LL |     let _ = foo as u8;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as u8;
-   |             ~~~~~~~~~~~
+LL -     let _ = foo as u8;
+LL +     let _ = foo() as u8;
+   |
 
 error: casting function pointer `foo` to `u16`
   --> tests/ui/fn_to_numeric_cast_any.rs:39:13
@@ -85,8 +92,9 @@ LL |     let _ = foo as u16;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as u16;
-   |             ~~~~~~~~~~~~
+LL -     let _ = foo as u16;
+LL +     let _ = foo() as u16;
+   |
 
 error: casting function pointer `foo` to `u32`
   --> tests/ui/fn_to_numeric_cast_any.rs:41:13
@@ -96,8 +104,9 @@ LL |     let _ = foo as u32;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as u32;
-   |             ~~~~~~~~~~~~
+LL -     let _ = foo as u32;
+LL +     let _ = foo() as u32;
+   |
 
 error: casting function pointer `foo` to `u64`
   --> tests/ui/fn_to_numeric_cast_any.rs:43:13
@@ -107,8 +116,9 @@ LL |     let _ = foo as u64;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as u64;
-   |             ~~~~~~~~~~~~
+LL -     let _ = foo as u64;
+LL +     let _ = foo() as u64;
+   |
 
 error: casting function pointer `foo` to `u128`
   --> tests/ui/fn_to_numeric_cast_any.rs:45:13
@@ -118,8 +128,9 @@ LL |     let _ = foo as u128;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as u128;
-   |             ~~~~~~~~~~~~~
+LL -     let _ = foo as u128;
+LL +     let _ = foo() as u128;
+   |
 
 error: casting function pointer `foo` to `usize`
   --> tests/ui/fn_to_numeric_cast_any.rs:47:13
@@ -129,8 +140,9 @@ LL |     let _ = foo as usize;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as usize;
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = foo as usize;
+LL +     let _ = foo() as usize;
+   |
 
 error: casting function pointer `Struct::static_method` to `usize`
   --> tests/ui/fn_to_numeric_cast_any.rs:52:13
@@ -140,8 +152,9 @@ LL |     let _ = Struct::static_method as usize;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = Struct::static_method() as usize;
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = Struct::static_method as usize;
+LL +     let _ = Struct::static_method() as usize;
+   |
 
 error: casting function pointer `f` to `usize`
   --> tests/ui/fn_to_numeric_cast_any.rs:57:5
@@ -151,7 +164,8 @@ LL |     f as usize
    |
 help: did you mean to invoke the function?
    |
-LL |     f() as usize
+LL -     f as usize
+LL +     f() as usize
    |
 
 error: casting function pointer `T::static_method` to `usize`
@@ -162,7 +176,8 @@ LL |     T::static_method as usize
    |
 help: did you mean to invoke the function?
    |
-LL |     T::static_method() as usize
+LL -     T::static_method as usize
+LL +     T::static_method() as usize
    |
 
 error: casting function pointer `(clos as fn(u32) -> u32)` to `usize`
@@ -173,8 +188,9 @@ LL |     let _ = (clos as fn(u32) -> u32) as usize;
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = (clos as fn(u32) -> u32)() as usize;
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = (clos as fn(u32) -> u32) as usize;
+LL +     let _ = (clos as fn(u32) -> u32)() as usize;
+   |
 
 error: casting function pointer `foo` to `*const ()`
   --> tests/ui/fn_to_numeric_cast_any.rs:74:13
@@ -184,8 +200,9 @@ LL |     let _ = foo as *const ();
    |
 help: did you mean to invoke the function?
    |
-LL |     let _ = foo() as *const ();
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let _ = foo as *const ();
+LL +     let _ = foo() as *const ();
+   |
 
 error: aborting due to 17 previous errors
 
diff --git a/src/tools/clippy/tests/ui/for_kv_map.stderr b/src/tools/clippy/tests/ui/for_kv_map.stderr
index adcc3ab8fdb..11b61c8cbc6 100644
--- a/src/tools/clippy/tests/ui/for_kv_map.stderr
+++ b/src/tools/clippy/tests/ui/for_kv_map.stderr
@@ -8,8 +8,9 @@ LL |     for (_, v) in &m {
    = help: to override `-D warnings` add `#[allow(clippy::for_kv_map)]`
 help: use the corresponding method
    |
-LL |     for v in m.values() {
-   |         ~    ~~~~~~~~~~
+LL -     for (_, v) in &m {
+LL +     for v in m.values() {
+   |
 
 error: you seem to want to iterate on a map's values
   --> tests/ui/for_kv_map.rs:16:19
@@ -19,8 +20,9 @@ LL |     for (_, v) in &*m {
    |
 help: use the corresponding method
    |
-LL |     for v in (*m).values() {
-   |         ~    ~~~~~~~~~~~~~
+LL -     for (_, v) in &*m {
+LL +     for v in (*m).values() {
+   |
 
 error: you seem to want to iterate on a map's values
   --> tests/ui/for_kv_map.rs:25:19
@@ -30,8 +32,9 @@ LL |     for (_, v) in &mut m {
    |
 help: use the corresponding method
    |
-LL |     for v in m.values_mut() {
-   |         ~    ~~~~~~~~~~~~~~
+LL -     for (_, v) in &mut m {
+LL +     for v in m.values_mut() {
+   |
 
 error: you seem to want to iterate on a map's values
   --> tests/ui/for_kv_map.rs:31:19
@@ -41,8 +44,9 @@ LL |     for (_, v) in &mut *m {
    |
 help: use the corresponding method
    |
-LL |     for v in (*m).values_mut() {
-   |         ~    ~~~~~~~~~~~~~~~~~
+LL -     for (_, v) in &mut *m {
+LL +     for v in (*m).values_mut() {
+   |
 
 error: you seem to want to iterate on a map's keys
   --> tests/ui/for_kv_map.rs:38:24
@@ -52,8 +56,9 @@ LL |     for (k, _value) in rm {
    |
 help: use the corresponding method
    |
-LL |     for k in rm.keys() {
-   |         ~    ~~~~~~~~~
+LL -     for (k, _value) in rm {
+LL +     for k in rm.keys() {
+   |
 
 error: you seem to want to iterate on a map's keys
   --> tests/ui/for_kv_map.rs:45:32
@@ -63,8 +68,9 @@ LL |     'label: for (k, _value) in rm {
    |
 help: use the corresponding method
    |
-LL |     'label: for k in rm.keys() {
-   |                 ~    ~~~~~~~~~
+LL -     'label: for (k, _value) in rm {
+LL +     'label: for k in rm.keys() {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/src/tools/clippy/tests/ui/four_forward_slashes.stderr b/src/tools/clippy/tests/ui/four_forward_slashes.stderr
index 3606a2227a0..d5bf71fadc7 100644
--- a/src/tools/clippy/tests/ui/four_forward_slashes.stderr
+++ b/src/tools/clippy/tests/ui/four_forward_slashes.stderr
@@ -9,6 +9,8 @@ LL | | fn a() {}
    = help: to override `-D warnings` add `#[allow(clippy::four_forward_slashes)]`
 help: make this a doc comment by removing one `/`
    |
+LL - //// whoops
+LL - fn a() {}
 LL + /// whoops
    |
 
@@ -22,6 +24,8 @@ LL | | fn b() {}
    |
 help: make this a doc comment by removing one `/`
    |
+LL - //// whoops
+LL - #[allow(dead_code)]
 LL + /// whoops
    |
 
@@ -50,6 +54,8 @@ LL | | fn g() {}
    |
 help: make this a doc comment by removing one `/`
    |
+LL - //// between attributes
+LL - #[allow(dead_code)]
 LL + /// between attributes
    |
 
@@ -62,6 +68,8 @@ LL | | fn h() {}
    |
 help: make this a doc comment by removing one `/`
    |
+LL -     //// not very start of contents
+LL - fn h() {}
 LL + /// not very start of contents
    |
 
diff --git a/src/tools/clippy/tests/ui/four_forward_slashes_first_line.stderr b/src/tools/clippy/tests/ui/four_forward_slashes_first_line.stderr
index 81732346412..83bfb60eb16 100644
--- a/src/tools/clippy/tests/ui/four_forward_slashes_first_line.stderr
+++ b/src/tools/clippy/tests/ui/four_forward_slashes_first_line.stderr
@@ -9,6 +9,8 @@ LL | | fn a() {}
    = help: to override `-D warnings` add `#[allow(clippy::four_forward_slashes)]`
 help: make this a doc comment by removing one `/`
    |
+LL - //// borked doc comment on the first line. doesn't combust!
+LL - fn a() {}
 LL + /// borked doc comment on the first line. doesn't combust!
    |
 
diff --git a/src/tools/clippy/tests/ui/get_unwrap.stderr b/src/tools/clippy/tests/ui/get_unwrap.stderr
index 8eacb249c60..fc6c0b9299c 100644
--- a/src/tools/clippy/tests/ui/get_unwrap.stderr
+++ b/src/tools/clippy/tests/ui/get_unwrap.stderr
@@ -11,8 +11,9 @@ LL | #![deny(clippy::get_unwrap)]
    |         ^^^^^^^^^^^^^^^^^^
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &boxed_slice[1];
-   |                 ~~~~~~~~~~~~~~~
+LL -         let _ = boxed_slice.get(1).unwrap();
+LL +         let _ = &boxed_slice[1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:37:17
@@ -33,8 +34,9 @@ LL |         let _ = some_slice.get(0).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_slice[0];
-   |                 ~~~~~~~~~~~~~~
+LL -         let _ = some_slice.get(0).unwrap();
+LL +         let _ = &some_slice[0];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:38:17
@@ -53,8 +55,9 @@ LL |         let _ = some_vec.get(0).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_vec[0];
-   |                 ~~~~~~~~~~~~
+LL -         let _ = some_vec.get(0).unwrap();
+LL +         let _ = &some_vec[0];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:39:17
@@ -73,8 +76,9 @@ LL |         let _ = some_vecdeque.get(0).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_vecdeque[0];
-   |                 ~~~~~~~~~~~~~~~~~
+LL -         let _ = some_vecdeque.get(0).unwrap();
+LL +         let _ = &some_vecdeque[0];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:40:17
@@ -93,8 +97,9 @@ LL |         let _ = some_hashmap.get(&1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_hashmap[&1];
-   |                 ~~~~~~~~~~~~~~~~~
+LL -         let _ = some_hashmap.get(&1).unwrap();
+LL +         let _ = &some_hashmap[&1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:41:17
@@ -113,8 +118,9 @@ LL |         let _ = some_btreemap.get(&1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = &some_btreemap[&1];
-   |                 ~~~~~~~~~~~~~~~~~~
+LL -         let _ = some_btreemap.get(&1).unwrap();
+LL +         let _ = &some_btreemap[&1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:42:17
@@ -133,8 +139,9 @@ LL |         let _: u8 = *boxed_slice.get(1).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _: u8 = boxed_slice[1];
-   |                     ~~~~~~~~~~~~~~
+LL -         let _: u8 = *boxed_slice.get(1).unwrap();
+LL +         let _: u8 = boxed_slice[1];
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:46:22
@@ -153,8 +160,9 @@ LL |         *boxed_slice.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         boxed_slice[0] = 1;
-   |         ~~~~~~~~~~~~~~
+LL -         *boxed_slice.get_mut(0).unwrap() = 1;
+LL +         boxed_slice[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:51:10
@@ -173,8 +181,9 @@ LL |         *some_slice.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         some_slice[0] = 1;
-   |         ~~~~~~~~~~~~~
+LL -         *some_slice.get_mut(0).unwrap() = 1;
+LL +         some_slice[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:52:10
@@ -193,8 +202,9 @@ LL |         *some_vec.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         some_vec[0] = 1;
-   |         ~~~~~~~~~~~
+LL -         *some_vec.get_mut(0).unwrap() = 1;
+LL +         some_vec[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:53:10
@@ -213,8 +223,9 @@ LL |         *some_vecdeque.get_mut(0).unwrap() = 1;
    |
 help: using `[]` is clearer and more concise
    |
-LL |         some_vecdeque[0] = 1;
-   |         ~~~~~~~~~~~~~~~~
+LL -         *some_vecdeque.get_mut(0).unwrap() = 1;
+LL +         some_vecdeque[0] = 1;
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:54:10
@@ -233,8 +244,9 @@ LL |         let _ = some_vec.get(0..1).unwrap().to_vec();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = some_vec[0..1].to_vec();
-   |                 ~~~~~~~~~~~~~~
+LL -         let _ = some_vec.get(0..1).unwrap().to_vec();
+LL +         let _ = some_vec[0..1].to_vec();
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:66:17
@@ -253,8 +265,9 @@ LL |         let _ = some_vec.get_mut(0..1).unwrap().to_vec();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _ = some_vec[0..1].to_vec();
-   |                 ~~~~~~~~~~~~~~
+LL -         let _ = some_vec.get_mut(0..1).unwrap().to_vec();
+LL +         let _ = some_vec[0..1].to_vec();
+   |
 
 error: used `unwrap()` on an `Option` value
   --> tests/ui/get_unwrap.rs:67:17
@@ -273,8 +286,9 @@ LL |         let _x: &i32 = f.get(1 + 2).unwrap();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _x: &i32 = &f[1 + 2];
-   |                        ~~~~~~~~~
+LL -         let _x: &i32 = f.get(1 + 2).unwrap();
+LL +         let _x: &i32 = &f[1 + 2];
+   |
 
 error: called `.get().unwrap()` on a slice
   --> tests/ui/get_unwrap.rs:81:18
@@ -284,8 +298,9 @@ LL |         let _x = f.get(1 + 2).unwrap().to_string();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _x = f[1 + 2].to_string();
-   |                  ~~~~~~~~
+LL -         let _x = f.get(1 + 2).unwrap().to_string();
+LL +         let _x = f[1 + 2].to_string();
+   |
 
 error: called `.get().unwrap()` on a slice
   --> tests/ui/get_unwrap.rs:84:18
@@ -295,8 +310,9 @@ LL |         let _x = f.get(1 + 2).unwrap().abs();
    |
 help: using `[]` is clearer and more concise
    |
-LL |         let _x = f[1 + 2].abs();
-   |                  ~~~~~~~~
+LL -         let _x = f.get(1 + 2).unwrap().abs();
+LL +         let _x = f[1 + 2].abs();
+   |
 
 error: called `.get_mut().unwrap()` on a slice
   --> tests/ui/get_unwrap.rs:101:33
@@ -306,8 +322,9 @@ LL |                         let b = rest.get_mut(linidx(j, k) - linidx(i, k) -
    |
 help: using `[]` is clearer and more concise
    |
-LL |                         let b = &mut rest[linidx(j, k) - linidx(i, k) - 1];
-   |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -                         let b = rest.get_mut(linidx(j, k) - linidx(i, k) - 1).unwrap();
+LL +                         let b = &mut rest[linidx(j, k) - linidx(i, k) - 1];
+   |
 
 error: aborting due to 30 previous errors
 
diff --git a/src/tools/clippy/tests/ui/implicit_hasher.stderr b/src/tools/clippy/tests/ui/implicit_hasher.stderr
index 442f4789aac..6e964c65a2e 100644
--- a/src/tools/clippy/tests/ui/implicit_hasher.stderr
+++ b/src/tools/clippy/tests/ui/implicit_hasher.stderr
@@ -78,8 +78,9 @@ LL | pub fn map(map: &mut HashMap<i32, i32>) {}
    |
 help: add a type parameter for `BuildHasher`
    |
-LL | pub fn map<S: ::std::hash::BuildHasher>(map: &mut HashMap<i32, i32, S>) {}
-   |           +++++++++++++++++++++++++++++           ~~~~~~~~~~~~~~~~~~~~
+LL - pub fn map(map: &mut HashMap<i32, i32>) {}
+LL + pub fn map<S: ::std::hash::BuildHasher>(map: &mut HashMap<i32, i32, S>) {}
+   |
 
 error: parameter of type `HashSet` should be generalized over different hashers
   --> tests/ui/implicit_hasher.rs:70:22
@@ -89,8 +90,9 @@ LL | pub fn set(set: &mut HashSet<i32>) {}
    |
 help: add a type parameter for `BuildHasher`
    |
-LL | pub fn set<S: ::std::hash::BuildHasher>(set: &mut HashSet<i32, S>) {}
-   |           +++++++++++++++++++++++++++++           ~~~~~~~~~~~~~~~
+LL - pub fn set(set: &mut HashSet<i32>) {}
+LL + pub fn set<S: ::std::hash::BuildHasher>(set: &mut HashSet<i32, S>) {}
+   |
 
 error: impl for `HashMap` should be generalized over different hashers
   --> tests/ui/implicit_hasher.rs:76:43
@@ -114,8 +116,9 @@ LL | pub async fn election_vote(_data: HashMap<i32, i32>) {}
    |
 help: add a type parameter for `BuildHasher`
    |
-LL | pub async fn election_vote<S: ::std::hash::BuildHasher>(_data: HashMap<i32, i32, S>) {}
-   |                           +++++++++++++++++++++++++++++        ~~~~~~~~~~~~~~~~~~~~
+LL - pub async fn election_vote(_data: HashMap<i32, i32>) {}
+LL + pub async fn election_vote<S: ::std::hash::BuildHasher>(_data: HashMap<i32, i32, S>) {}
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/src/tools/clippy/tests/ui/implicit_return.stderr b/src/tools/clippy/tests/ui/implicit_return.stderr
index 3b06f26f5a0..0d2faa5e067 100644
--- a/src/tools/clippy/tests/ui/implicit_return.stderr
+++ b/src/tools/clippy/tests/ui/implicit_return.stderr
@@ -8,7 +8,8 @@ LL |     true
    = help: to override `-D warnings` add `#[allow(clippy::implicit_return)]`
 help: add `return` as shown
    |
-LL |     return true
+LL -     true
+LL +     return true
    |
 
 error: missing `return` statement
@@ -19,8 +20,9 @@ LL |     if true { true } else { false }
    |
 help: add `return` as shown
    |
-LL |     if true { return true } else { false }
-   |               ~~~~~~~~~~~
+LL -     if true { true } else { false }
+LL +     if true { return true } else { false }
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:19:29
@@ -30,8 +32,9 @@ LL |     if true { true } else { false }
    |
 help: add `return` as shown
    |
-LL |     if true { true } else { return false }
-   |                             ~~~~~~~~~~~~
+LL -     if true { true } else { false }
+LL +     if true { true } else { return false }
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:25:17
@@ -41,8 +44,9 @@ LL |         true => false,
    |
 help: add `return` as shown
    |
-LL |         true => return false,
-   |                 ~~~~~~~~~~~~
+LL -         true => false,
+LL +         true => return false,
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:26:20
@@ -52,8 +56,9 @@ LL |         false => { true },
    |
 help: add `return` as shown
    |
-LL |         false => { return true },
-   |                    ~~~~~~~~~~~
+LL -         false => { true },
+LL +         false => { return true },
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:39:9
@@ -63,8 +68,9 @@ LL |         break true;
    |
 help: change `break` to `return` as shown
    |
-LL |         return true;
-   |         ~~~~~~~~~~~
+LL -         break true;
+LL +         return true;
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:46:13
@@ -74,8 +80,9 @@ LL |             break true;
    |
 help: change `break` to `return` as shown
    |
-LL |             return true;
-   |             ~~~~~~~~~~~
+LL -             break true;
+LL +             return true;
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:54:13
@@ -85,8 +92,9 @@ LL |             break true;
    |
 help: change `break` to `return` as shown
    |
-LL |             return true;
-   |             ~~~~~~~~~~~
+LL -             break true;
+LL +             return true;
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:72:18
@@ -96,8 +104,9 @@ LL |     let _ = || { true };
    |
 help: add `return` as shown
    |
-LL |     let _ = || { return true };
-   |                  ~~~~~~~~~~~
+LL -     let _ = || { true };
+LL +     let _ = || { return true };
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:73:16
@@ -107,8 +116,9 @@ LL |     let _ = || true;
    |
 help: add `return` as shown
    |
-LL |     let _ = || return true;
-   |                ~~~~~~~~~~~
+LL -     let _ = || true;
+LL +     let _ = || return true;
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:81:5
@@ -118,7 +128,8 @@ LL |     format!("test {}", "test")
    |
 help: add `return` as shown
    |
-LL |     return format!("test {}", "test")
+LL -     format!("test {}", "test")
+LL +     return format!("test {}", "test")
    |
 
 error: missing `return` statement
@@ -129,7 +140,8 @@ LL |     m!(true, false)
    |
 help: add `return` as shown
    |
-LL |     return m!(true, false)
+LL -     m!(true, false)
+LL +     return m!(true, false)
    |
 
 error: missing `return` statement
@@ -140,8 +152,9 @@ LL |             break true;
    |
 help: change `break` to `return` as shown
    |
-LL |             return true;
-   |             ~~~~~~~~~~~
+LL -             break true;
+LL +             return true;
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:101:17
@@ -151,8 +164,9 @@ LL |                 break 'outer false;
    |
 help: change `break` to `return` as shown
    |
-LL |                 return false;
-   |                 ~~~~~~~~~~~~
+LL -                 break 'outer false;
+LL +                 return false;
+   |
 
 error: missing `return` statement
   --> tests/ui/implicit_return.rs:116:5
@@ -177,7 +191,8 @@ LL |     true
    |
 help: add `return` as shown
    |
-LL |     return true
+LL -     true
+LL +     return true
    |
 
 error: aborting due to 16 previous errors
diff --git a/src/tools/clippy/tests/ui/iter_nth.stderr b/src/tools/clippy/tests/ui/iter_nth.stderr
index 178463f5347..1167a604ecd 100644
--- a/src/tools/clippy/tests/ui/iter_nth.stderr
+++ b/src/tools/clippy/tests/ui/iter_nth.stderr
@@ -8,8 +8,9 @@ LL |         let bad_vec = some_vec.iter().nth(3);
    = help: to override `-D warnings` add `#[allow(clippy::iter_nth)]`
 help: `get` is equivalent but more concise
    |
-LL |         let bad_vec = some_vec.get(3);
-   |                                ~~~
+LL -         let bad_vec = some_vec.iter().nth(3);
+LL +         let bad_vec = some_vec.get(3);
+   |
 
 error: called `.iter().nth()` on a slice
   --> tests/ui/iter_nth.rs:35:26
@@ -19,8 +20,9 @@ LL |         let bad_slice = &some_vec[..].iter().nth(3);
    |
 help: `get` is equivalent but more concise
    |
-LL |         let bad_slice = &some_vec[..].get(3);
-   |                                       ~~~
+LL -         let bad_slice = &some_vec[..].iter().nth(3);
+LL +         let bad_slice = &some_vec[..].get(3);
+   |
 
 error: called `.iter().nth()` on a slice
   --> tests/ui/iter_nth.rs:36:31
@@ -30,8 +32,9 @@ LL |         let bad_boxed_slice = boxed_slice.iter().nth(3);
    |
 help: `get` is equivalent but more concise
    |
-LL |         let bad_boxed_slice = boxed_slice.get(3);
-   |                                           ~~~
+LL -         let bad_boxed_slice = boxed_slice.iter().nth(3);
+LL +         let bad_boxed_slice = boxed_slice.get(3);
+   |
 
 error: called `.iter().nth()` on a `VecDeque`
   --> tests/ui/iter_nth.rs:37:29
@@ -41,8 +44,9 @@ LL |         let bad_vec_deque = some_vec_deque.iter().nth(3);
    |
 help: `get` is equivalent but more concise
    |
-LL |         let bad_vec_deque = some_vec_deque.get(3);
-   |                                            ~~~
+LL -         let bad_vec_deque = some_vec_deque.iter().nth(3);
+LL +         let bad_vec_deque = some_vec_deque.get(3);
+   |
 
 error: called `.iter_mut().nth()` on a `Vec`
   --> tests/ui/iter_nth.rs:42:23
@@ -52,8 +56,9 @@ LL |         let bad_vec = some_vec.iter_mut().nth(3);
    |
 help: `get_mut` is equivalent but more concise
    |
-LL |         let bad_vec = some_vec.get_mut(3);
-   |                                ~~~~~~~
+LL -         let bad_vec = some_vec.iter_mut().nth(3);
+LL +         let bad_vec = some_vec.get_mut(3);
+   |
 
 error: called `.iter_mut().nth()` on a slice
   --> tests/ui/iter_nth.rs:45:26
@@ -63,8 +68,9 @@ LL |         let bad_slice = &some_vec[..].iter_mut().nth(3);
    |
 help: `get_mut` is equivalent but more concise
    |
-LL |         let bad_slice = &some_vec[..].get_mut(3);
-   |                                       ~~~~~~~
+LL -         let bad_slice = &some_vec[..].iter_mut().nth(3);
+LL +         let bad_slice = &some_vec[..].get_mut(3);
+   |
 
 error: called `.iter_mut().nth()` on a `VecDeque`
   --> tests/ui/iter_nth.rs:48:29
@@ -74,8 +80,9 @@ LL |         let bad_vec_deque = some_vec_deque.iter_mut().nth(3);
    |
 help: `get_mut` is equivalent but more concise
    |
-LL |         let bad_vec_deque = some_vec_deque.get_mut(3);
-   |                                            ~~~~~~~
+LL -         let bad_vec_deque = some_vec_deque.iter_mut().nth(3);
+LL +         let bad_vec_deque = some_vec_deque.get_mut(3);
+   |
 
 error: called `.iter().nth()` on a `Vec`
   --> tests/ui/iter_nth.rs:52:5
@@ -85,8 +92,9 @@ LL |     vec_ref.iter().nth(3);
    |
 help: `get` is equivalent but more concise
    |
-LL |     vec_ref.get(3);
-   |             ~~~
+LL -     vec_ref.iter().nth(3);
+LL +     vec_ref.get(3);
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/src/tools/clippy/tests/ui/join_absolute_paths.stderr b/src/tools/clippy/tests/ui/join_absolute_paths.stderr
index e7fd5508823..300946bf3b5 100644
--- a/src/tools/clippy/tests/ui/join_absolute_paths.stderr
+++ b/src/tools/clippy/tests/ui/join_absolute_paths.stderr
@@ -9,12 +9,14 @@ LL |     path.join("/sh");
    = help: to override `-D warnings` add `#[allow(clippy::join_absolute_paths)]`
 help: if this is unintentional, try removing the starting separator
    |
-LL |     path.join("sh");
-   |               ~~~~
+LL -     path.join("/sh");
+LL +     path.join("sh");
+   |
 help: if this is intentional, consider using `Path::new`
    |
-LL |     PathBuf::from("/sh");
-   |     ~~~~~~~~~~~~~~~~~~~~
+LL -     path.join("/sh");
+LL +     PathBuf::from("/sh");
+   |
 
 error: argument to `Path::join` starts with a path separator
   --> tests/ui/join_absolute_paths.rs:14:15
@@ -25,12 +27,14 @@ LL |     path.join("\\user");
    = note: joining a path starting with separator will replace the path instead
 help: if this is unintentional, try removing the starting separator
    |
-LL |     path.join("\user");
-   |               ~~~~~~~
+LL -     path.join("\\user");
+LL +     path.join("\user");
+   |
 help: if this is intentional, consider using `Path::new`
    |
-LL |     PathBuf::from("\\user");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     path.join("\\user");
+LL +     PathBuf::from("\\user");
+   |
 
 error: argument to `Path::join` starts with a path separator
   --> tests/ui/join_absolute_paths.rs:18:15
@@ -41,12 +45,14 @@ LL |     path.join("/sh");
    = note: joining a path starting with separator will replace the path instead
 help: if this is unintentional, try removing the starting separator
    |
-LL |     path.join("sh");
-   |               ~~~~
+LL -     path.join("/sh");
+LL +     path.join("sh");
+   |
 help: if this is intentional, consider using `Path::new`
    |
-LL |     PathBuf::from("/sh");
-   |     ~~~~~~~~~~~~~~~~~~~~
+LL -     path.join("/sh");
+LL +     PathBuf::from("/sh");
+   |
 
 error: argument to `Path::join` starts with a path separator
   --> tests/ui/join_absolute_paths.rs:22:15
@@ -57,12 +63,14 @@ LL |     path.join(r#"/sh"#);
    = note: joining a path starting with separator will replace the path instead
 help: if this is unintentional, try removing the starting separator
    |
-LL |     path.join(r#"sh"#);
-   |               ~~~~~~~
+LL -     path.join(r#"/sh"#);
+LL +     path.join(r#"sh"#);
+   |
 help: if this is intentional, consider using `Path::new`
    |
-LL |     PathBuf::from(r#"/sh"#);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     path.join(r#"/sh"#);
+LL +     PathBuf::from(r#"/sh"#);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/tools/clippy/tests/ui/large_enum_variant.64bit.stderr b/src/tools/clippy/tests/ui/large_enum_variant.64bit.stderr
index 805cb406f83..60653b4abfb 100644
--- a/src/tools/clippy/tests/ui/large_enum_variant.64bit.stderr
+++ b/src/tools/clippy/tests/ui/large_enum_variant.64bit.stderr
@@ -13,8 +13,9 @@ LL | | }
    = help: to override `-D warnings` add `#[allow(clippy::large_enum_variant)]`
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     B(Box<[i32; 8000]>),
-   |       ~~~~~~~~~~~~~~~~
+LL -     B([i32; 8000]),
+LL +     B(Box<[i32; 8000]>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:35:1
@@ -29,8 +30,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     ContainingLargeEnum(Box<LargeEnum>),
-   |                         ~~~~~~~~~~~~~~
+LL -     ContainingLargeEnum(LargeEnum),
+LL +     ContainingLargeEnum(Box<LargeEnum>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:40:1
@@ -46,8 +48,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     ContainingMoreThanOneField(i32, Box<[i32; 8000]>, Box<[i32; 9500]>),
-   |                                     ~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~
+LL -     ContainingMoreThanOneField(i32, [i32; 8000], [i32; 9500]),
+LL +     ContainingMoreThanOneField(i32, Box<[i32; 8000]>, Box<[i32; 9500]>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:46:1
@@ -62,8 +65,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     StructLikeLarge { x: Box<[i32; 8000]>, y: i32 },
-   |                          ~~~~~~~~~~~~~~~~
+LL -     StructLikeLarge { x: [i32; 8000], y: i32 },
+LL +     StructLikeLarge { x: Box<[i32; 8000]>, y: i32 },
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:51:1
@@ -78,8 +82,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     StructLikeLarge2 { x: Box<[i32; 8000]> },
-   |                           ~~~~~~~~~~~~~~~~
+LL -     StructLikeLarge2 { x: [i32; 8000] },
+LL +     StructLikeLarge2 { x: Box<[i32; 8000]> },
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:67:1
@@ -95,8 +100,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     B(Box<[u8; 1255]>),
-   |       ~~~~~~~~~~~~~~~
+LL -     B([u8; 1255]),
+LL +     B(Box<[u8; 1255]>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:73:1
@@ -111,8 +117,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     ContainingMoreThanOneField(Box<[i32; 8000]>, [i32; 2], Box<[i32; 9500]>, [i32; 30]),
-   |                                ~~~~~~~~~~~~~~~~            ~~~~~~~~~~~~~~~~
+LL -     ContainingMoreThanOneField([i32; 8000], [i32; 2], [i32; 9500], [i32; 30]),
+LL +     ContainingMoreThanOneField(Box<[i32; 8000]>, [i32; 2], Box<[i32; 9500]>, [i32; 30]),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:78:1
@@ -127,8 +134,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     B(Box<Struct2>),
-   |       ~~~~~~~~~~~~
+LL -     B(Struct2),
+LL +     B(Box<Struct2>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:83:1
@@ -143,8 +151,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     B(Box<Struct2>),
-   |       ~~~~~~~~~~~~
+LL -     B(Struct2),
+LL +     B(Box<Struct2>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:88:1
@@ -159,8 +168,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     B(Box<Struct2>),
-   |       ~~~~~~~~~~~~
+LL -     B(Struct2),
+LL +     B(Box<Struct2>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:103:1
@@ -241,8 +251,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     Large(Box<(T, [u8; 512])>),
-   |           ~~~~~~~~~~~~~~~~~~~
+LL -     Large((T, [u8; 512])),
+LL +     Large(Box<(T, [u8; 512])>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:143:1
@@ -257,8 +268,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     Large(Box<[Foo<u64>; 64]>),
-   |           ~~~~~~~~~~~~~~~~~~~
+LL -     Large([Foo<u64>; 64]),
+LL +     Large(Box<[Foo<u64>; 64]>),
+   |
 
 error: large size difference between variants
   --> tests/ui/large_enum_variant.rs:153:1
@@ -273,8 +285,9 @@ LL | | }
    |
 help: consider boxing the large fields to reduce the total size of the enum
    |
-LL |     Error(Box<PossiblyLargeEnumWithConst<256>>),
-   |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Error(PossiblyLargeEnumWithConst<256>),
+LL +     Error(Box<PossiblyLargeEnumWithConst<256>>),
+   |
 
 error: aborting due to 16 previous errors
 
diff --git a/src/tools/clippy/tests/ui/legacy_numeric_constants.stderr b/src/tools/clippy/tests/ui/legacy_numeric_constants.stderr
index 267b9ac8e4d..74fe09e0f5c 100644
--- a/src/tools/clippy/tests/ui/legacy_numeric_constants.stderr
+++ b/src/tools/clippy/tests/ui/legacy_numeric_constants.stderr
@@ -8,8 +8,9 @@ LL |     std::f32::EPSILON;
    = help: to override `-D warnings` add `#[allow(clippy::legacy_numeric_constants)]`
 help: use the associated constant instead
    |
-LL |     f32::EPSILON;
-   |     ~~~~~~~~~~~~
+LL -     std::f32::EPSILON;
+LL +     f32::EPSILON;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:34:5
@@ -19,8 +20,9 @@ LL |     std::u8::MIN;
    |
 help: use the associated constant instead
    |
-LL |     u8::MIN;
-   |     ~~~~~~~
+LL -     std::u8::MIN;
+LL +     u8::MIN;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:37:5
@@ -30,8 +32,9 @@ LL |     std::usize::MIN;
    |
 help: use the associated constant instead
    |
-LL |     usize::MIN;
-   |     ~~~~~~~~~~
+LL -     std::usize::MIN;
+LL +     usize::MIN;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:40:5
@@ -41,8 +44,9 @@ LL |     std::u32::MAX;
    |
 help: use the associated constant instead
    |
-LL |     u32::MAX;
-   |     ~~~~~~~~
+LL -     std::u32::MAX;
+LL +     u32::MAX;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:43:5
@@ -52,8 +56,9 @@ LL |     core::u32::MAX;
    |
 help: use the associated constant instead
    |
-LL |     u32::MAX;
-   |     ~~~~~~~~
+LL -     core::u32::MAX;
+LL +     u32::MAX;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:46:5
@@ -63,8 +68,9 @@ LL |     MAX;
    |
 help: use the associated constant instead
    |
-LL |     u32::MAX;
-   |     ~~~~~~~~
+LL -     MAX;
+LL +     u32::MAX;
+   |
 
 error: usage of a legacy numeric method
   --> tests/ui/legacy_numeric_constants.rs:49:10
@@ -74,8 +80,9 @@ LL |     i32::max_value();
    |
 help: use the associated constant instead
    |
-LL |     i32::MAX;
-   |          ~~~
+LL -     i32::max_value();
+LL +     i32::MAX;
+   |
 
 error: usage of a legacy numeric method
   --> tests/ui/legacy_numeric_constants.rs:52:9
@@ -85,8 +92,9 @@ LL |     u8::max_value();
    |
 help: use the associated constant instead
    |
-LL |     u8::MAX;
-   |         ~~~
+LL -     u8::max_value();
+LL +     u8::MAX;
+   |
 
 error: usage of a legacy numeric method
   --> tests/ui/legacy_numeric_constants.rs:55:9
@@ -96,8 +104,9 @@ LL |     u8::min_value();
    |
 help: use the associated constant instead
    |
-LL |     u8::MIN;
-   |         ~~~
+LL -     u8::min_value();
+LL +     u8::MIN;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:58:5
@@ -107,8 +116,9 @@ LL |     ::std::u8::MIN;
    |
 help: use the associated constant instead
    |
-LL |     u8::MIN;
-   |     ~~~~~~~
+LL -     ::std::u8::MIN;
+LL +     u8::MIN;
+   |
 
 error: usage of a legacy numeric method
   --> tests/ui/legacy_numeric_constants.rs:61:27
@@ -118,8 +128,9 @@ LL |     ::std::primitive::u8::min_value();
    |
 help: use the associated constant instead
    |
-LL |     ::std::primitive::u8::MIN;
-   |                           ~~~
+LL -     ::std::primitive::u8::min_value();
+LL +     ::std::primitive::u8::MIN;
+   |
 
 error: usage of a legacy numeric method
   --> tests/ui/legacy_numeric_constants.rs:64:26
@@ -129,8 +140,9 @@ LL |     std::primitive::i32::max_value();
    |
 help: use the associated constant instead
    |
-LL |     std::primitive::i32::MAX;
-   |                          ~~~
+LL -     std::primitive::i32::max_value();
+LL +     std::primitive::i32::MAX;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:67:5
@@ -140,8 +152,9 @@ LL |     self::a::u128::MAX;
    |
 help: use the associated constant instead
    |
-LL |     u128::MAX;
-   |     ~~~~~~~~~
+LL -     self::a::u128::MAX;
+LL +     u128::MAX;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:17:25
@@ -155,8 +168,9 @@ LL |     b!();
    = note: this error originates in the macro `b` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the associated constant instead
    |
-LL |                 let x = u64::MAX;
-   |                         ~~~~~~~~
+LL -                 let x = std::u64::MAX;
+LL +                 let x = u64::MAX;
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:81:14
@@ -166,8 +180,9 @@ LL |     [(0, "", std::i128::MAX)];
    |
 help: use the associated constant instead
    |
-LL |     [(0, "", i128::MAX)];
-   |              ~~~~~~~~~
+LL -     [(0, "", std::i128::MAX)];
+LL +     [(0, "", i128::MAX)];
+   |
 
 error: usage of a legacy numeric constant
   --> tests/ui/legacy_numeric_constants.rs:115:5
@@ -177,8 +192,9 @@ LL |     std::u32::MAX;
    |
 help: use the associated constant instead
    |
-LL |     u32::MAX;
-   |     ~~~~~~~~
+LL -     std::u32::MAX;
+LL +     u32::MAX;
+   |
 
 error: aborting due to 16 previous errors
 
diff --git a/src/tools/clippy/tests/ui/literals.stderr b/src/tools/clippy/tests/ui/literals.stderr
index 564e0bc4f74..a9192825b35 100644
--- a/src/tools/clippy/tests/ui/literals.stderr
+++ b/src/tools/clippy/tests/ui/literals.stderr
@@ -71,12 +71,14 @@ LL |     let fail_multi_zero = 000_123usize;
    = help: to override `-D warnings` add `#[allow(clippy::zero_prefixed_literal)]`
 help: if you mean to use a decimal constant, remove the `0` to avoid confusion
    |
-LL |     let fail_multi_zero = 123usize;
-   |                           ~~~~~~~~
+LL -     let fail_multi_zero = 000_123usize;
+LL +     let fail_multi_zero = 123usize;
+   |
 help: if you mean to use an octal constant, use `0o`
    |
-LL |     let fail_multi_zero = 0o123usize;
-   |                           ~~~~~~~~~~
+LL -     let fail_multi_zero = 000_123usize;
+LL +     let fail_multi_zero = 0o123usize;
+   |
 
 error: integer type suffix should not be separated by an underscore
   --> tests/ui/literals.rs:36:16
@@ -92,12 +94,14 @@ LL |     let fail8 = 0123;
    |
 help: if you mean to use a decimal constant, remove the `0` to avoid confusion
    |
-LL |     let fail8 = 123;
-   |                 ~~~
+LL -     let fail8 = 0123;
+LL +     let fail8 = 123;
+   |
 help: if you mean to use an octal constant, use `0o`
    |
-LL |     let fail8 = 0o123;
-   |                 ~~~~~
+LL -     let fail8 = 0123;
+LL +     let fail8 = 0o123;
+   |
 
 error: integer type suffix should not be separated by an underscore
   --> tests/ui/literals.rs:48:16
@@ -143,8 +147,9 @@ LL |     let _ = 08;
    |
 help: if you mean to use a decimal constant, remove the `0` to avoid confusion
    |
-LL |     let _ = 8;
-   |             ~
+LL -     let _ = 08;
+LL +     let _ = 8;
+   |
 
 error: this is a decimal constant
   --> tests/ui/literals.rs:72:13
@@ -154,8 +159,9 @@ LL |     let _ = 09;
    |
 help: if you mean to use a decimal constant, remove the `0` to avoid confusion
    |
-LL |     let _ = 9;
-   |             ~
+LL -     let _ = 09;
+LL +     let _ = 9;
+   |
 
 error: this is a decimal constant
   --> tests/ui/literals.rs:74:13
@@ -165,8 +171,9 @@ LL |     let _ = 089;
    |
 help: if you mean to use a decimal constant, remove the `0` to avoid confusion
    |
-LL |     let _ = 89;
-   |             ~~
+LL -     let _ = 089;
+LL +     let _ = 89;
+   |
 
 error: aborting due to 20 previous errors
 
diff --git a/src/tools/clippy/tests/ui/lossy_float_literal.stderr b/src/tools/clippy/tests/ui/lossy_float_literal.stderr
index 3026854e317..118351a62d0 100644
--- a/src/tools/clippy/tests/ui/lossy_float_literal.stderr
+++ b/src/tools/clippy/tests/ui/lossy_float_literal.stderr
@@ -8,8 +8,9 @@ LL |     let _: f32 = 16_777_217.0;
    = help: to override `-D warnings` add `#[allow(clippy::lossy_float_literal)]`
 help: consider changing the type or replacing it with
    |
-LL |     let _: f32 = 16_777_216.0;
-   |                  ~~~~~~~~~~~~
+LL -     let _: f32 = 16_777_217.0;
+LL +     let _: f32 = 16_777_216.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:15:18
@@ -19,8 +20,9 @@ LL |     let _: f32 = 16_777_219.0;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f32 = 16_777_220.0;
-   |                  ~~~~~~~~~~~~
+LL -     let _: f32 = 16_777_219.0;
+LL +     let _: f32 = 16_777_220.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:16:18
@@ -30,8 +32,9 @@ LL |     let _: f32 = 16_777_219.;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f32 = 16_777_220.0;
-   |                  ~~~~~~~~~~~~
+LL -     let _: f32 = 16_777_219.;
+LL +     let _: f32 = 16_777_220.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:17:18
@@ -41,8 +44,9 @@ LL |     let _: f32 = 16_777_219.000;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f32 = 16_777_220.0;
-   |                  ~~~~~~~~~~~~
+LL -     let _: f32 = 16_777_219.000;
+LL +     let _: f32 = 16_777_220.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:18:13
@@ -52,8 +56,9 @@ LL |     let _ = 16_777_219f32;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _ = 16_777_220_f32;
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = 16_777_219f32;
+LL +     let _ = 16_777_220_f32;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:19:19
@@ -63,8 +68,9 @@ LL |     let _: f32 = -16_777_219.0;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f32 = -16_777_220.0;
-   |                   ~~~~~~~~~~~~
+LL -     let _: f32 = -16_777_219.0;
+LL +     let _: f32 = -16_777_220.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:21:18
@@ -74,8 +80,9 @@ LL |     let _: f64 = 9_007_199_254_740_993.0;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f64 = 9_007_199_254_740_992.0;
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: f64 = 9_007_199_254_740_993.0;
+LL +     let _: f64 = 9_007_199_254_740_992.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:22:18
@@ -85,8 +92,9 @@ LL |     let _: f64 = 9_007_199_254_740_993.;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f64 = 9_007_199_254_740_992.0;
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: f64 = 9_007_199_254_740_993.;
+LL +     let _: f64 = 9_007_199_254_740_992.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:23:18
@@ -96,8 +104,9 @@ LL |     let _: f64 = 9_007_199_254_740_993.00;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f64 = 9_007_199_254_740_992.0;
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: f64 = 9_007_199_254_740_993.00;
+LL +     let _: f64 = 9_007_199_254_740_992.0;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:24:13
@@ -107,8 +116,9 @@ LL |     let _ = 9_007_199_254_740_993f64;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _ = 9_007_199_254_740_992_f64;
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = 9_007_199_254_740_993f64;
+LL +     let _ = 9_007_199_254_740_992_f64;
+   |
 
 error: literal cannot be represented as the underlying type without loss of precision
   --> tests/ui/lossy_float_literal.rs:25:19
@@ -118,8 +128,9 @@ LL |     let _: f64 = -9_007_199_254_740_993.0;
    |
 help: consider changing the type or replacing it with
    |
-LL |     let _: f64 = -9_007_199_254_740_992.0;
-   |                   ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: f64 = -9_007_199_254_740_993.0;
+LL +     let _: f64 = -9_007_199_254_740_992.0;
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/src/tools/clippy/tests/ui/manual_assert.edition2018.stderr b/src/tools/clippy/tests/ui/manual_assert.edition2018.stderr
index 004463720e2..dfccf7e9939 100644
--- a/src/tools/clippy/tests/ui/manual_assert.edition2018.stderr
+++ b/src/tools/clippy/tests/ui/manual_assert.edition2018.stderr
@@ -79,7 +79,15 @@ LL | |     }
    |
 help: try instead
    |
-LL |     assert!(!(a > 2), "panic with comment");
+LL -     if a > 2 {
+LL -         // comment
+LL -         /* this is a
+LL -         multiline
+LL -         comment */
+LL -         /// Doc comment
+LL -         panic!("panic with comment") // comment after `panic!`
+LL -     }
+LL +     assert!(!(a > 2), "panic with comment");
    |
 
 error: only a `panic!` in `if`-then statement
diff --git a/src/tools/clippy/tests/ui/manual_assert.edition2021.stderr b/src/tools/clippy/tests/ui/manual_assert.edition2021.stderr
index 004463720e2..dfccf7e9939 100644
--- a/src/tools/clippy/tests/ui/manual_assert.edition2021.stderr
+++ b/src/tools/clippy/tests/ui/manual_assert.edition2021.stderr
@@ -79,7 +79,15 @@ LL | |     }
    |
 help: try instead
    |
-LL |     assert!(!(a > 2), "panic with comment");
+LL -     if a > 2 {
+LL -         // comment
+LL -         /* this is a
+LL -         multiline
+LL -         comment */
+LL -         /// Doc comment
+LL -         panic!("panic with comment") // comment after `panic!`
+LL -     }
+LL +     assert!(!(a > 2), "panic with comment");
    |
 
 error: only a `panic!` in `if`-then statement
diff --git a/src/tools/clippy/tests/ui/manual_async_fn.stderr b/src/tools/clippy/tests/ui/manual_async_fn.stderr
index 68a97243436..a7cfc30fb69 100644
--- a/src/tools/clippy/tests/ui/manual_async_fn.stderr
+++ b/src/tools/clippy/tests/ui/manual_async_fn.stderr
@@ -8,8 +8,9 @@ LL | fn fut() -> impl Future<Output = i32> {
    = help: to override `-D warnings` add `#[allow(clippy::manual_async_fn)]`
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn fut() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - fn fut() -> impl Future<Output = i32> {
+LL + async fn fut() -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:11:1
@@ -19,8 +20,9 @@ LL | fn fut2() ->impl Future<Output = i32> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn fut2() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - fn fut2() ->impl Future<Output = i32> {
+LL + async fn fut2() -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:16:1
@@ -30,8 +32,9 @@ LL | fn fut3()-> impl Future<Output = i32> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn fut3() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - fn fut3()-> impl Future<Output = i32> {
+LL + async fn fut3() -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:20:1
@@ -41,8 +44,9 @@ LL | fn empty_fut() -> impl Future<Output = ()> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn empty_fut() {}
-   | ~~~~~~~~~~~~~~~~~~~~ ~~
+LL - fn empty_fut() -> impl Future<Output = ()> {
+LL + async fn empty_fut() {}
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:25:1
@@ -52,8 +56,9 @@ LL | fn empty_fut2() ->impl Future<Output = ()> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn empty_fut2() {}
-   | ~~~~~~~~~~~~~~~~~~~~~ ~~
+LL - fn empty_fut2() ->impl Future<Output = ()> {
+LL + async fn empty_fut2() {}
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:30:1
@@ -63,8 +68,9 @@ LL | fn empty_fut3()-> impl Future<Output = ()> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn empty_fut3() {}
-   | ~~~~~~~~~~~~~~~~~~~~~ ~~
+LL - fn empty_fut3()-> impl Future<Output = ()> {
+LL + async fn empty_fut3() {}
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:34:1
@@ -74,8 +80,9 @@ LL | fn core_fut() -> impl core::future::Future<Output = i32> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn core_fut() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - fn core_fut() -> impl core::future::Future<Output = i32> {
+LL + async fn core_fut() -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:56:5
@@ -108,8 +115,9 @@ LL | fn elided(_: &i32) -> impl Future<Output = i32> + '_ {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn elided(_: &i32) -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - fn elided(_: &i32) -> impl Future<Output = i32> + '_ {
+LL + async fn elided(_: &i32) -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:101:1
@@ -119,8 +127,9 @@ LL | fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> impl Future<Output = i32> +
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | async fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> impl Future<Output = i32> + 'a + 'b {
+LL + async fn explicit<'a, 'b>(_: &'a i32, _: &'b i32) -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:130:1
@@ -130,8 +139,9 @@ LL | pub fn issue_10450() -> impl Future<Output = i32> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | pub async fn issue_10450() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - pub fn issue_10450() -> impl Future<Output = i32> {
+LL + pub async fn issue_10450() -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:134:1
@@ -141,8 +151,9 @@ LL | pub(crate) fn issue_10450_2() -> impl Future<Output = i32> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | pub(crate) async fn issue_10450_2() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - pub(crate) fn issue_10450_2() -> impl Future<Output = i32> {
+LL + pub(crate) async fn issue_10450_2() -> i32 { 42 }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> tests/ui/manual_async_fn.rs:138:1
@@ -152,8 +163,9 @@ LL | pub(self) fn issue_10450_3() -> impl Future<Output = i32> {
    |
 help: make the function `async` and return the output of the future directly
    |
-LL | pub(self) async fn issue_10450_3() -> i32 { 42 }
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
+LL - pub(self) fn issue_10450_3() -> impl Future<Output = i32> {
+LL + pub(self) async fn issue_10450_3() -> i32 { 42 }
+   |
 
 error: aborting due to 13 previous errors
 
diff --git a/src/tools/clippy/tests/ui/manual_float_methods.stderr b/src/tools/clippy/tests/ui/manual_float_methods.stderr
index 676a4485ab4..1352c5e73ca 100644
--- a/src/tools/clippy/tests/ui/manual_float_methods.stderr
+++ b/src/tools/clippy/tests/ui/manual_float_methods.stderr
@@ -17,16 +17,19 @@ LL |     if x != f32::INFINITY && x != f32::NEG_INFINITY {}
    = help: to override `-D warnings` add `#[allow(clippy::manual_is_finite)]`
 help: use the dedicated method instead
    |
-LL |     if x.is_finite() {}
-   |        ~~~~~~~~~~~~~
+LL -     if x != f32::INFINITY && x != f32::NEG_INFINITY {}
+LL +     if x.is_finite() {}
+   |
 help: this will alter how it handles NaN; if that is a problem, use instead
    |
-LL |     if x.is_finite() || x.is_nan() {}
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if x != f32::INFINITY && x != f32::NEG_INFINITY {}
+LL +     if x.is_finite() || x.is_nan() {}
+   |
 help: or, for conciseness
    |
-LL |     if !x.is_infinite() {}
-   |        ~~~~~~~~~~~~~~~~
+LL -     if x != f32::INFINITY && x != f32::NEG_INFINITY {}
+LL +     if !x.is_infinite() {}
+   |
 
 error: manually checking if a float is infinite
   --> tests/ui/manual_float_methods.rs:26:8
@@ -42,16 +45,19 @@ LL |     if x != INFINITE && x != NEG_INFINITE {}
    |
 help: use the dedicated method instead
    |
-LL |     if x.is_finite() {}
-   |        ~~~~~~~~~~~~~
+LL -     if x != INFINITE && x != NEG_INFINITE {}
+LL +     if x.is_finite() {}
+   |
 help: this will alter how it handles NaN; if that is a problem, use instead
    |
-LL |     if x.is_finite() || x.is_nan() {}
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if x != INFINITE && x != NEG_INFINITE {}
+LL +     if x.is_finite() || x.is_nan() {}
+   |
 help: or, for conciseness
    |
-LL |     if !x.is_infinite() {}
-   |        ~~~~~~~~~~~~~~~~
+LL -     if x != INFINITE && x != NEG_INFINITE {}
+LL +     if !x.is_infinite() {}
+   |
 
 error: manually checking if a float is infinite
   --> tests/ui/manual_float_methods.rs:29:8
@@ -67,16 +73,19 @@ LL |     if x != f64::INFINITY && x != f64::NEG_INFINITY {}
    |
 help: use the dedicated method instead
    |
-LL |     if x.is_finite() {}
-   |        ~~~~~~~~~~~~~
+LL -     if x != f64::INFINITY && x != f64::NEG_INFINITY {}
+LL +     if x.is_finite() {}
+   |
 help: this will alter how it handles NaN; if that is a problem, use instead
    |
-LL |     if x.is_finite() || x.is_nan() {}
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if x != f64::INFINITY && x != f64::NEG_INFINITY {}
+LL +     if x.is_finite() || x.is_nan() {}
+   |
 help: or, for conciseness
    |
-LL |     if !x.is_infinite() {}
-   |        ~~~~~~~~~~~~~~~~
+LL -     if x != f64::INFINITY && x != f64::NEG_INFINITY {}
+LL +     if !x.is_infinite() {}
+   |
 
 error: manually checking if a float is infinite
   --> tests/ui/manual_float_methods.rs:44:12
diff --git a/src/tools/clippy/tests/ui/manual_ignore_case_cmp.stderr b/src/tools/clippy/tests/ui/manual_ignore_case_cmp.stderr
index 11e8b8aebb5..bc6393b66d5 100644
--- a/src/tools/clippy/tests/ui/manual_ignore_case_cmp.stderr
+++ b/src/tools/clippy/tests/ui/manual_ignore_case_cmp.stderr
@@ -11,8 +11,9 @@ LL | #![deny(clippy::manual_ignore_case_cmp)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     if a.eq_ignore_ascii_case(b) {
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if a.to_ascii_lowercase() == b.to_ascii_lowercase() {
+LL +     if a.eq_ignore_ascii_case(b) {
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:12:8
@@ -22,8 +23,9 @@ LL |     if a.to_ascii_uppercase() == b.to_ascii_uppercase() {
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     if a.eq_ignore_ascii_case(b) {
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if a.to_ascii_uppercase() == b.to_ascii_uppercase() {
+LL +     if a.eq_ignore_ascii_case(b) {
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:15:13
@@ -33,8 +35,9 @@ LL |     let r = a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     let r = a.eq_ignore_ascii_case(b);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let r = a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     let r = a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:16:18
@@ -44,8 +47,9 @@ LL |     let r = r || a.to_ascii_uppercase() == b.to_ascii_uppercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     let r = r || a.eq_ignore_ascii_case(b);
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let r = r || a.to_ascii_uppercase() == b.to_ascii_uppercase();
+LL +     let r = r || a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:17:10
@@ -55,8 +59,9 @@ LL |     r && a.to_ascii_lowercase() == b.to_uppercase().to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     r && a.eq_ignore_ascii_case(&b.to_uppercase());
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r && a.to_ascii_lowercase() == b.to_uppercase().to_ascii_lowercase();
+LL +     r && a.eq_ignore_ascii_case(&b.to_uppercase());
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:19:8
@@ -66,8 +71,9 @@ LL |     if a.to_ascii_lowercase() != b.to_ascii_lowercase() {
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     if !a.eq_ignore_ascii_case(b) {
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if a.to_ascii_lowercase() != b.to_ascii_lowercase() {
+LL +     if !a.eq_ignore_ascii_case(b) {
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:22:8
@@ -77,8 +83,9 @@ LL |     if a.to_ascii_uppercase() != b.to_ascii_uppercase() {
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     if !a.eq_ignore_ascii_case(b) {
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if a.to_ascii_uppercase() != b.to_ascii_uppercase() {
+LL +     if !a.eq_ignore_ascii_case(b) {
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:25:13
@@ -88,8 +95,9 @@ LL |     let r = a.to_ascii_lowercase() != b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     let r = !a.eq_ignore_ascii_case(b);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let r = a.to_ascii_lowercase() != b.to_ascii_lowercase();
+LL +     let r = !a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:26:18
@@ -99,8 +107,9 @@ LL |     let r = r || a.to_ascii_uppercase() != b.to_ascii_uppercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     let r = r || !a.eq_ignore_ascii_case(b);
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let r = r || a.to_ascii_uppercase() != b.to_ascii_uppercase();
+LL +     let r = r || !a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:27:10
@@ -110,8 +119,9 @@ LL |     r && a.to_ascii_lowercase() != b.to_uppercase().to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     r && !a.eq_ignore_ascii_case(&b.to_uppercase());
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r && a.to_ascii_lowercase() != b.to_uppercase().to_ascii_lowercase();
+LL +     r && !a.eq_ignore_ascii_case(&b.to_uppercase());
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:38:5
@@ -121,8 +131,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:41:5
@@ -132,8 +143,9 @@ LL |     a.to_ascii_lowercase() == 'a';
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(&'a');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == 'a';
+LL +     a.eq_ignore_ascii_case(&'a');
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:42:5
@@ -143,8 +155,9 @@ LL |     'a' == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     'a'.eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     'a' == b.to_ascii_lowercase();
+LL +     'a'.eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:45:5
@@ -154,8 +167,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:46:5
@@ -165,8 +179,9 @@ LL |     a.to_ascii_lowercase() == b'a';
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(&b'a');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b'a';
+LL +     a.eq_ignore_ascii_case(&b'a');
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:47:5
@@ -176,8 +191,9 @@ LL |     b'a' == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b'a'.eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b'a' == b.to_ascii_lowercase();
+LL +     b'a'.eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:50:5
@@ -187,8 +203,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:51:5
@@ -198,8 +215,9 @@ LL |     a.to_uppercase().to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.to_uppercase().eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_uppercase().to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.to_uppercase().eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:52:5
@@ -209,8 +227,9 @@ LL |     a.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == "a";
+LL +     a.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:53:5
@@ -220,8 +239,9 @@ LL |     "a" == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == b.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:56:5
@@ -231,8 +251,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:57:5
@@ -242,8 +263,9 @@ LL |     a.to_uppercase().to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.to_uppercase().eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_uppercase().to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.to_uppercase().eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:58:5
@@ -253,8 +275,9 @@ LL |     a.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == "a";
+LL +     a.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:59:5
@@ -264,8 +287,9 @@ LL |     "a" == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == b.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:62:5
@@ -275,8 +299,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:63:5
@@ -286,8 +311,9 @@ LL |     a.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == "a";
+LL +     a.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:64:5
@@ -297,8 +323,9 @@ LL |     "a" == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == b.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:67:5
@@ -308,8 +335,9 @@ LL |     a.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == "a";
+LL +     a.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:68:5
@@ -319,8 +347,9 @@ LL |     "a" == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == b.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:71:5
@@ -330,8 +359,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:72:5
@@ -341,8 +371,9 @@ LL |     a.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == "a";
+LL +     a.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:73:5
@@ -352,8 +383,9 @@ LL |     "a" == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == b.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:75:5
@@ -363,8 +395,9 @@ LL |     b.to_ascii_lowercase() == a.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b.eq_ignore_ascii_case(&a);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b.to_ascii_lowercase() == a.to_ascii_lowercase();
+LL +     b.eq_ignore_ascii_case(&a);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:76:5
@@ -374,8 +407,9 @@ LL |     b.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b.to_ascii_lowercase() == "a";
+LL +     b.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:77:5
@@ -385,8 +419,9 @@ LL |     "a" == a.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(&a);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == a.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(&a);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:80:5
@@ -396,8 +431,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:81:5
@@ -407,8 +443,9 @@ LL |     a.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == "a";
+LL +     a.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:82:5
@@ -418,8 +455,9 @@ LL |     "a" == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == b.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:84:5
@@ -429,8 +467,9 @@ LL |     b.to_ascii_lowercase() == a.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b.eq_ignore_ascii_case(&a);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b.to_ascii_lowercase() == a.to_ascii_lowercase();
+LL +     b.eq_ignore_ascii_case(&a);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:85:5
@@ -440,8 +479,9 @@ LL |     b.to_ascii_lowercase() == "a";
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b.eq_ignore_ascii_case("a");
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b.to_ascii_lowercase() == "a";
+LL +     b.eq_ignore_ascii_case("a");
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:86:5
@@ -451,8 +491,9 @@ LL |     "a" == a.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     "a".eq_ignore_ascii_case(&a);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "a" == a.to_ascii_lowercase();
+LL +     "a".eq_ignore_ascii_case(&a);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:89:5
@@ -462,8 +503,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:92:5
@@ -473,8 +515,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(&b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(&b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:95:5
@@ -484,8 +527,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:96:5
@@ -495,8 +539,9 @@ LL |     b.to_ascii_lowercase() == a.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b.eq_ignore_ascii_case(&a);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b.to_ascii_lowercase() == a.to_ascii_lowercase();
+LL +     b.eq_ignore_ascii_case(&a);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:99:5
@@ -506,8 +551,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:102:5
@@ -517,8 +563,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:105:5
@@ -528,8 +575,9 @@ LL |     a.to_ascii_lowercase() == b.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     a.eq_ignore_ascii_case(b);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     a.to_ascii_lowercase() == b.to_ascii_lowercase();
+LL +     a.eq_ignore_ascii_case(b);
+   |
 
 error: manual case-insensitive ASCII comparison
   --> tests/ui/manual_ignore_case_cmp.rs:106:5
@@ -539,8 +587,9 @@ LL |     b.to_ascii_lowercase() == a.to_ascii_lowercase();
    |
 help: consider using `.eq_ignore_ascii_case()` instead
    |
-LL |     b.eq_ignore_ascii_case(a);
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     b.to_ascii_lowercase() == a.to_ascii_lowercase();
+LL +     b.eq_ignore_ascii_case(a);
+   |
 
 error: aborting due to 49 previous errors
 
diff --git a/src/tools/clippy/tests/ui/manual_is_ascii_check.stderr b/src/tools/clippy/tests/ui/manual_is_ascii_check.stderr
index 92d93208006..7b3f0c938b0 100644
--- a/src/tools/clippy/tests/ui/manual_is_ascii_check.stderr
+++ b/src/tools/clippy/tests/ui/manual_is_ascii_check.stderr
@@ -153,8 +153,9 @@ LL |     take_while(|c| ('A'..='Z').contains(&c));
    |
 help: try
    |
-LL |     take_while(|c: char| c.is_ascii_uppercase());
-   |                 ~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~
+LL -     take_while(|c| ('A'..='Z').contains(&c));
+LL +     take_while(|c: char| c.is_ascii_uppercase());
+   |
 
 error: manual check for common ascii range
   --> tests/ui/manual_is_ascii_check.rs:82:20
@@ -164,8 +165,9 @@ LL |     take_while(|c| (b'A'..=b'Z').contains(&c));
    |
 help: try
    |
-LL |     take_while(|c: u8| c.is_ascii_uppercase());
-   |                 ~~~~~  ~~~~~~~~~~~~~~~~~~~~~~
+LL -     take_while(|c| (b'A'..=b'Z').contains(&c));
+LL +     take_while(|c: u8| c.is_ascii_uppercase());
+   |
 
 error: manual check for common ascii range
   --> tests/ui/manual_is_ascii_check.rs:83:26
@@ -181,8 +183,9 @@ LL |     let digits: Vec<&char> = ['1', 'A'].iter().take_while(|c| ('0'..='9').c
    |
 help: try
    |
-LL |     let digits: Vec<&char> = ['1', 'A'].iter().take_while(|c: &&char| c.is_ascii_digit()).collect();
-   |                                                            ~~~~~~~~~  ~~~~~~~~~~~~~~~~~~
+LL -     let digits: Vec<&char> = ['1', 'A'].iter().take_while(|c| ('0'..='9').contains(c)).collect();
+LL +     let digits: Vec<&char> = ['1', 'A'].iter().take_while(|c: &&char| c.is_ascii_digit()).collect();
+   |
 
 error: manual check for common ascii range
   --> tests/ui/manual_is_ascii_check.rs:88:71
@@ -192,8 +195,9 @@ LL |     let digits: Vec<&mut char> = ['1', 'A'].iter_mut().take_while(|c| ('0'.
    |
 help: try
    |
-LL |     let digits: Vec<&mut char> = ['1', 'A'].iter_mut().take_while(|c: &&mut char| c.is_ascii_digit()).collect();
-   |                                                                    ~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~
+LL -     let digits: Vec<&mut char> = ['1', 'A'].iter_mut().take_while(|c| ('0'..='9').contains(c)).collect();
+LL +     let digits: Vec<&mut char> = ['1', 'A'].iter_mut().take_while(|c: &&mut char| c.is_ascii_digit()).collect();
+   |
 
 error: aborting due to 29 previous errors
 
diff --git a/src/tools/clippy/tests/ui/map_all_any_identity.stderr b/src/tools/clippy/tests/ui/map_all_any_identity.stderr
index 98fdcc2a939..39df2a3d961 100644
--- a/src/tools/clippy/tests/ui/map_all_any_identity.stderr
+++ b/src/tools/clippy/tests/ui/map_all_any_identity.stderr
@@ -8,8 +8,9 @@ LL |     let _ = ["foo"].into_iter().map(|s| s == "foo").any(|a| a);
    = help: to override `-D warnings` add `#[allow(clippy::map_all_any_identity)]`
 help: use `.any(...)` instead
    |
-LL |     let _ = ["foo"].into_iter().any(|s| s == "foo");
-   |                                 ~~~~~~~~~~~~~~~~~~~
+LL -     let _ = ["foo"].into_iter().map(|s| s == "foo").any(|a| a);
+LL +     let _ = ["foo"].into_iter().any(|s| s == "foo");
+   |
 
 error: usage of `.map(...).all(identity)`
   --> tests/ui/map_all_any_identity.rs:6:33
@@ -19,8 +20,9 @@ LL |     let _ = ["foo"].into_iter().map(|s| s == "foo").all(std::convert::ident
    |
 help: use `.all(...)` instead
    |
-LL |     let _ = ["foo"].into_iter().all(|s| s == "foo");
-   |                                 ~~~~~~~~~~~~~~~~~~~
+LL -     let _ = ["foo"].into_iter().map(|s| s == "foo").all(std::convert::identity);
+LL +     let _ = ["foo"].into_iter().all(|s| s == "foo");
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges.stderr b/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges.stderr
index 0b56c6d9521..840515f95df 100644
--- a/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges.stderr
+++ b/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges.stderr
@@ -68,8 +68,9 @@ LL |     (0..10).map(|_| 3);
    |
 help: remove the explicit range and use `repeat_n`
    |
-LL |     std::iter::repeat_n(3, 10);
-   |     ~~~~~~~~~~~~~~~~~~~ ~~~~~
+LL -     (0..10).map(|_| 3);
+LL +     std::iter::repeat_n(3, 10);
+   |
 
 error: map of a closure that does not depend on its parameter over a range
   --> tests/ui/map_with_unused_argument_over_ranges.rs:31:5
@@ -216,8 +217,9 @@ LL |     (0..10).map(|_| 3);
    |
 help: remove the explicit range and use `repeat` and `take`
    |
-LL |     std::iter::repeat(3).take(10);
-   |     ~~~~~~~~~~~~~~~~~ ~ +++++++++
+LL -     (0..10).map(|_| 3);
+LL +     std::iter::repeat(3).take(10);
+   |
 
 error: aborting due to 18 previous errors
 
diff --git a/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges_nostd.stderr b/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges_nostd.stderr
index d47f3d09175..975ded83560 100644
--- a/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges_nostd.stderr
+++ b/src/tools/clippy/tests/ui/map_with_unused_argument_over_ranges_nostd.stderr
@@ -8,8 +8,9 @@ LL |     let _: Vec<_> = (0..10).map(|_| 3 + 1).collect();
    = help: to override `-D warnings` add `#[allow(clippy::map_with_unused_argument_over_ranges)]`
 help: remove the explicit range and use `repeat_n`
    |
-LL |     let _: Vec<_> = core::iter::repeat_n(3 + 1, 10).collect();
-   |                     ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
+LL -     let _: Vec<_> = (0..10).map(|_| 3 + 1).collect();
+LL +     let _: Vec<_> = core::iter::repeat_n(3 + 1, 10).collect();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/match_result_ok.stderr b/src/tools/clippy/tests/ui/match_result_ok.stderr
index b5b91cbe553..18b23bd7845 100644
--- a/src/tools/clippy/tests/ui/match_result_ok.stderr
+++ b/src/tools/clippy/tests/ui/match_result_ok.stderr
@@ -8,8 +8,9 @@ LL |     if let Some(y) = x.parse().ok() { y } else { 0 }
    = help: to override `-D warnings` add `#[allow(clippy::match_result_ok)]`
 help: consider matching on `Ok(y)` and removing the call to `ok` instead
    |
-LL |     if let Ok(y) = x.parse() { y } else { 0 }
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if let Some(y) = x.parse().ok() { y } else { 0 }
+LL +     if let Ok(y) = x.parse() { y } else { 0 }
+   |
 
 error: matching on `Some` with `ok()` is redundant
   --> tests/ui/match_result_ok.rs:23:9
@@ -19,8 +20,9 @@ LL |         if let Some(y) = x   .   parse()   .   ok   ()    {
    |
 help: consider matching on `Ok(y)` and removing the call to `ok` instead
    |
-LL |         if let Ok(y) = x   .   parse()    {
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         if let Some(y) = x   .   parse()   .   ok   ()    {
+LL +         if let Ok(y) = x   .   parse()    {
+   |
 
 error: matching on `Some` with `ok()` is redundant
   --> tests/ui/match_result_ok.rs:49:5
@@ -30,8 +32,9 @@ LL |     while let Some(a) = wat.next().ok() {
    |
 help: consider matching on `Ok(a)` and removing the call to `ok` instead
    |
-LL |     while let Ok(a) = wat.next() {
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     while let Some(a) = wat.next().ok() {
+LL +     while let Ok(a) = wat.next() {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/src/tools/clippy/tests/ui/match_str_case_mismatch.stderr b/src/tools/clippy/tests/ui/match_str_case_mismatch.stderr
index 67e9ccaf6d2..5b14fd13a53 100644
--- a/src/tools/clippy/tests/ui/match_str_case_mismatch.stderr
+++ b/src/tools/clippy/tests/ui/match_str_case_mismatch.stderr
@@ -8,8 +8,9 @@ LL |         "Bar" => {},
    = help: to override `-D warnings` add `#[allow(clippy::match_str_case_mismatch)]`
 help: consider changing the case of this arm to respect `to_ascii_lowercase`
    |
-LL |         "bar" => {},
-   |         ~~~~~
+LL -         "Bar" => {},
+LL +         "bar" => {},
+   |
 
 error: this `match` arm has a differing case than its expression
   --> tests/ui/match_str_case_mismatch.rs:122:9
@@ -19,8 +20,9 @@ LL |         "~!@#$%^&*()-_=+Foo" => {},
    |
 help: consider changing the case of this arm to respect `to_ascii_lowercase` (notice the capitalization difference)
    |
-LL |         "~!@#$%^&*()-_=+foo" => {},
-   |         ~~~~~~~~~~~~~~~~~~~~
+LL -         "~!@#$%^&*()-_=+Foo" => {},
+LL +         "~!@#$%^&*()-_=+foo" => {},
+   |
 
 error: this `match` arm has a differing case than its expression
   --> tests/ui/match_str_case_mismatch.rs:134:9
@@ -30,8 +32,9 @@ LL |         "Воды" => {},
    |
 help: consider changing the case of this arm to respect `to_lowercase`
    |
-LL |         "воды" => {},
-   |         ~~~~~~
+LL -         "Воды" => {},
+LL +         "воды" => {},
+   |
 
 error: this `match` arm has a differing case than its expression
   --> tests/ui/match_str_case_mismatch.rs:145:9
@@ -41,8 +44,9 @@ LL |         "barDz" => {},
    |
 help: consider changing the case of this arm to respect `to_lowercase`
    |
-LL |         "bardz" => {},
-   |         ~~~~~~
+LL -         "barDz" => {},
+LL +         "bardz" => {},
+   |
 
 error: this `match` arm has a differing case than its expression
   --> tests/ui/match_str_case_mismatch.rs:155:9
@@ -52,8 +56,9 @@ LL |         "bARʁ" => {},
    |
 help: consider changing the case of this arm to respect `to_uppercase`
    |
-LL |         "BARʁ" => {},
-   |         ~~~~~~
+LL -         "bARʁ" => {},
+LL +         "BARʁ" => {},
+   |
 
 error: this `match` arm has a differing case than its expression
   --> tests/ui/match_str_case_mismatch.rs:165:9
@@ -63,8 +68,9 @@ LL |         "Bar" => {},
    |
 help: consider changing the case of this arm to respect `to_ascii_lowercase`
    |
-LL |         "bar" => {},
-   |         ~~~~~
+LL -         "Bar" => {},
+LL +         "bar" => {},
+   |
 
 error: this `match` arm has a differing case than its expression
   --> tests/ui/match_str_case_mismatch.rs:180:9
@@ -74,8 +80,9 @@ LL |         "bAR" => {},
    |
 help: consider changing the case of this arm to respect `to_ascii_uppercase`
    |
-LL |         "BAR" => {},
-   |         ~~~~~
+LL -         "bAR" => {},
+LL +         "BAR" => {},
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/src/tools/clippy/tests/ui/needless_borrow_pat.stderr b/src/tools/clippy/tests/ui/needless_borrow_pat.stderr
index 2ad69449039..035376cabaf 100644
--- a/src/tools/clippy/tests/ui/needless_borrow_pat.stderr
+++ b/src/tools/clippy/tests/ui/needless_borrow_pat.stderr
@@ -15,8 +15,9 @@ LL |         Some(ref x) => *x,
    |
 help: try
    |
-LL |         Some(x) => x,
-   |              ~     ~
+LL -         Some(ref x) => *x,
+LL +         Some(x) => x,
+   |
 
 error: this pattern creates a reference to a reference
   --> tests/ui/needless_borrow_pat.rs:74:14
@@ -71,8 +72,9 @@ LL |         E::A(ref x) | E::B(ref x) => *x,
    |
 help: try
    |
-LL |         E::A(x) | E::B(x) => x,
-   |              ~         ~     ~
+LL -         E::A(ref x) | E::B(ref x) => *x,
+LL +         E::A(x) | E::B(x) => x,
+   |
 
 error: this pattern creates a reference to a reference
   --> tests/ui/needless_borrow_pat.rs:126:21
diff --git a/src/tools/clippy/tests/ui/needless_for_each_unfixable.stderr b/src/tools/clippy/tests/ui/needless_for_each_unfixable.stderr
index 682140a1dfd..722016b1212 100644
--- a/src/tools/clippy/tests/ui/needless_for_each_unfixable.stderr
+++ b/src/tools/clippy/tests/ui/needless_for_each_unfixable.stderr
@@ -25,8 +25,9 @@ LL +     }
    |
 help: ...and replace `return` with `continue`
    |
-LL |             continue;
-   |             ~~~~~~~~
+LL -             return;
+LL +             continue;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/needless_pass_by_value.stderr b/src/tools/clippy/tests/ui/needless_pass_by_value.stderr
index 2587d3f8c52..2c90da51252 100644
--- a/src/tools/clippy/tests/ui/needless_pass_by_value.stderr
+++ b/src/tools/clippy/tests/ui/needless_pass_by_value.stderr
@@ -63,12 +63,14 @@ LL | fn issue_2114(s: String, t: String, u: Vec<i32>, v: Vec<i32>) {
    |
 help: consider changing the type to
    |
-LL | fn issue_2114(s: String, t: &str, u: Vec<i32>, v: Vec<i32>) {
-   |                             ~~~~
+LL - fn issue_2114(s: String, t: String, u: Vec<i32>, v: Vec<i32>) {
+LL + fn issue_2114(s: String, t: &str, u: Vec<i32>, v: Vec<i32>) {
+   |
 help: change `t.clone()` to
    |
-LL |     let _ = t.to_string();
-   |             ~~~~~~~~~~~~~
+LL -     let _ = t.clone();
+LL +     let _ = t.to_string();
+   |
 
 error: this argument is passed by value, but not consumed in the function body
   --> tests/ui/needless_pass_by_value.rs:91:40
@@ -84,12 +86,14 @@ LL | fn issue_2114(s: String, t: String, u: Vec<i32>, v: Vec<i32>) {
    |
 help: consider changing the type to
    |
-LL | fn issue_2114(s: String, t: String, u: Vec<i32>, v: &[i32]) {
-   |                                                     ~~~~~~
+LL - fn issue_2114(s: String, t: String, u: Vec<i32>, v: Vec<i32>) {
+LL + fn issue_2114(s: String, t: String, u: Vec<i32>, v: &[i32]) {
+   |
 help: change `v.clone()` to
    |
-LL |     let _ = v.to_owned();
-   |             ~~~~~~~~~~~~
+LL -     let _ = v.clone();
+LL +     let _ = v.to_owned();
+   |
 
 error: this argument is passed by value, but not consumed in the function body
   --> tests/ui/needless_pass_by_value.rs:108:12
diff --git a/src/tools/clippy/tests/ui/needless_range_loop.stderr b/src/tools/clippy/tests/ui/needless_range_loop.stderr
index 503d796e5e8..831b8511e43 100644
--- a/src/tools/clippy/tests/ui/needless_range_loop.stderr
+++ b/src/tools/clippy/tests/ui/needless_range_loop.stderr
@@ -8,8 +8,9 @@ LL |     for i in 0..vec.len() {
    = help: to override `-D warnings` add `#[allow(clippy::needless_range_loop)]`
 help: consider using an iterator
    |
-LL |     for <item> in &vec {
-   |         ~~~~~~    ~~~~
+LL -     for i in 0..vec.len() {
+LL +     for <item> in &vec {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop.rs:27:14
@@ -19,8 +20,9 @@ LL |     for i in 0..vec.len() {
    |
 help: consider using an iterator
    |
-LL |     for <item> in &vec {
-   |         ~~~~~~    ~~~~
+LL -     for i in 0..vec.len() {
+LL +     for <item> in &vec {
+   |
 
 error: the loop variable `j` is only used to index `STATIC`
   --> tests/ui/needless_range_loop.rs:33:14
@@ -30,8 +32,9 @@ LL |     for j in 0..4 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in &STATIC {
-   |         ~~~~~~    ~~~~~~~
+LL -     for j in 0..4 {
+LL +     for <item> in &STATIC {
+   |
 
 error: the loop variable `j` is only used to index `CONST`
   --> tests/ui/needless_range_loop.rs:38:14
@@ -41,8 +44,9 @@ LL |     for j in 0..4 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in &CONST {
-   |         ~~~~~~    ~~~~~~
+LL -     for j in 0..4 {
+LL +     for <item> in &CONST {
+   |
 
 error: the loop variable `i` is used to index `vec`
   --> tests/ui/needless_range_loop.rs:43:14
@@ -52,8 +56,9 @@ LL |     for i in 0..vec.len() {
    |
 help: consider using an iterator and enumerate()
    |
-LL |     for (i, <item>) in vec.iter().enumerate() {
-   |         ~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 0..vec.len() {
+LL +     for (i, <item>) in vec.iter().enumerate() {
+   |
 
 error: the loop variable `i` is only used to index `vec2`
   --> tests/ui/needless_range_loop.rs:52:14
@@ -63,8 +68,9 @@ LL |     for i in 0..vec.len() {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec2.iter().take(vec.len()) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 0..vec.len() {
+LL +     for <item> in vec2.iter().take(vec.len()) {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop.rs:57:14
@@ -74,8 +80,9 @@ LL |     for i in 5..vec.len() {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter().skip(5) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~
+LL -     for i in 5..vec.len() {
+LL +     for <item> in vec.iter().skip(5) {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop.rs:62:14
@@ -85,8 +92,9 @@ LL |     for i in 0..MAX_LEN {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter().take(MAX_LEN) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 0..MAX_LEN {
+LL +     for <item> in vec.iter().take(MAX_LEN) {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop.rs:67:14
@@ -96,8 +104,9 @@ LL |     for i in 0..=MAX_LEN {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter().take(MAX_LEN + 1) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 0..=MAX_LEN {
+LL +     for <item> in vec.iter().take(MAX_LEN + 1) {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop.rs:72:14
@@ -107,8 +116,9 @@ LL |     for i in 5..10 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter().take(10).skip(5) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 5..10 {
+LL +     for <item> in vec.iter().take(10).skip(5) {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop.rs:77:14
@@ -118,8 +128,9 @@ LL |     for i in 5..=10 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter().take(10 + 1).skip(5) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 5..=10 {
+LL +     for <item> in vec.iter().take(10 + 1).skip(5) {
+   |
 
 error: the loop variable `i` is used to index `vec`
   --> tests/ui/needless_range_loop.rs:82:14
@@ -129,8 +140,9 @@ LL |     for i in 5..vec.len() {
    |
 help: consider using an iterator and enumerate()
    |
-LL |     for (i, <item>) in vec.iter().enumerate().skip(5) {
-   |         ~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 5..vec.len() {
+LL +     for (i, <item>) in vec.iter().enumerate().skip(5) {
+   |
 
 error: the loop variable `i` is used to index `vec`
   --> tests/ui/needless_range_loop.rs:87:14
@@ -140,8 +152,9 @@ LL |     for i in 5..10 {
    |
 help: consider using an iterator and enumerate()
    |
-LL |     for (i, <item>) in vec.iter().enumerate().take(10).skip(5) {
-   |         ~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 5..10 {
+LL +     for (i, <item>) in vec.iter().enumerate().take(10).skip(5) {
+   |
 
 error: the loop variable `i` is used to index `vec`
   --> tests/ui/needless_range_loop.rs:93:14
@@ -151,8 +164,9 @@ LL |     for i in 0..vec.len() {
    |
 help: consider using an iterator and enumerate()
    |
-LL |     for (i, <item>) in vec.iter_mut().enumerate() {
-   |         ~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 0..vec.len() {
+LL +     for (i, <item>) in vec.iter_mut().enumerate() {
+   |
 
 error: aborting due to 14 previous errors
 
diff --git a/src/tools/clippy/tests/ui/needless_range_loop2.stderr b/src/tools/clippy/tests/ui/needless_range_loop2.stderr
index 353f30b1b26..f37e1f2872d 100644
--- a/src/tools/clippy/tests/ui/needless_range_loop2.stderr
+++ b/src/tools/clippy/tests/ui/needless_range_loop2.stderr
@@ -8,8 +8,9 @@ LL |     for i in 3..10 {
    = help: to override `-D warnings` add `#[allow(clippy::needless_range_loop)]`
 help: consider using an iterator
    |
-LL |     for <item> in ns.iter().take(10).skip(3) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in 3..10 {
+LL +     for <item> in ns.iter().take(10).skip(3) {
+   |
 
 error: the loop variable `i` is only used to index `ms`
   --> tests/ui/needless_range_loop2.rs:34:14
@@ -19,8 +20,9 @@ LL |     for i in 0..ms.len() {
    |
 help: consider using an iterator
    |
-LL |     for <item> in &mut ms {
-   |         ~~~~~~    ~~~~~~~
+LL -     for i in 0..ms.len() {
+LL +     for <item> in &mut ms {
+   |
 
 error: the loop variable `i` is only used to index `ms`
   --> tests/ui/needless_range_loop2.rs:41:14
@@ -30,8 +32,9 @@ LL |     for i in 0..ms.len() {
    |
 help: consider using an iterator
    |
-LL |     for <item> in &mut ms {
-   |         ~~~~~~    ~~~~~~~
+LL -     for i in 0..ms.len() {
+LL +     for <item> in &mut ms {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop2.rs:66:14
@@ -41,8 +44,9 @@ LL |     for i in x..x + 4 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter_mut().skip(x).take(4) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in x..x + 4 {
+LL +     for <item> in vec.iter_mut().skip(x).take(4) {
+   |
 
 error: the loop variable `i` is only used to index `vec`
   --> tests/ui/needless_range_loop2.rs:74:14
@@ -52,8 +56,9 @@ LL |     for i in x..=x + 4 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in vec.iter_mut().skip(x).take(4 + 1) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in x..=x + 4 {
+LL +     for <item> in vec.iter_mut().skip(x).take(4 + 1) {
+   |
 
 error: the loop variable `i` is only used to index `arr`
   --> tests/ui/needless_range_loop2.rs:81:14
@@ -63,8 +68,9 @@ LL |     for i in 0..3 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in &arr {
-   |         ~~~~~~    ~~~~
+LL -     for i in 0..3 {
+LL +     for <item> in &arr {
+   |
 
 error: the loop variable `i` is only used to index `arr`
   --> tests/ui/needless_range_loop2.rs:86:14
@@ -74,8 +80,9 @@ LL |     for i in 0..2 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in arr.iter().take(2) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~
+LL -     for i in 0..2 {
+LL +     for <item> in arr.iter().take(2) {
+   |
 
 error: the loop variable `i` is only used to index `arr`
   --> tests/ui/needless_range_loop2.rs:91:14
@@ -85,8 +92,9 @@ LL |     for i in 1..3 {
    |
 help: consider using an iterator
    |
-LL |     for <item> in arr.iter().skip(1) {
-   |         ~~~~~~    ~~~~~~~~~~~~~~~~~~
+LL -     for i in 1..3 {
+LL +     for <item> in arr.iter().skip(1) {
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/src/tools/clippy/tests/ui/needless_return.stderr b/src/tools/clippy/tests/ui/needless_return.stderr
index d3c2a6badc0..8d8b5b9e713 100644
--- a/src/tools/clippy/tests/ui/needless_return.stderr
+++ b/src/tools/clippy/tests/ui/needless_return.stderr
@@ -80,8 +80,9 @@ LL |         true => return false,
    |
 help: remove `return`
    |
-LL |         true => false,
-   |                 ~~~~~
+LL -         true => return false,
+LL +         true => false,
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:58:13
@@ -115,8 +116,9 @@ LL |     let _ = || return true;
    |
 help: remove `return`
    |
-LL |     let _ = || true;
-   |                ~~~~
+LL -     let _ = || return true;
+LL +     let _ = || true;
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:71:5
@@ -183,8 +185,9 @@ LL |         _ => return,
    |
 help: replace `return` with a unit value
    |
-LL |         _ => (),
-   |              ~~
+LL -         _ => return,
+LL +         _ => (),
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:97:24
@@ -209,8 +212,9 @@ LL |         _ => return,
    |
 help: replace `return` with a unit value
    |
-LL |         _ => (),
-   |              ~~
+LL -         _ => return,
+LL +         _ => (),
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:113:9
@@ -244,8 +248,9 @@ LL |         bar.unwrap_or_else(|_| return)
    |
 help: replace `return` with an empty block
    |
-LL |         bar.unwrap_or_else(|_| {})
-   |                                ~~
+LL -         bar.unwrap_or_else(|_| return)
+LL +         bar.unwrap_or_else(|_| {})
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:141:21
@@ -270,8 +275,9 @@ LL |         let _ = || return;
    |
 help: replace `return` with an empty block
    |
-LL |         let _ = || {};
-   |                    ~~
+LL -         let _ = || return;
+LL +         let _ = || {};
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:150:32
@@ -281,8 +287,9 @@ LL |         res.unwrap_or_else(|_| return Foo)
    |
 help: remove `return`
    |
-LL |         res.unwrap_or_else(|_| Foo)
-   |                                ~~~
+LL -         res.unwrap_or_else(|_| return Foo)
+LL +         res.unwrap_or_else(|_| Foo)
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:159:5
@@ -340,8 +347,9 @@ LL |         true => return false,
    |
 help: remove `return`
    |
-LL |         true => false,
-   |                 ~~~~~
+LL -         true => return false,
+LL +         true => false,
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:178:13
@@ -375,8 +383,9 @@ LL |     let _ = || return true;
    |
 help: remove `return`
    |
-LL |     let _ = || true;
-   |                ~~~~
+LL -     let _ = || return true;
+LL +     let _ = || true;
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:191:5
@@ -443,8 +452,9 @@ LL |         _ => return,
    |
 help: replace `return` with a unit value
    |
-LL |         _ => (),
-   |              ~~
+LL -         _ => return,
+LL +         _ => (),
+   |
 
 error: unneeded `return` statement
   --> tests/ui/needless_return.rs:222:9
diff --git a/src/tools/clippy/tests/ui/never_loop.stderr b/src/tools/clippy/tests/ui/never_loop.stderr
index dab3488af10..203e3325822 100644
--- a/src/tools/clippy/tests/ui/never_loop.stderr
+++ b/src/tools/clippy/tests/ui/never_loop.stderr
@@ -77,8 +77,9 @@ LL | |     }
    |
 help: if you need the first element of the iterator, try writing
    |
-LL |     if let Some(x) = (0..10).next() {
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for x in 0..10 {
+LL +     if let Some(x) = (0..10).next() {
+   |
 
 error: this loop never actually loops
   --> tests/ui/never_loop.rs:167:5
@@ -145,8 +146,9 @@ LL | |             }
    |
 help: if you need the first element of the iterator, try writing
    |
-LL |             if let Some(_) = (0..20).next() {
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -             for _ in 0..20 {
+LL +             if let Some(_) = (0..20).next() {
+   |
 
 error: this loop never actually loops
   --> tests/ui/never_loop.rs:378:13
diff --git a/src/tools/clippy/tests/ui/non_canonical_partial_ord_impl.stderr b/src/tools/clippy/tests/ui/non_canonical_partial_ord_impl.stderr
index a15379c5b1a..9f0c2ec4301 100644
--- a/src/tools/clippy/tests/ui/non_canonical_partial_ord_impl.stderr
+++ b/src/tools/clippy/tests/ui/non_canonical_partial_ord_impl.stderr
@@ -25,8 +25,9 @@ LL | | }
    |
 help: change this to
    |
-LL |     fn partial_cmp(&self, other: &Self) -> Option<Ordering> { Some(self.cmp(other)) }
-   |                           ~~~~~                             ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn partial_cmp(&self, _: &Self) -> Option<Ordering> {
+LL +     fn partial_cmp(&self, other: &Self) -> Option<Ordering> { Some(self.cmp(other)) }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.stderr b/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.stderr
index f956f4b8d52..333052ae1c1 100644
--- a/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.stderr
+++ b/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.stderr
@@ -8,8 +8,9 @@ LL | static LAZY_FOO: Lazy<String> = Lazy::new(|| "foo".to_uppercase());
    = help: to override `-D warnings` add `#[allow(clippy::non_std_lazy_statics)]`
 help: use `std::sync::LazyLock` instead
    |
-LL | static LAZY_FOO: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "foo".to_uppercase());
-   |                  ~~~~~~~~~~~~~~~~~~~           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - static LAZY_FOO: Lazy<String> = Lazy::new(|| "foo".to_uppercase());
+LL + static LAZY_FOO: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "foo".to_uppercase());
+   |
 
 error: this type has been superceded by `LazyLock` in the standard library
   --> tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.rs:13:18
@@ -19,8 +20,9 @@ LL | static LAZY_BAR: Lazy<String> = Lazy::new(|| {
    |
 help: use `std::sync::LazyLock` instead
    |
-LL | static LAZY_BAR: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| {
-   |                  ~~~~~~~~~~~~~~~~~~~           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - static LAZY_BAR: Lazy<String> = Lazy::new(|| {
+LL + static LAZY_BAR: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| {
+   |
 
 error: this type has been superceded by `LazyLock` in the standard library
   --> tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.rs:18:18
@@ -30,8 +32,9 @@ LL | static LAZY_BAZ: Lazy<String> = { Lazy::new(|| "baz".to_uppercase()) };
    |
 help: use `std::sync::LazyLock` instead
    |
-LL | static LAZY_BAZ: std::sync::LazyLock<String> = { std::sync::LazyLock::new(|| "baz".to_uppercase()) };
-   |                  ~~~~~~~~~~~~~~~~~~~             ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - static LAZY_BAZ: Lazy<String> = { Lazy::new(|| "baz".to_uppercase()) };
+LL + static LAZY_BAZ: std::sync::LazyLock<String> = { std::sync::LazyLock::new(|| "baz".to_uppercase()) };
+   |
 
 error: this type has been superceded by `LazyLock` in the standard library
   --> tests/ui/non_std_lazy_static/non_std_lazy_static_fixable.rs:20:18
diff --git a/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.stderr b/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.stderr
index 66dc435f982..216190ae4ca 100644
--- a/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.stderr
+++ b/src/tools/clippy/tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.stderr
@@ -37,8 +37,9 @@ LL |     static LAZY_FOO: Lazy<String> = Lazy::new(|| "foo".to_uppercase());
    |
 help: use `std::sync::LazyLock` instead
    |
-LL |     static LAZY_FOO: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "foo".to_uppercase());
-   |                      ~~~~~~~~~~~~~~~~~~~           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     static LAZY_FOO: Lazy<String> = Lazy::new(|| "foo".to_uppercase());
+LL +     static LAZY_FOO: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "foo".to_uppercase());
+   |
 
 error: this type has been superceded by `LazyLock` in the standard library
   --> tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.rs:13:26
@@ -48,8 +49,9 @@ LL |     static mut LAZY_BAR: Lazy<String> = Lazy::new(|| "bar".to_uppercase());
    |
 help: use `std::sync::LazyLock` instead
    |
-LL |     static mut LAZY_BAR: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "bar".to_uppercase());
-   |                          ~~~~~~~~~~~~~~~~~~~           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     static mut LAZY_BAR: Lazy<String> = Lazy::new(|| "bar".to_uppercase());
+LL +     static mut LAZY_BAR: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "bar".to_uppercase());
+   |
 
 error: this type has been superceded by `LazyLock` in the standard library
   --> tests/ui/non_std_lazy_static/non_std_lazy_static_unfixable.rs:15:26
@@ -59,8 +61,9 @@ LL |     static mut LAZY_BAZ: Lazy<String> = Lazy::new(|| "baz".to_uppercase());
    |
 help: use `std::sync::LazyLock` instead
    |
-LL |     static mut LAZY_BAZ: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "baz".to_uppercase());
-   |                          ~~~~~~~~~~~~~~~~~~~           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     static mut LAZY_BAZ: Lazy<String> = Lazy::new(|| "baz".to_uppercase());
+LL +     static mut LAZY_BAZ: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| "baz".to_uppercase());
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/src/tools/clippy/tests/ui/nonminimal_bool.stderr b/src/tools/clippy/tests/ui/nonminimal_bool.stderr
index 578f918f013..56d6eb10ac0 100644
--- a/src/tools/clippy/tests/ui/nonminimal_bool.stderr
+++ b/src/tools/clippy/tests/ui/nonminimal_bool.stderr
@@ -51,10 +51,12 @@ LL |     let _ = a == b && c == 5 && a == b;
    |
 help: try
    |
-LL |     let _ = !(a != b || c != 5);
-   |             ~~~~~~~~~~~~~~~~~~~
-LL |     let _ = a == b && c == 5;
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = a == b && c == 5 && a == b;
+LL +     let _ = !(a != b || c != 5);
+   |
+LL -     let _ = a == b && c == 5 && a == b;
+LL +     let _ = a == b && c == 5;
+   |
 
 error: this boolean expression can be simplified
   --> tests/ui/nonminimal_bool.rs:44:13
@@ -64,10 +66,12 @@ LL |     let _ = a == b || c == 5 || a == b;
    |
 help: try
    |
-LL |     let _ = !(a != b && c != 5);
-   |             ~~~~~~~~~~~~~~~~~~~
-LL |     let _ = a == b || c == 5;
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = a == b || c == 5 || a == b;
+LL +     let _ = !(a != b && c != 5);
+   |
+LL -     let _ = a == b || c == 5 || a == b;
+LL +     let _ = a == b || c == 5;
+   |
 
 error: this boolean expression can be simplified
   --> tests/ui/nonminimal_bool.rs:46:13
@@ -77,10 +81,12 @@ LL |     let _ = a == b && c == 5 && b == a;
    |
 help: try
    |
-LL |     let _ = !(a != b || c != 5);
-   |             ~~~~~~~~~~~~~~~~~~~
-LL |     let _ = a == b && c == 5;
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = a == b && c == 5 && b == a;
+LL +     let _ = !(a != b || c != 5);
+   |
+LL -     let _ = a == b && c == 5 && b == a;
+LL +     let _ = a == b && c == 5;
+   |
 
 error: this boolean expression can be simplified
   --> tests/ui/nonminimal_bool.rs:48:13
@@ -90,10 +96,12 @@ LL |     let _ = a != b || !(a != b || c == d);
    |
 help: try
    |
-LL |     let _ = !(a == b && c == d);
-   |             ~~~~~~~~~~~~~~~~~~~
-LL |     let _ = a != b || c != d;
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = a != b || !(a != b || c == d);
+LL +     let _ = !(a == b && c == d);
+   |
+LL -     let _ = a != b || !(a != b || c == d);
+LL +     let _ = a != b || c != d;
+   |
 
 error: this boolean expression can be simplified
   --> tests/ui/nonminimal_bool.rs:50:13
@@ -103,10 +111,12 @@ LL |     let _ = a != b && !(a != b && c == d);
    |
 help: try
    |
-LL |     let _ = !(a == b || c == d);
-   |             ~~~~~~~~~~~~~~~~~~~
-LL |     let _ = a != b && c != d;
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = a != b && !(a != b && c == d);
+LL +     let _ = !(a == b || c == d);
+   |
+LL -     let _ = a != b && !(a != b && c == d);
+LL +     let _ = a != b && c != d;
+   |
 
 error: this boolean expression can be simplified
   --> tests/ui/nonminimal_bool.rs:81:8
diff --git a/src/tools/clippy/tests/ui/octal_escapes.stderr b/src/tools/clippy/tests/ui/octal_escapes.stderr
index 9343ba64a30..c8a89ac8bea 100644
--- a/src/tools/clippy/tests/ui/octal_escapes.stderr
+++ b/src/tools/clippy/tests/ui/octal_escapes.stderr
@@ -9,12 +9,14 @@ LL |     let _bad1 = "\033[0m";
    = help: to override `-D warnings` add `#[allow(clippy::octal_escapes)]`
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad1 = "\x1b[0m";
-   |                  ~~~~
+LL -     let _bad1 = "\033[0m";
+LL +     let _bad1 = "\x1b[0m";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad1 = "\x0033[0m";
-   |                  ~~~~~~
+LL -     let _bad1 = "\033[0m";
+LL +     let _bad1 = "\x0033[0m";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:6:19
@@ -24,12 +26,14 @@ LL |     let _bad2 = b"\033[0m";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad2 = b"\x1b[0m";
-   |                   ~~~~
+LL -     let _bad2 = b"\033[0m";
+LL +     let _bad2 = b"\x1b[0m";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad2 = b"\x0033[0m";
-   |                   ~~~~~~
+LL -     let _bad2 = b"\033[0m";
+LL +     let _bad2 = b"\x0033[0m";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:7:20
@@ -39,12 +43,14 @@ LL |     let _bad3 = "\\\033[0m";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad3 = "\\\x1b[0m";
-   |                    ~~~~
+LL -     let _bad3 = "\\\033[0m";
+LL +     let _bad3 = "\\\x1b[0m";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad3 = "\\\x0033[0m";
-   |                    ~~~~~~
+LL -     let _bad3 = "\\\033[0m";
+LL +     let _bad3 = "\\\x0033[0m";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:9:18
@@ -54,12 +60,14 @@ LL |     let _bad4 = "\01234567";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad4 = "\x0a34567";
-   |                  ~~~~
+LL -     let _bad4 = "\01234567";
+LL +     let _bad4 = "\x0a34567";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad4 = "\x001234567";
-   |                  ~~~~~~
+LL -     let _bad4 = "\01234567";
+LL +     let _bad4 = "\x001234567";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:10:20
@@ -69,12 +77,14 @@ LL |     let _bad5 = "\0\03";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad5 = "\0\x03";
-   |                    ~~~~
+LL -     let _bad5 = "\0\03";
+LL +     let _bad5 = "\0\x03";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad5 = "\0\x0003";
-   |                    ~~~~~~
+LL -     let _bad5 = "\0\03";
+LL +     let _bad5 = "\0\x0003";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:11:23
@@ -84,12 +94,14 @@ LL |     let _bad6 = "Text-\055\077-MoreText";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad6 = "Text-\x2d\077-MoreText";
-   |                       ~~~~
+LL -     let _bad6 = "Text-\055\077-MoreText";
+LL +     let _bad6 = "Text-\x2d\077-MoreText";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad6 = "Text-\x0055\077-MoreText";
-   |                       ~~~~~~
+LL -     let _bad6 = "Text-\055\077-MoreText";
+LL +     let _bad6 = "Text-\x0055\077-MoreText";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:11:27
@@ -99,12 +111,14 @@ LL |     let _bad6 = "Text-\055\077-MoreText";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad6 = "Text-\055\x3f-MoreText";
-   |                           ~~~~
+LL -     let _bad6 = "Text-\055\077-MoreText";
+LL +     let _bad6 = "Text-\055\x3f-MoreText";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad6 = "Text-\055\x0077-MoreText";
-   |                           ~~~~~~
+LL -     let _bad6 = "Text-\055\077-MoreText";
+LL +     let _bad6 = "Text-\055\x0077-MoreText";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:14:31
@@ -114,12 +128,14 @@ LL |     let _bad7 = "EvenMoreText-\01\02-ShortEscapes";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad7 = "EvenMoreText-\x01\02-ShortEscapes";
-   |                               ~~~~
+LL -     let _bad7 = "EvenMoreText-\01\02-ShortEscapes";
+LL +     let _bad7 = "EvenMoreText-\x01\02-ShortEscapes";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad7 = "EvenMoreText-\x0001\02-ShortEscapes";
-   |                               ~~~~~~
+LL -     let _bad7 = "EvenMoreText-\01\02-ShortEscapes";
+LL +     let _bad7 = "EvenMoreText-\x0001\02-ShortEscapes";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:14:34
@@ -129,12 +145,14 @@ LL |     let _bad7 = "EvenMoreText-\01\02-ShortEscapes";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad7 = "EvenMoreText-\01\x02-ShortEscapes";
-   |                                  ~~~~
+LL -     let _bad7 = "EvenMoreText-\01\02-ShortEscapes";
+LL +     let _bad7 = "EvenMoreText-\01\x02-ShortEscapes";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad7 = "EvenMoreText-\01\x0002-ShortEscapes";
-   |                                  ~~~~~~
+LL -     let _bad7 = "EvenMoreText-\01\02-ShortEscapes";
+LL +     let _bad7 = "EvenMoreText-\01\x0002-ShortEscapes";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:17:19
@@ -144,12 +162,14 @@ LL |     let _bad8 = "锈\01锈";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad8 = "锈\x01锈";
-   |                    ~~~~
+LL -     let _bad8 = "锈\01锈";
+LL +     let _bad8 = "锈\x01锈";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad8 = "锈\x0001锈";
-   |                    ~~~~~~
+LL -     let _bad8 = "锈\01锈";
+LL +     let _bad8 = "锈\x0001锈";
+   |
 
 error: octal-looking escape in a literal
   --> tests/ui/octal_escapes.rs:18:19
@@ -159,12 +179,14 @@ LL |     let _bad9 = "锈\011锈";
    |
 help: if an octal escape is intended, use a hex escape instead
    |
-LL |     let _bad9 = "锈\x09锈";
-   |                    ~~~~
+LL -     let _bad9 = "锈\011锈";
+LL +     let _bad9 = "锈\x09锈";
+   |
 help: if a null escape is intended, disambiguate using
    |
-LL |     let _bad9 = "锈\x0011锈";
-   |                    ~~~~~~
+LL -     let _bad9 = "锈\011锈";
+LL +     let _bad9 = "锈\x0011锈";
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/src/tools/clippy/tests/ui/op_ref.stderr b/src/tools/clippy/tests/ui/op_ref.stderr
index c5b68730a8f..ad002437c0c 100644
--- a/src/tools/clippy/tests/ui/op_ref.stderr
+++ b/src/tools/clippy/tests/ui/op_ref.stderr
@@ -8,8 +8,9 @@ LL |     let foo = &5 - &6;
    = help: to override `-D warnings` add `#[allow(clippy::op_ref)]`
 help: use the values directly
    |
-LL |     let foo = 5 - 6;
-   |               ~   ~
+LL -     let foo = &5 - &6;
+LL +     let foo = 5 - 6;
+   |
 
 error: taken reference of right operand
   --> tests/ui/op_ref.rs:58:13
diff --git a/src/tools/clippy/tests/ui/option_as_ref_cloned.stderr b/src/tools/clippy/tests/ui/option_as_ref_cloned.stderr
index 5892f2bdec5..0eda42b91b9 100644
--- a/src/tools/clippy/tests/ui/option_as_ref_cloned.stderr
+++ b/src/tools/clippy/tests/ui/option_as_ref_cloned.stderr
@@ -8,8 +8,9 @@ LL |     let _: Option<String> = x.as_ref().cloned();
    = help: to override `-D warnings` add `#[allow(clippy::option_as_ref_cloned)]`
 help: this can be written more concisely by cloning the `Option<_>` directly
    |
-LL |     let _: Option<String> = x.clone();
-   |                               ~~~~~
+LL -     let _: Option<String> = x.as_ref().cloned();
+LL +     let _: Option<String> = x.clone();
+   |
 
 error: cloning an `Option<_>` using `.as_mut().cloned()`
   --> tests/ui/option_as_ref_cloned.rs:8:31
@@ -19,8 +20,9 @@ LL |     let _: Option<String> = x.as_mut().cloned();
    |
 help: this can be written more concisely by cloning the `Option<_>` directly
    |
-LL |     let _: Option<String> = x.clone();
-   |                               ~~~~~
+LL -     let _: Option<String> = x.as_mut().cloned();
+LL +     let _: Option<String> = x.clone();
+   |
 
 error: cloning an `Option<_>` using `.as_ref().cloned()`
   --> tests/ui/option_as_ref_cloned.rs:11:32
@@ -30,8 +32,9 @@ LL |     let _: Option<&String> = y.as_ref().cloned();
    |
 help: this can be written more concisely by cloning the `Option<_>` directly
    |
-LL |     let _: Option<&String> = y.clone();
-   |                                ~~~~~
+LL -     let _: Option<&String> = y.as_ref().cloned();
+LL +     let _: Option<&String> = y.clone();
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/src/tools/clippy/tests/ui/redundant_guards.stderr b/src/tools/clippy/tests/ui/redundant_guards.stderr
index 7512546450b..a10cd5c2f48 100644
--- a/src/tools/clippy/tests/ui/redundant_guards.stderr
+++ b/src/tools/clippy/tests/ui/redundant_guards.stderr
@@ -44,8 +44,9 @@ LL |         Some(x) if matches!(x, Some(1) if true) => ..,
    |
 help: try
    |
-LL |         Some(Some(1)) if true => ..,
-   |              ~~~~~~~  ~~~~~~~
+LL -         Some(x) if matches!(x, Some(1) if true) => ..,
+LL +         Some(Some(1)) if true => ..,
+   |
 
 error: redundant guard
   --> tests/ui/redundant_guards.rs:50:20
diff --git a/src/tools/clippy/tests/ui/ref_binding_to_reference.stderr b/src/tools/clippy/tests/ui/ref_binding_to_reference.stderr
index 25ab9822382..233416351a0 100644
--- a/src/tools/clippy/tests/ui/ref_binding_to_reference.stderr
+++ b/src/tools/clippy/tests/ui/ref_binding_to_reference.stderr
@@ -8,8 +8,9 @@ LL |         Some(ref x) => x,
    = help: to override `-D warnings` add `#[allow(clippy::ref_binding_to_reference)]`
 help: try
    |
-LL |         Some(x) => &x,
-   |              ~     ~~
+LL -         Some(ref x) => x,
+LL +         Some(x) => &x,
+   |
 
 error: this pattern creates a reference to a reference
   --> tests/ui/ref_binding_to_reference.rs:38:14
@@ -34,8 +35,9 @@ LL |         Some(ref x) => m2!(x),
    |
 help: try
    |
-LL |         Some(x) => m2!(&x),
-   |              ~         ~~
+LL -         Some(ref x) => m2!(x),
+LL +         Some(x) => m2!(&x),
+   |
 
 error: this pattern creates a reference to a reference
   --> tests/ui/ref_binding_to_reference.rs:55:15
diff --git a/src/tools/clippy/tests/ui/ref_option/ref_option.all.stderr b/src/tools/clippy/tests/ui/ref_option/ref_option.all.stderr
index b4c69ac6296..fd30628bdd8 100644
--- a/src/tools/clippy/tests/ui/ref_option/ref_option.all.stderr
+++ b/src/tools/clippy/tests/ui/ref_option/ref_option.all.stderr
@@ -55,8 +55,9 @@ LL | fn mult_string(a: &Option<String>, b: &Option<Vec<u8>>) {}
    |
 help: change this to
    |
-LL | fn mult_string(a: Option<&String>, b: Option<&Vec<u8>>) {}
-   |                   ~~~~~~~~~~~~~~~     ~~~~~~~~~~~~~~~~
+LL - fn mult_string(a: &Option<String>, b: &Option<Vec<u8>>) {}
+LL + fn mult_string(a: Option<&String>, b: Option<&Vec<u8>>) {}
+   |
 
 error: it is more idiomatic to use `Option<&T>` instead of `&Option<T>`
   --> tests/ui/ref_option/ref_option.rs:18:1
@@ -85,8 +86,9 @@ LL | pub fn pub_mult_string(a: &Option<String>, b: &Option<Vec<u8>>) {}
    |
 help: change this to
    |
-LL | pub fn pub_mult_string(a: Option<&String>, b: Option<&Vec<u8>>) {}
-   |                           ~~~~~~~~~~~~~~~     ~~~~~~~~~~~~~~~~
+LL - pub fn pub_mult_string(a: &Option<String>, b: &Option<Vec<u8>>) {}
+LL + pub fn pub_mult_string(a: Option<&String>, b: Option<&Vec<u8>>) {}
+   |
 
 error: it is more idiomatic to use `Option<&T>` instead of `&Option<T>`
   --> tests/ui/ref_option/ref_option.rs:26:5
diff --git a/src/tools/clippy/tests/ui/ref_option/ref_option.private.stderr b/src/tools/clippy/tests/ui/ref_option/ref_option.private.stderr
index 17c90536da3..d3428f1891f 100644
--- a/src/tools/clippy/tests/ui/ref_option/ref_option.private.stderr
+++ b/src/tools/clippy/tests/ui/ref_option/ref_option.private.stderr
@@ -55,8 +55,9 @@ LL | fn mult_string(a: &Option<String>, b: &Option<Vec<u8>>) {}
    |
 help: change this to
    |
-LL | fn mult_string(a: Option<&String>, b: Option<&Vec<u8>>) {}
-   |                   ~~~~~~~~~~~~~~~     ~~~~~~~~~~~~~~~~
+LL - fn mult_string(a: &Option<String>, b: &Option<Vec<u8>>) {}
+LL + fn mult_string(a: Option<&String>, b: Option<&Vec<u8>>) {}
+   |
 
 error: it is more idiomatic to use `Option<&T>` instead of `&Option<T>`
   --> tests/ui/ref_option/ref_option.rs:18:1
diff --git a/src/tools/clippy/tests/ui/repeat_vec_with_capacity.stderr b/src/tools/clippy/tests/ui/repeat_vec_with_capacity.stderr
index 43027c9cb89..05513a8859a 100644
--- a/src/tools/clippy/tests/ui/repeat_vec_with_capacity.stderr
+++ b/src/tools/clippy/tests/ui/repeat_vec_with_capacity.stderr
@@ -9,8 +9,9 @@ LL |         vec![Vec::<()>::with_capacity(42); 123];
    = help: to override `-D warnings` add `#[allow(clippy::repeat_vec_with_capacity)]`
 help: if you intended to initialize multiple `Vec`s with an initial capacity, try
    |
-LL |         (0..123).map(|_| Vec::<()>::with_capacity(42)).collect::<Vec<_>>();
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         vec![Vec::<()>::with_capacity(42); 123];
+LL +         (0..123).map(|_| Vec::<()>::with_capacity(42)).collect::<Vec<_>>();
+   |
 
 error: repeating `Vec::with_capacity` using `vec![x; n]`, which does not retain capacity
   --> tests/ui/repeat_vec_with_capacity.rs:12:9
@@ -21,8 +22,9 @@ LL |         vec![Vec::<()>::with_capacity(42); n];
    = note: only the last `Vec` will have the capacity
 help: if you intended to initialize multiple `Vec`s with an initial capacity, try
    |
-LL |         (0..n).map(|_| Vec::<()>::with_capacity(42)).collect::<Vec<_>>();
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         vec![Vec::<()>::with_capacity(42); n];
+LL +         (0..n).map(|_| Vec::<()>::with_capacity(42)).collect::<Vec<_>>();
+   |
 
 error: repeating `Vec::with_capacity` using `iter::repeat`, which does not retain capacity
   --> tests/ui/repeat_vec_with_capacity.rs:27:9
@@ -33,8 +35,9 @@ LL |         std::iter::repeat(Vec::<()>::with_capacity(42));
    = note: none of the yielded `Vec`s will have the requested capacity
 help: if you intended to create an iterator that yields `Vec`s with an initial capacity, try
    |
-LL |         std::iter::repeat_with(|| Vec::<()>::with_capacity(42));
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         std::iter::repeat(Vec::<()>::with_capacity(42));
+LL +         std::iter::repeat_with(|| Vec::<()>::with_capacity(42));
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/src/tools/clippy/tests/ui/repeat_vec_with_capacity_nostd.stderr b/src/tools/clippy/tests/ui/repeat_vec_with_capacity_nostd.stderr
index 39364d09b96..092167485ce 100644
--- a/src/tools/clippy/tests/ui/repeat_vec_with_capacity_nostd.stderr
+++ b/src/tools/clippy/tests/ui/repeat_vec_with_capacity_nostd.stderr
@@ -9,8 +9,9 @@ LL |     let _: Vec<Vec<u8>> = iter::repeat(Vec::with_capacity(42)).take(123).co
    = help: to override `-D warnings` add `#[allow(clippy::repeat_vec_with_capacity)]`
 help: if you intended to create an iterator that yields `Vec`s with an initial capacity, try
    |
-LL |     let _: Vec<Vec<u8>> = core::iter::repeat_with(|| Vec::with_capacity(42)).take(123).collect();
-   |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: Vec<Vec<u8>> = iter::repeat(Vec::with_capacity(42)).take(123).collect();
+LL +     let _: Vec<Vec<u8>> = core::iter::repeat_with(|| Vec::with_capacity(42)).take(123).collect();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/src/tools/clippy/tests/ui/reversed_empty_ranges_fixable.stderr b/src/tools/clippy/tests/ui/reversed_empty_ranges_fixable.stderr
index 3747eb9deeb..24cb959c96a 100644
--- a/src/tools/clippy/tests/ui/reversed_empty_ranges_fixable.stderr
+++ b/src/tools/clippy/tests/ui/reversed_empty_ranges_fixable.stderr
@@ -8,8 +8,9 @@ LL |     (42..=21).for_each(|x| println!("{}", x));
    = help: to override `-D warnings` add `#[allow(clippy::reversed_empty_ranges)]`
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     (21..=42).rev().for_each(|x| println!("{}", x));
-   |     ~~~~~~~~~~~~~~~
+LL -     (42..=21).for_each(|x| println!("{}", x));
+LL +     (21..=42).rev().for_each(|x| println!("{}", x));
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_fixable.rs:10:13
@@ -19,8 +20,9 @@ LL |     let _ = (ANSWER..21).filter(|x| x % 2 == 0).take(10).collect::<Vec<_>>(
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     let _ = (21..ANSWER).rev().filter(|x| x % 2 == 0).take(10).collect::<Vec<_>>();
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let _ = (ANSWER..21).filter(|x| x % 2 == 0).take(10).collect::<Vec<_>>();
+LL +     let _ = (21..ANSWER).rev().filter(|x| x % 2 == 0).take(10).collect::<Vec<_>>();
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_fixable.rs:12:14
@@ -30,8 +32,9 @@ LL |     for _ in -21..=-42 {}
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for _ in (-42..=-21).rev() {}
-   |              ~~~~~~~~~~~~~~~~~
+LL -     for _ in -21..=-42 {}
+LL +     for _ in (-42..=-21).rev() {}
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_fixable.rs:13:14
@@ -41,8 +44,9 @@ LL |     for _ in 42u32..21u32 {}
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for _ in (21u32..42u32).rev() {}
-   |              ~~~~~~~~~~~~~~~~~~~~
+LL -     for _ in 42u32..21u32 {}
+LL +     for _ in (21u32..42u32).rev() {}
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/tools/clippy/tests/ui/reversed_empty_ranges_loops_fixable.stderr b/src/tools/clippy/tests/ui/reversed_empty_ranges_loops_fixable.stderr
index d5df34c42f4..3e9ccb653fe 100644
--- a/src/tools/clippy/tests/ui/reversed_empty_ranges_loops_fixable.stderr
+++ b/src/tools/clippy/tests/ui/reversed_empty_ranges_loops_fixable.stderr
@@ -8,8 +8,9 @@ LL |     for i in 10..0 {
    = help: to override `-D warnings` add `#[allow(clippy::reversed_empty_ranges)]`
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for i in (0..10).rev() {
-   |              ~~~~~~~~~~~~~
+LL -     for i in 10..0 {
+LL +     for i in (0..10).rev() {
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_loops_fixable.rs:11:14
@@ -19,8 +20,9 @@ LL |     for i in 10..=0 {
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for i in (0..=10).rev() {
-   |              ~~~~~~~~~~~~~~
+LL -     for i in 10..=0 {
+LL +     for i in (0..=10).rev() {
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_loops_fixable.rs:15:14
@@ -30,8 +32,9 @@ LL |     for i in MAX_LEN..0 {
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for i in (0..MAX_LEN).rev() {
-   |              ~~~~~~~~~~~~~~~~~~
+LL -     for i in MAX_LEN..0 {
+LL +     for i in (0..MAX_LEN).rev() {
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_loops_fixable.rs:34:14
@@ -41,8 +44,9 @@ LL |     for i in (10..0).map(|x| x * 2) {
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for i in (0..10).rev().map(|x| x * 2) {
-   |              ~~~~~~~~~~~~~
+LL -     for i in (10..0).map(|x| x * 2) {
+LL +     for i in (0..10).rev().map(|x| x * 2) {
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_loops_fixable.rs:39:14
@@ -52,8 +56,9 @@ LL |     for i in 10..5 + 4 {
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for i in (5 + 4..10).rev() {
-   |              ~~~~~~~~~~~~~~~~~
+LL -     for i in 10..5 + 4 {
+LL +     for i in (5 + 4..10).rev() {
+   |
 
 error: this range is empty so it will yield no values
   --> tests/ui/reversed_empty_ranges_loops_fixable.rs:43:14
@@ -63,8 +68,9 @@ LL |     for i in (5 + 2)..(3 - 1) {
    |
 help: consider using the following if you are attempting to iterate over this range in reverse
    |
-LL |     for i in ((3 - 1)..(5 + 2)).rev() {
-   |              ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for i in (5 + 2)..(3 - 1) {
+LL +     for i in ((3 - 1)..(5 + 2)).rev() {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/src/tools/clippy/tests/ui/single_range_in_vec_init.stderr b/src/tools/clippy/tests/ui/single_range_in_vec_init.stderr
index 9c125adb51a..b3bc8dd4aca 100644
--- a/src/tools/clippy/tests/ui/single_range_in_vec_init.stderr
+++ b/src/tools/clippy/tests/ui/single_range_in_vec_init.stderr
@@ -8,12 +8,14 @@ LL |     [0..200];
    = help: to override `-D warnings` add `#[allow(clippy::single_range_in_vec_init)]`
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0..200).collect::<std::vec::Vec<i32>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     [0..200];
+LL +     (0..200).collect::<std::vec::Vec<i32>>();
+   |
 help: if you wanted an array of len 200, try
    |
-LL |     [0; 200];
-   |      ~~~~~~
+LL -     [0..200];
+LL +     [0; 200];
+   |
 
 error: a `Vec` of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:27:5
@@ -23,12 +25,14 @@ LL |     vec![0..200];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0..200).collect::<std::vec::Vec<i32>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     vec![0..200];
+LL +     (0..200).collect::<std::vec::Vec<i32>>();
+   |
 help: if you wanted a `Vec` of len 200, try
    |
-LL |     vec![0; 200];
-   |          ~~~~~~
+LL -     vec![0..200];
+LL +     vec![0; 200];
+   |
 
 error: an array of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:28:5
@@ -38,12 +42,14 @@ LL |     [0u8..200];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0u8..200).collect::<std::vec::Vec<u8>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     [0u8..200];
+LL +     (0u8..200).collect::<std::vec::Vec<u8>>();
+   |
 help: if you wanted an array of len 200, try
    |
-LL |     [0u8; 200];
-   |      ~~~~~~~~
+LL -     [0u8..200];
+LL +     [0u8; 200];
+   |
 
 error: an array of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:29:5
@@ -53,12 +59,14 @@ LL |     [0usize..200];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0usize..200).collect::<std::vec::Vec<usize>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     [0usize..200];
+LL +     (0usize..200).collect::<std::vec::Vec<usize>>();
+   |
 help: if you wanted an array of len 200, try
    |
-LL |     [0usize; 200];
-   |      ~~~~~~~~~~~
+LL -     [0usize..200];
+LL +     [0usize; 200];
+   |
 
 error: an array of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:30:5
@@ -68,12 +76,14 @@ LL |     [0..200usize];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0..200usize).collect::<std::vec::Vec<usize>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     [0..200usize];
+LL +     (0..200usize).collect::<std::vec::Vec<usize>>();
+   |
 help: if you wanted an array of len 200usize, try
    |
-LL |     [0; 200usize];
-   |      ~~~~~~~~~~~
+LL -     [0..200usize];
+LL +     [0; 200usize];
+   |
 
 error: a `Vec` of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:31:5
@@ -83,12 +93,14 @@ LL |     vec![0u8..200];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0u8..200).collect::<std::vec::Vec<u8>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     vec![0u8..200];
+LL +     (0u8..200).collect::<std::vec::Vec<u8>>();
+   |
 help: if you wanted a `Vec` of len 200, try
    |
-LL |     vec![0u8; 200];
-   |          ~~~~~~~~
+LL -     vec![0u8..200];
+LL +     vec![0u8; 200];
+   |
 
 error: a `Vec` of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:32:5
@@ -98,12 +110,14 @@ LL |     vec![0usize..200];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0usize..200).collect::<std::vec::Vec<usize>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     vec![0usize..200];
+LL +     (0usize..200).collect::<std::vec::Vec<usize>>();
+   |
 help: if you wanted a `Vec` of len 200, try
    |
-LL |     vec![0usize; 200];
-   |          ~~~~~~~~~~~
+LL -     vec![0usize..200];
+LL +     vec![0usize; 200];
+   |
 
 error: a `Vec` of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:33:5
@@ -113,12 +127,14 @@ LL |     vec![0..200usize];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0..200usize).collect::<std::vec::Vec<usize>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     vec![0..200usize];
+LL +     (0..200usize).collect::<std::vec::Vec<usize>>();
+   |
 help: if you wanted a `Vec` of len 200usize, try
    |
-LL |     vec![0; 200usize];
-   |          ~~~~~~~~~~~
+LL -     vec![0..200usize];
+LL +     vec![0; 200usize];
+   |
 
 error: an array of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:35:5
@@ -128,8 +144,9 @@ LL |     [0..200isize];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0..200isize).collect::<std::vec::Vec<isize>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     [0..200isize];
+LL +     (0..200isize).collect::<std::vec::Vec<isize>>();
+   |
 
 error: a `Vec` of `Range` that is only one element
   --> tests/ui/single_range_in_vec_init.rs:36:5
@@ -139,8 +156,9 @@ LL |     vec![0..200isize];
    |
 help: if you wanted a `Vec` that contains the entire range, try
    |
-LL |     (0..200isize).collect::<std::vec::Vec<isize>>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     vec![0..200isize];
+LL +     (0..200isize).collect::<std::vec::Vec<isize>>();
+   |
 
 error: aborting due to 10 previous errors
 
diff --git a/src/tools/clippy/tests/ui/string_lit_chars_any.stderr b/src/tools/clippy/tests/ui/string_lit_chars_any.stderr
index 4d3ca98e623..1e28ae7b163 100644
--- a/src/tools/clippy/tests/ui/string_lit_chars_any.stderr
+++ b/src/tools/clippy/tests/ui/string_lit_chars_any.stderr
@@ -8,8 +8,9 @@ LL |     "\\.+*?()|[]{}^$#&-~".chars().any(|x| x == c);
    = help: to override `-D warnings` add `#[allow(clippy::string_lit_chars_any)]`
 help: use `matches!(...)` instead
    |
-LL |     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "\\.+*?()|[]{}^$#&-~".chars().any(|x| x == c);
+LL +     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
+   |
 
 error: usage of `.chars().any(...)` to check if a char matches any from a string literal
   --> tests/ui/string_lit_chars_any.rs:19:5
@@ -19,8 +20,9 @@ LL |     r#"\.+*?()|[]{}^$#&-~"#.chars().any(|x| x == c);
    |
 help: use `matches!(...)` instead
    |
-LL |     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r#"\.+*?()|[]{}^$#&-~"#.chars().any(|x| x == c);
+LL +     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
+   |
 
 error: usage of `.chars().any(...)` to check if a char matches any from a string literal
   --> tests/ui/string_lit_chars_any.rs:20:5
@@ -30,8 +32,9 @@ LL |     "\\.+*?()|[]{}^$#&-~".chars().any(|x| c == x);
    |
 help: use `matches!(...)` instead
    |
-LL |     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "\\.+*?()|[]{}^$#&-~".chars().any(|x| c == x);
+LL +     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
+   |
 
 error: usage of `.chars().any(...)` to check if a char matches any from a string literal
   --> tests/ui/string_lit_chars_any.rs:21:5
@@ -41,8 +44,9 @@ LL |     r#"\.+*?()|[]{}^$#&-~"#.chars().any(|x| c == x);
    |
 help: use `matches!(...)` instead
    |
-LL |     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r#"\.+*?()|[]{}^$#&-~"#.chars().any(|x| c == x);
+LL +     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
+   |
 
 error: usage of `.chars().any(...)` to check if a char matches any from a string literal
   --> tests/ui/string_lit_chars_any.rs:23:5
@@ -52,8 +56,9 @@ LL |     "\\.+*?()|[]{}^$#&-~".chars().any(|x| { x == c });
    |
 help: use `matches!(...)` instead
    |
-LL |     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     "\\.+*?()|[]{}^$#&-~".chars().any(|x| { x == c });
+LL +     matches!(c, '\\' | '.' | '+' | '*' | '?' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~');
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/src/tools/clippy/tests/ui/suspicious_command_arg_space.stderr b/src/tools/clippy/tests/ui/suspicious_command_arg_space.stderr
index 6fd07d07d7b..8952a3ffe4b 100644
--- a/src/tools/clippy/tests/ui/suspicious_command_arg_space.stderr
+++ b/src/tools/clippy/tests/ui/suspicious_command_arg_space.stderr
@@ -8,8 +8,9 @@ LL |     std::process::Command::new("echo").arg("-n hello").spawn().unwrap();
    = help: to override `-D warnings` add `#[allow(clippy::suspicious_command_arg_space)]`
 help: consider splitting the argument
    |
-LL |     std::process::Command::new("echo").args(["-n", "hello"]).spawn().unwrap();
-   |                                        ~~~~ ~~~~~~~~~~~~~~~
+LL -     std::process::Command::new("echo").arg("-n hello").spawn().unwrap();
+LL +     std::process::Command::new("echo").args(["-n", "hello"]).spawn().unwrap();
+   |
 
 error: single argument that looks like it should be multiple arguments
   --> tests/ui/suspicious_command_arg_space.rs:7:43
@@ -19,8 +20,9 @@ LL |     std::process::Command::new("cat").arg("--number file").spawn().unwrap()
    |
 help: consider splitting the argument
    |
-LL |     std::process::Command::new("cat").args(["--number", "file"]).spawn().unwrap();
-   |                                       ~~~~ ~~~~~~~~~~~~~~~~~~~~
+LL -     std::process::Command::new("cat").arg("--number file").spawn().unwrap();
+LL +     std::process::Command::new("cat").args(["--number", "file"]).spawn().unwrap();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/src/tools/clippy/tests/ui/suspicious_doc_comments.stderr b/src/tools/clippy/tests/ui/suspicious_doc_comments.stderr
index c34e39cd0fc..7e5933df237 100644
--- a/src/tools/clippy/tests/ui/suspicious_doc_comments.stderr
+++ b/src/tools/clippy/tests/ui/suspicious_doc_comments.stderr
@@ -8,7 +8,8 @@ LL | ///! Fake module documentation.
    = help: to override `-D warnings` add `#[allow(clippy::suspicious_doc_comments)]`
 help: use an inner doc comment to document the parent module or crate
    |
-LL | //! Fake module documentation.
+LL - ///! Fake module documentation.
+LL + //! Fake module documentation.
    |
 
 error: this is an outer doc comment and does not apply to the parent module or crate
@@ -19,7 +20,8 @@ LL |     ///! This module contains useful functions.
    |
 help: use an inner doc comment to document the parent module or crate
    |
-LL |     //! This module contains useful functions.
+LL -     ///! This module contains useful functions.
+LL +     //! This module contains useful functions.
    |
 
 error: this is an outer doc comment and does not apply to the parent module or crate
@@ -71,7 +73,8 @@ LL |     ///! a
    |
 help: use an inner doc comment to document the parent module or crate
    |
-LL |     //! a
+LL -     ///! a
+LL +     //! a
    |
 
 error: this is an outer doc comment and does not apply to the parent module or crate
@@ -97,7 +100,8 @@ LL |     ///! Very cool macro
    |
 help: use an inner doc comment to document the parent module or crate
    |
-LL |     //! Very cool macro
+LL -     ///! Very cool macro
+LL +     //! Very cool macro
    |
 
 error: this is an outer doc comment and does not apply to the parent module or crate
@@ -108,7 +112,8 @@ LL |     ///! Huh.
    |
 help: use an inner doc comment to document the parent module or crate
    |
-LL |     //! Huh.
+LL -     ///! Huh.
+LL +     //! Huh.
    |
 
 error: aborting due to 9 previous errors
diff --git a/src/tools/clippy/tests/ui/suspicious_to_owned.stderr b/src/tools/clippy/tests/ui/suspicious_to_owned.stderr
index 255f211e655..74bbcfcca51 100644
--- a/src/tools/clippy/tests/ui/suspicious_to_owned.stderr
+++ b/src/tools/clippy/tests/ui/suspicious_to_owned.stderr
@@ -8,12 +8,14 @@ LL |     let _ = cow.to_owned();
    = help: to override `-D warnings` add `#[allow(clippy::suspicious_to_owned)]`
 help: depending on intent, either make the Cow an Owned variant
    |
-LL |     let _ = cow.into_owned();
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.into_owned();
+   |
 help: or clone the Cow itself
    |
-LL |     let _ = cow.clone();
-   |             ~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.clone();
+   |
 
 error: this `to_owned` call clones the Cow<'_, [char; 3]> itself and does not cause the Cow<'_, [char; 3]> contents to become owned
   --> tests/ui/suspicious_to_owned.rs:29:13
@@ -23,12 +25,14 @@ LL |     let _ = cow.to_owned();
    |
 help: depending on intent, either make the Cow an Owned variant
    |
-LL |     let _ = cow.into_owned();
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.into_owned();
+   |
 help: or clone the Cow itself
    |
-LL |     let _ = cow.clone();
-   |             ~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.clone();
+   |
 
 error: this `to_owned` call clones the Cow<'_, Vec<char>> itself and does not cause the Cow<'_, Vec<char>> contents to become owned
   --> tests/ui/suspicious_to_owned.rs:40:13
@@ -38,12 +42,14 @@ LL |     let _ = cow.to_owned();
    |
 help: depending on intent, either make the Cow an Owned variant
    |
-LL |     let _ = cow.into_owned();
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.into_owned();
+   |
 help: or clone the Cow itself
    |
-LL |     let _ = cow.clone();
-   |             ~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.clone();
+   |
 
 error: this `to_owned` call clones the Cow<'_, str> itself and does not cause the Cow<'_, str> contents to become owned
   --> tests/ui/suspicious_to_owned.rs:51:13
@@ -53,12 +59,14 @@ LL |     let _ = cow.to_owned();
    |
 help: depending on intent, either make the Cow an Owned variant
    |
-LL |     let _ = cow.into_owned();
-   |             ~~~~~~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.into_owned();
+   |
 help: or clone the Cow itself
    |
-LL |     let _ = cow.clone();
-   |             ~~~~~~~~~~~
+LL -     let _ = cow.to_owned();
+LL +     let _ = cow.clone();
+   |
 
 error: implicitly cloning a `String` by calling `to_owned` on its dereferenced type
   --> tests/ui/suspicious_to_owned.rs:66:13
diff --git a/src/tools/clippy/tests/ui/suspicious_xor_used_as_pow.stderr b/src/tools/clippy/tests/ui/suspicious_xor_used_as_pow.stderr
index 43b03676b1d..2a153169bd3 100644
--- a/src/tools/clippy/tests/ui/suspicious_xor_used_as_pow.stderr
+++ b/src/tools/clippy/tests/ui/suspicious_xor_used_as_pow.stderr
@@ -8,8 +8,9 @@ LL |     let _ = 2 ^ 5;
    = help: to override `-D warnings` add `#[allow(clippy::suspicious_xor_used_as_pow)]`
 help: did you mean to write
    |
-LL |     let _ = 2.pow(5);
-   |             ~~~~~~~~
+LL -     let _ = 2 ^ 5;
+LL +     let _ = 2.pow(5);
+   |
 
 error: `^` is not the exponentiation operator
   --> tests/ui/suspicious_xor_used_as_pow.rs:22:13
@@ -19,8 +20,9 @@ LL |     let _ = 2i32 ^ 9i32;
    |
 help: did you mean to write
    |
-LL |     let _ = 2i32.pow(9i32);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = 2i32 ^ 9i32;
+LL +     let _ = 2i32.pow(9i32);
+   |
 
 error: `^` is not the exponentiation operator
   --> tests/ui/suspicious_xor_used_as_pow.rs:24:13
@@ -30,8 +32,9 @@ LL |     let _ = 2i32 ^ 2i32;
    |
 help: did you mean to write
    |
-LL |     let _ = 2i32.pow(2i32);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = 2i32 ^ 2i32;
+LL +     let _ = 2i32.pow(2i32);
+   |
 
 error: `^` is not the exponentiation operator
   --> tests/ui/suspicious_xor_used_as_pow.rs:26:13
@@ -41,8 +44,9 @@ LL |     let _ = 50i32 ^ 3i32;
    |
 help: did you mean to write
    |
-LL |     let _ = 50i32.pow(3i32);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = 50i32 ^ 3i32;
+LL +     let _ = 50i32.pow(3i32);
+   |
 
 error: `^` is not the exponentiation operator
   --> tests/ui/suspicious_xor_used_as_pow.rs:28:13
@@ -52,8 +56,9 @@ LL |     let _ = 5i32 ^ 8i32;
    |
 help: did you mean to write
    |
-LL |     let _ = 5i32.pow(8i32);
-   |             ~~~~~~~~~~~~~~
+LL -     let _ = 5i32 ^ 8i32;
+LL +     let _ = 5i32.pow(8i32);
+   |
 
 error: `^` is not the exponentiation operator
   --> tests/ui/suspicious_xor_used_as_pow.rs:30:13
@@ -63,8 +68,9 @@ LL |     let _ = 2i32 ^ 32i32;
    |
 help: did you mean to write
    |
-LL |     let _ = 2i32.pow(32i32);
-   |             ~~~~~~~~~~~~~~~
+LL -     let _ = 2i32 ^ 32i32;
+LL +     let _ = 2i32.pow(32i32);
+   |
 
 error: `^` is not the exponentiation operator
   --> tests/ui/suspicious_xor_used_as_pow.rs:13:9
@@ -78,8 +84,9 @@ LL |     macro_test_inside!();
    = note: this error originates in the macro `macro_test_inside` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: did you mean to write
    |
-LL |         1.pow(2) // should warn even if inside macro
-   |         ~~~~~~~~
+LL -         1 ^ 2 // should warn even if inside macro
+LL +         1.pow(2) // should warn even if inside macro
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/src/tools/clippy/tests/ui/transmute_ptr_to_ptr.stderr b/src/tools/clippy/tests/ui/transmute_ptr_to_ptr.stderr
index 8801eb943ce..f4f83cd7ac6 100644
--- a/src/tools/clippy/tests/ui/transmute_ptr_to_ptr.stderr
+++ b/src/tools/clippy/tests/ui/transmute_ptr_to_ptr.stderr
@@ -8,8 +8,9 @@ LL |         let _: *const f32 = transmute(ptr);
    = help: to override `-D warnings` add `#[allow(clippy::transmute_ptr_to_ptr)]`
 help: use `pointer::cast` instead
    |
-LL |         let _: *const f32 = ptr.cast::<f32>();
-   |                             ~~~~~~~~~~~~~~~~~
+LL -         let _: *const f32 = transmute(ptr);
+LL +         let _: *const f32 = ptr.cast::<f32>();
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:34:27
@@ -19,8 +20,9 @@ LL |         let _: *mut f32 = transmute(mut_ptr);
    |
 help: use `pointer::cast` instead
    |
-LL |         let _: *mut f32 = mut_ptr.cast::<f32>();
-   |                           ~~~~~~~~~~~~~~~~~~~~~
+LL -         let _: *mut f32 = transmute(mut_ptr);
+LL +         let _: *mut f32 = mut_ptr.cast::<f32>();
+   |
 
 error: transmute from a reference to a reference
   --> tests/ui/transmute_ptr_to_ptr.rs:37:23
@@ -60,8 +62,9 @@ LL |         let _: *const u32 = transmute(mut_ptr);
    |
 help: use `pointer::cast_const` instead
    |
-LL |         let _: *const u32 = mut_ptr.cast_const();
-   |                             ~~~~~~~~~~~~~~~~~~~~
+LL -         let _: *const u32 = transmute(mut_ptr);
+LL +         let _: *const u32 = mut_ptr.cast_const();
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:52:27
@@ -71,8 +74,9 @@ LL |         let _: *mut u32 = transmute(ptr);
    |
 help: use `pointer::cast_mut` instead
    |
-LL |         let _: *mut u32 = ptr.cast_mut();
-   |                           ~~~~~~~~~~~~~~
+LL -         let _: *mut u32 = transmute(ptr);
+LL +         let _: *mut u32 = ptr.cast_mut();
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:64:14
@@ -82,8 +86,9 @@ LL |     unsafe { transmute(v) }
    |
 help: use an `as` cast instead
    |
-LL |     unsafe { v as *const &() }
-   |              ~~~~~~~~~~~~~~~
+LL -     unsafe { transmute(v) }
+LL +     unsafe { v as *const &() }
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:79:28
@@ -93,8 +98,9 @@ LL |         let _: *const i8 = transmute(ptr);
    |
 help: use an `as` cast instead
    |
-LL |         let _: *const i8 = ptr as *const i8;
-   |                            ~~~~~~~~~~~~~~~~
+LL -         let _: *const i8 = transmute(ptr);
+LL +         let _: *const i8 = ptr as *const i8;
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:86:28
@@ -104,8 +110,9 @@ LL |         let _: *const i8 = transmute(ptr);
    |
 help: use `pointer::cast` instead
    |
-LL |         let _: *const i8 = ptr.cast::<i8>();
-   |                            ~~~~~~~~~~~~~~~~
+LL -         let _: *const i8 = transmute(ptr);
+LL +         let _: *const i8 = ptr.cast::<i8>();
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:93:26
@@ -115,8 +122,9 @@ LL |         let _: *mut u8 = transmute(ptr);
    |
 help: use an `as` cast instead
    |
-LL |         let _: *mut u8 = ptr as *mut u8;
-   |                          ~~~~~~~~~~~~~~
+LL -         let _: *mut u8 = transmute(ptr);
+LL +         let _: *mut u8 = ptr as *mut u8;
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:94:28
@@ -126,8 +134,9 @@ LL |         let _: *const u8 = transmute(mut_ptr);
    |
 help: use an `as` cast instead
    |
-LL |         let _: *const u8 = mut_ptr as *const u8;
-   |                            ~~~~~~~~~~~~~~~~~~~~
+LL -         let _: *const u8 = transmute(mut_ptr);
+LL +         let _: *const u8 = mut_ptr as *const u8;
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:101:26
@@ -137,8 +146,9 @@ LL |         let _: *mut u8 = transmute(ptr);
    |
 help: use `pointer::cast_mut` instead
    |
-LL |         let _: *mut u8 = ptr.cast_mut();
-   |                          ~~~~~~~~~~~~~~
+LL -         let _: *mut u8 = transmute(ptr);
+LL +         let _: *mut u8 = ptr.cast_mut();
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmute_ptr_to_ptr.rs:102:28
@@ -148,8 +158,9 @@ LL |         let _: *const u8 = transmute(mut_ptr);
    |
 help: use `pointer::cast_const` instead
    |
-LL |         let _: *const u8 = mut_ptr.cast_const();
-   |                            ~~~~~~~~~~~~~~~~~~~~
+LL -         let _: *const u8 = transmute(mut_ptr);
+LL +         let _: *const u8 = mut_ptr.cast_const();
+   |
 
 error: aborting due to 16 previous errors
 
diff --git a/src/tools/clippy/tests/ui/transmutes_expressible_as_ptr_casts.stderr b/src/tools/clippy/tests/ui/transmutes_expressible_as_ptr_casts.stderr
index 2d74967ede5..21edd39e7ad 100644
--- a/src/tools/clippy/tests/ui/transmutes_expressible_as_ptr_casts.stderr
+++ b/src/tools/clippy/tests/ui/transmutes_expressible_as_ptr_casts.stderr
@@ -17,8 +17,9 @@ LL |     let _ptr_i8_transmute = unsafe { transmute::<*const i32, *const i8>(ptr
    = help: to override `-D warnings` add `#[allow(clippy::transmute_ptr_to_ptr)]`
 help: use `pointer::cast` instead
    |
-LL |     let _ptr_i8_transmute = unsafe { ptr_i32.cast::<i8>() };
-   |                                      ~~~~~~~~~~~~~~~~~~~~
+LL -     let _ptr_i8_transmute = unsafe { transmute::<*const i32, *const i8>(ptr_i32) };
+LL +     let _ptr_i8_transmute = unsafe { ptr_i32.cast::<i8>() };
+   |
 
 error: transmute from a pointer to a pointer
   --> tests/ui/transmutes_expressible_as_ptr_casts.rs:27:46
@@ -28,8 +29,9 @@ LL |     let _ptr_to_unsized_transmute = unsafe { transmute::<*const [i32], *con
    |
 help: use an `as` cast instead
    |
-LL |     let _ptr_to_unsized_transmute = unsafe { slice_ptr as *const [u32] };
-   |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ptr_to_unsized_transmute = unsafe { transmute::<*const [i32], *const [u32]>(slice_ptr) };
+LL +     let _ptr_to_unsized_transmute = unsafe { slice_ptr as *const [u32] };
+   |
 
 error: transmute from `*const i32` to `usize` which could be expressed as a pointer cast instead
   --> tests/ui/transmutes_expressible_as_ptr_casts.rs:33:50
diff --git a/src/tools/clippy/tests/ui/unit_arg.stderr b/src/tools/clippy/tests/ui/unit_arg.stderr
index 41ad1a2d383..bf79e93e444 100644
--- a/src/tools/clippy/tests/ui/unit_arg.stderr
+++ b/src/tools/clippy/tests/ui/unit_arg.stderr
@@ -10,7 +10,8 @@ LL | |     });
    = help: to override `-D warnings` add `#[allow(clippy::unit_arg)]`
 help: remove the semicolon from the last statement in the block
    |
-LL |         1
+LL -         1;
+LL +         1
    |
 help: or move the expression in front of the call and replace it with the unit literal `()`
    |
@@ -43,7 +44,8 @@ LL | |     });
    |
 help: remove the semicolon from the last statement in the block
    |
-LL |         foo(2)
+LL -         foo(2);
+LL +         foo(2)
    |
 help: or move the expression in front of the call and replace it with the unit literal `()`
    |
@@ -64,7 +66,8 @@ LL | |     });
    |
 help: remove the semicolon from the last statement in the block
    |
-LL |         1
+LL -         1;
+LL +         1
    |
 help: or move the expression in front of the call and replace it with the unit literal `()`
    |
@@ -98,7 +101,8 @@ LL | |     });
    |
 help: remove the semicolon from the last statement in the block
    |
-LL |         foo(2)
+LL -         foo(2);
+LL +         foo(2)
    |
 help: or move the expressions in front of the call and replace them with the unit literal `()`
    |
@@ -124,11 +128,13 @@ LL | |     );
    |
 help: remove the semicolon from the last statement in the block
    |
-LL |             foo(1)
+LL -             foo(1);
+LL +             foo(1)
    |
 help: remove the semicolon from the last statement in the block
    |
-LL |             foo(3)
+LL -             foo(3);
+LL +             foo(3)
    |
 help: or move the expressions in front of the call and replace them with the unit literal `()`
    |
diff --git a/src/tools/clippy/tests/ui/unknown_clippy_lints.stderr b/src/tools/clippy/tests/ui/unknown_clippy_lints.stderr
index aa2c2f3c0e2..ea925cd3a9f 100644
--- a/src/tools/clippy/tests/ui/unknown_clippy_lints.stderr
+++ b/src/tools/clippy/tests/ui/unknown_clippy_lints.stderr
@@ -39,8 +39,9 @@ LL | #[warn(clippy::dead_cod)]
    |
 help: a lint with a similar name exists in `rustc` lints
    |
-LL | #[warn(dead_code)]
-   |        ~~~~~~~~~
+LL - #[warn(clippy::dead_cod)]
+LL + #[warn(dead_code)]
+   |
 
 error: unknown lint: `clippy::unused_colle`
   --> tests/ui/unknown_clippy_lints.rs:13:8
@@ -62,8 +63,9 @@ LL | #[warn(clippy::missing_docs)]
    |
 help: a lint with a similar name exists in `rustc` lints
    |
-LL | #[warn(missing_docs)]
-   |        ~~~~~~~~~~~~
+LL - #[warn(clippy::missing_docs)]
+LL + #[warn(missing_docs)]
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/src/tools/clippy/tests/ui/unnecessary_lazy_eval.stderr b/src/tools/clippy/tests/ui/unnecessary_lazy_eval.stderr
index 35a2144c389..9bb1b71f0ed 100644
--- a/src/tools/clippy/tests/ui/unnecessary_lazy_eval.stderr
+++ b/src/tools/clippy/tests/ui/unnecessary_lazy_eval.stderr
@@ -8,8 +8,9 @@ LL |     let _ = opt.unwrap_or_else(|| 2);
    = help: to override `-D warnings` add `#[allow(clippy::unnecessary_lazy_evaluations)]`
 help: use `unwrap_or` instead
    |
-LL |     let _ = opt.unwrap_or(2);
-   |                 ~~~~~~~~~~~~
+LL -     let _ = opt.unwrap_or_else(|| 2);
+LL +     let _ = opt.unwrap_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:84:13
@@ -19,8 +20,9 @@ LL |     let _ = opt.unwrap_or_else(|| astronomers_pi);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = opt.unwrap_or(astronomers_pi);
-   |                 ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = opt.unwrap_or_else(|| astronomers_pi);
+LL +     let _ = opt.unwrap_or(astronomers_pi);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:85:13
@@ -30,8 +32,9 @@ LL |     let _ = opt.unwrap_or_else(|| ext_str.some_field);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = opt.unwrap_or(ext_str.some_field);
-   |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = opt.unwrap_or_else(|| ext_str.some_field);
+LL +     let _ = opt.unwrap_or(ext_str.some_field);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:87:13
@@ -41,8 +44,9 @@ LL |     let _ = opt.and_then(|_| ext_opt);
    |
 help: use `and` instead
    |
-LL |     let _ = opt.and(ext_opt);
-   |                 ~~~~~~~~~~~~
+LL -     let _ = opt.and_then(|_| ext_opt);
+LL +     let _ = opt.and(ext_opt);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:88:13
@@ -52,8 +56,9 @@ LL |     let _ = opt.or_else(|| ext_opt);
    |
 help: use `or` instead
    |
-LL |     let _ = opt.or(ext_opt);
-   |                 ~~~~~~~~~~~
+LL -     let _ = opt.or_else(|| ext_opt);
+LL +     let _ = opt.or(ext_opt);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:89:13
@@ -63,8 +68,9 @@ LL |     let _ = opt.or_else(|| None);
    |
 help: use `or` instead
    |
-LL |     let _ = opt.or(None);
-   |                 ~~~~~~~~
+LL -     let _ = opt.or_else(|| None);
+LL +     let _ = opt.or(None);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:90:13
@@ -74,8 +80,9 @@ LL |     let _ = opt.get_or_insert_with(|| 2);
    |
 help: use `get_or_insert` instead
    |
-LL |     let _ = opt.get_or_insert(2);
-   |                 ~~~~~~~~~~~~~~~~
+LL -     let _ = opt.get_or_insert_with(|| 2);
+LL +     let _ = opt.get_or_insert(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:91:13
@@ -85,8 +92,9 @@ LL |     let _ = opt.ok_or_else(|| 2);
    |
 help: use `ok_or` instead
    |
-LL |     let _ = opt.ok_or(2);
-   |                 ~~~~~~~~
+LL -     let _ = opt.ok_or_else(|| 2);
+LL +     let _ = opt.ok_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:92:13
@@ -96,8 +104,9 @@ LL |     let _ = nested_tuple_opt.unwrap_or_else(|| Some((1, 2)));
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = nested_tuple_opt.unwrap_or(Some((1, 2)));
-   |                              ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = nested_tuple_opt.unwrap_or_else(|| Some((1, 2)));
+LL +     let _ = nested_tuple_opt.unwrap_or(Some((1, 2)));
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:93:13
@@ -107,8 +116,9 @@ LL |     let _ = cond.then(|| astronomers_pi);
    |
 help: use `then_some` instead
    |
-LL |     let _ = cond.then_some(astronomers_pi);
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = cond.then(|| astronomers_pi);
+LL +     let _ = cond.then_some(astronomers_pi);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:94:13
@@ -118,8 +128,9 @@ LL |     let _ = true.then(|| -> _ {});
    |
 help: use `then_some` instead
    |
-LL |     let _ = true.then_some({});
-   |                  ~~~~~~~~~~~~~
+LL -     let _ = true.then(|| -> _ {});
+LL +     let _ = true.then_some({});
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:95:13
@@ -129,8 +140,9 @@ LL |     let _ = true.then(|| {});
    |
 help: use `then_some` instead
    |
-LL |     let _ = true.then_some({});
-   |                  ~~~~~~~~~~~~~
+LL -     let _ = true.then(|| {});
+LL +     let _ = true.then_some({});
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:99:13
@@ -140,8 +152,9 @@ LL |     let _ = Some(1).unwrap_or_else(|| *r);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Some(1).unwrap_or(*r);
-   |                     ~~~~~~~~~~~~~
+LL -     let _ = Some(1).unwrap_or_else(|| *r);
+LL +     let _ = Some(1).unwrap_or(*r);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:101:13
@@ -151,8 +164,9 @@ LL |     let _ = Some(1).unwrap_or_else(|| *b);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Some(1).unwrap_or(*b);
-   |                     ~~~~~~~~~~~~~
+LL -     let _ = Some(1).unwrap_or_else(|| *b);
+LL +     let _ = Some(1).unwrap_or(*b);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:103:13
@@ -162,8 +176,9 @@ LL |     let _ = Some(1).as_ref().unwrap_or_else(|| &r);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Some(1).as_ref().unwrap_or(&r);
-   |                              ~~~~~~~~~~~~~
+LL -     let _ = Some(1).as_ref().unwrap_or_else(|| &r);
+LL +     let _ = Some(1).as_ref().unwrap_or(&r);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:104:13
@@ -173,8 +188,9 @@ LL |     let _ = Some(1).as_ref().unwrap_or_else(|| &b);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Some(1).as_ref().unwrap_or(&b);
-   |                              ~~~~~~~~~~~~~
+LL -     let _ = Some(1).as_ref().unwrap_or_else(|| &b);
+LL +     let _ = Some(1).as_ref().unwrap_or(&b);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:107:13
@@ -184,8 +200,9 @@ LL |     let _ = Some(10).unwrap_or_else(|| 2);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Some(10).unwrap_or(2);
-   |                      ~~~~~~~~~~~~
+LL -     let _ = Some(10).unwrap_or_else(|| 2);
+LL +     let _ = Some(10).unwrap_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:108:13
@@ -195,8 +212,9 @@ LL |     let _ = Some(10).and_then(|_| ext_opt);
    |
 help: use `and` instead
    |
-LL |     let _ = Some(10).and(ext_opt);
-   |                      ~~~~~~~~~~~~
+LL -     let _ = Some(10).and_then(|_| ext_opt);
+LL +     let _ = Some(10).and(ext_opt);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:109:28
@@ -206,8 +224,9 @@ LL |     let _: Option<usize> = None.or_else(|| ext_opt);
    |
 help: use `or` instead
    |
-LL |     let _: Option<usize> = None.or(ext_opt);
-   |                                 ~~~~~~~~~~~
+LL -     let _: Option<usize> = None.or_else(|| ext_opt);
+LL +     let _: Option<usize> = None.or(ext_opt);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:110:13
@@ -217,8 +236,9 @@ LL |     let _ = None.get_or_insert_with(|| 2);
    |
 help: use `get_or_insert` instead
    |
-LL |     let _ = None.get_or_insert(2);
-   |                  ~~~~~~~~~~~~~~~~
+LL -     let _ = None.get_or_insert_with(|| 2);
+LL +     let _ = None.get_or_insert(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:111:35
@@ -228,8 +248,9 @@ LL |     let _: Result<usize, usize> = None.ok_or_else(|| 2);
    |
 help: use `ok_or` instead
    |
-LL |     let _: Result<usize, usize> = None.ok_or(2);
-   |                                        ~~~~~~~~
+LL -     let _: Result<usize, usize> = None.ok_or_else(|| 2);
+LL +     let _: Result<usize, usize> = None.ok_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:112:28
@@ -239,8 +260,9 @@ LL |     let _: Option<usize> = None.or_else(|| None);
    |
 help: use `or` instead
    |
-LL |     let _: Option<usize> = None.or(None);
-   |                                 ~~~~~~~~
+LL -     let _: Option<usize> = None.or_else(|| None);
+LL +     let _: Option<usize> = None.or(None);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:115:13
@@ -250,8 +272,9 @@ LL |     let _ = deep.0.unwrap_or_else(|| 2);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = deep.0.unwrap_or(2);
-   |                    ~~~~~~~~~~~~
+LL -     let _ = deep.0.unwrap_or_else(|| 2);
+LL +     let _ = deep.0.unwrap_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:116:13
@@ -261,8 +284,9 @@ LL |     let _ = deep.0.and_then(|_| ext_opt);
    |
 help: use `and` instead
    |
-LL |     let _ = deep.0.and(ext_opt);
-   |                    ~~~~~~~~~~~~
+LL -     let _ = deep.0.and_then(|_| ext_opt);
+LL +     let _ = deep.0.and(ext_opt);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:117:13
@@ -272,8 +296,9 @@ LL |     let _ = deep.0.or_else(|| None);
    |
 help: use `or` instead
    |
-LL |     let _ = deep.0.or(None);
-   |                    ~~~~~~~~
+LL -     let _ = deep.0.or_else(|| None);
+LL +     let _ = deep.0.or(None);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:118:13
@@ -283,8 +308,9 @@ LL |     let _ = deep.0.get_or_insert_with(|| 2);
    |
 help: use `get_or_insert` instead
    |
-LL |     let _ = deep.0.get_or_insert(2);
-   |                    ~~~~~~~~~~~~~~~~
+LL -     let _ = deep.0.get_or_insert_with(|| 2);
+LL +     let _ = deep.0.get_or_insert(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:119:13
@@ -294,8 +320,9 @@ LL |     let _ = deep.0.ok_or_else(|| 2);
    |
 help: use `ok_or` instead
    |
-LL |     let _ = deep.0.ok_or(2);
-   |                    ~~~~~~~~
+LL -     let _ = deep.0.ok_or_else(|| 2);
+LL +     let _ = deep.0.ok_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:150:28
@@ -305,8 +332,9 @@ LL |     let _: Option<usize> = None.or_else(|| Some(3));
    |
 help: use `or` instead
    |
-LL |     let _: Option<usize> = None.or(Some(3));
-   |                                 ~~~~~~~~~~~
+LL -     let _: Option<usize> = None.or_else(|| Some(3));
+LL +     let _: Option<usize> = None.or(Some(3));
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:151:13
@@ -316,8 +344,9 @@ LL |     let _ = deep.0.or_else(|| Some(3));
    |
 help: use `or` instead
    |
-LL |     let _ = deep.0.or(Some(3));
-   |                    ~~~~~~~~~~~
+LL -     let _ = deep.0.or_else(|| Some(3));
+LL +     let _ = deep.0.or(Some(3));
+   |
 
 error: unnecessary closure used to substitute value for `Option::None`
   --> tests/ui/unnecessary_lazy_eval.rs:152:13
@@ -327,8 +356,9 @@ LL |     let _ = opt.or_else(|| Some(3));
    |
 help: use `or` instead
    |
-LL |     let _ = opt.or(Some(3));
-   |                 ~~~~~~~~~~~
+LL -     let _ = opt.or_else(|| Some(3));
+LL +     let _ = opt.or(Some(3));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:158:13
@@ -338,8 +368,9 @@ LL |     let _ = res2.unwrap_or_else(|_| 2);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = res2.unwrap_or(2);
-   |                  ~~~~~~~~~~~~
+LL -     let _ = res2.unwrap_or_else(|_| 2);
+LL +     let _ = res2.unwrap_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:159:13
@@ -349,8 +380,9 @@ LL |     let _ = res2.unwrap_or_else(|_| astronomers_pi);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = res2.unwrap_or(astronomers_pi);
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = res2.unwrap_or_else(|_| astronomers_pi);
+LL +     let _ = res2.unwrap_or(astronomers_pi);
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:160:13
@@ -360,8 +392,9 @@ LL |     let _ = res2.unwrap_or_else(|_| ext_str.some_field);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = res2.unwrap_or(ext_str.some_field);
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = res2.unwrap_or_else(|_| ext_str.some_field);
+LL +     let _ = res2.unwrap_or(ext_str.some_field);
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:182:35
@@ -371,8 +404,9 @@ LL |     let _: Result<usize, usize> = res.and_then(|_| Err(2));
    |
 help: use `and` instead
    |
-LL |     let _: Result<usize, usize> = res.and(Err(2));
-   |                                       ~~~~~~~~~~~
+LL -     let _: Result<usize, usize> = res.and_then(|_| Err(2));
+LL +     let _: Result<usize, usize> = res.and(Err(2));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:183:35
@@ -382,8 +416,9 @@ LL |     let _: Result<usize, usize> = res.and_then(|_| Err(astronomers_pi));
    |
 help: use `and` instead
    |
-LL |     let _: Result<usize, usize> = res.and(Err(astronomers_pi));
-   |                                       ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: Result<usize, usize> = res.and_then(|_| Err(astronomers_pi));
+LL +     let _: Result<usize, usize> = res.and(Err(astronomers_pi));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:184:35
@@ -393,8 +428,9 @@ LL |     let _: Result<usize, usize> = res.and_then(|_| Err(ext_str.some_field))
    |
 help: use `and` instead
    |
-LL |     let _: Result<usize, usize> = res.and(Err(ext_str.some_field));
-   |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: Result<usize, usize> = res.and_then(|_| Err(ext_str.some_field));
+LL +     let _: Result<usize, usize> = res.and(Err(ext_str.some_field));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:186:35
@@ -404,8 +440,9 @@ LL |     let _: Result<usize, usize> = res.or_else(|_| Ok(2));
    |
 help: use `or` instead
    |
-LL |     let _: Result<usize, usize> = res.or(Ok(2));
-   |                                       ~~~~~~~~~
+LL -     let _: Result<usize, usize> = res.or_else(|_| Ok(2));
+LL +     let _: Result<usize, usize> = res.or(Ok(2));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:187:35
@@ -415,8 +452,9 @@ LL |     let _: Result<usize, usize> = res.or_else(|_| Ok(astronomers_pi));
    |
 help: use `or` instead
    |
-LL |     let _: Result<usize, usize> = res.or(Ok(astronomers_pi));
-   |                                       ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: Result<usize, usize> = res.or_else(|_| Ok(astronomers_pi));
+LL +     let _: Result<usize, usize> = res.or(Ok(astronomers_pi));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:188:35
@@ -426,8 +464,9 @@ LL |     let _: Result<usize, usize> = res.or_else(|_| Ok(ext_str.some_field));
    |
 help: use `or` instead
    |
-LL |     let _: Result<usize, usize> = res.or(Ok(ext_str.some_field));
-   |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: Result<usize, usize> = res.or_else(|_| Ok(ext_str.some_field));
+LL +     let _: Result<usize, usize> = res.or(Ok(ext_str.some_field));
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval.rs:189:35
@@ -440,8 +479,9 @@ LL | |     or_else(|_| Ok(ext_str.some_field));
    |
 help: use `or` instead
    |
-LL |     or(Ok(ext_str.some_field));
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     or_else(|_| Ok(ext_str.some_field));
+LL +     or(Ok(ext_str.some_field));
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:219:14
@@ -451,8 +491,9 @@ LL |     let _x = false.then(|| i32::MAX + 1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MAX + 1);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MAX + 1);
+LL +     let _x = false.then_some(i32::MAX + 1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:221:14
@@ -462,8 +503,9 @@ LL |     let _x = false.then(|| i32::MAX * 2);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MAX * 2);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MAX * 2);
+LL +     let _x = false.then_some(i32::MAX * 2);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:223:14
@@ -473,8 +515,9 @@ LL |     let _x = false.then(|| i32::MAX - 1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MAX - 1);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MAX - 1);
+LL +     let _x = false.then_some(i32::MAX - 1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:225:14
@@ -484,8 +527,9 @@ LL |     let _x = false.then(|| i32::MIN - 1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MIN - 1);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MIN - 1);
+LL +     let _x = false.then_some(i32::MIN - 1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:227:14
@@ -495,8 +539,9 @@ LL |     let _x = false.then(|| (1 + 2 * 3 - 2 / 3 + 9) << 2);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some((1 + 2 * 3 - 2 / 3 + 9) << 2);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| (1 + 2 * 3 - 2 / 3 + 9) << 2);
+LL +     let _x = false.then_some((1 + 2 * 3 - 2 / 3 + 9) << 2);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:229:14
@@ -506,8 +551,9 @@ LL |     let _x = false.then(|| 255u8 << 7);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(255u8 << 7);
-   |                    ~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 255u8 << 7);
+LL +     let _x = false.then_some(255u8 << 7);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:231:14
@@ -517,8 +563,9 @@ LL |     let _x = false.then(|| 255u8 << 8);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(255u8 << 8);
-   |                    ~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 255u8 << 8);
+LL +     let _x = false.then_some(255u8 << 8);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:233:14
@@ -528,8 +575,9 @@ LL |     let _x = false.then(|| 255u8 >> 8);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(255u8 >> 8);
-   |                    ~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 255u8 >> 8);
+LL +     let _x = false.then_some(255u8 >> 8);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:236:14
@@ -539,8 +587,9 @@ LL |     let _x = false.then(|| i32::MAX + -1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MAX + -1);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MAX + -1);
+LL +     let _x = false.then_some(i32::MAX + -1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:238:14
@@ -550,8 +599,9 @@ LL |     let _x = false.then(|| -i32::MAX);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(-i32::MAX);
-   |                    ~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| -i32::MAX);
+LL +     let _x = false.then_some(-i32::MAX);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:240:14
@@ -561,8 +611,9 @@ LL |     let _x = false.then(|| -i32::MIN);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(-i32::MIN);
-   |                    ~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| -i32::MIN);
+LL +     let _x = false.then_some(-i32::MIN);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:243:14
@@ -572,8 +623,9 @@ LL |     let _x = false.then(|| 255 >> -7);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(255 >> -7);
-   |                    ~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 255 >> -7);
+LL +     let _x = false.then_some(255 >> -7);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:245:14
@@ -583,8 +635,9 @@ LL |     let _x = false.then(|| 255 << -1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(255 << -1);
-   |                    ~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 255 << -1);
+LL +     let _x = false.then_some(255 << -1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:247:14
@@ -594,8 +647,9 @@ LL |     let _x = false.then(|| 1 / 0);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(1 / 0);
-   |                    ~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 1 / 0);
+LL +     let _x = false.then_some(1 / 0);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:249:14
@@ -605,8 +659,9 @@ LL |     let _x = false.then(|| x << -1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(x << -1);
-   |                    ~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| x << -1);
+LL +     let _x = false.then_some(x << -1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:251:14
@@ -616,8 +671,9 @@ LL |     let _x = false.then(|| x << 2);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(x << 2);
-   |                    ~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| x << 2);
+LL +     let _x = false.then_some(x << 2);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:261:14
@@ -627,8 +683,9 @@ LL |     let _x = false.then(|| x / 0);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(x / 0);
-   |                    ~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| x / 0);
+LL +     let _x = false.then_some(x / 0);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:263:14
@@ -638,8 +695,9 @@ LL |     let _x = false.then(|| x % 0);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(x % 0);
-   |                    ~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| x % 0);
+LL +     let _x = false.then_some(x % 0);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:266:14
@@ -649,8 +707,9 @@ LL |     let _x = false.then(|| 1 / -1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(1 / -1);
-   |                    ~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 1 / -1);
+LL +     let _x = false.then_some(1 / -1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:268:14
@@ -660,8 +719,9 @@ LL |     let _x = false.then(|| i32::MIN / -1);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MIN / -1);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MIN / -1);
+LL +     let _x = false.then_some(i32::MIN / -1);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:271:14
@@ -671,8 +731,9 @@ LL |     let _x = false.then(|| i32::MIN / 0);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(i32::MIN / 0);
-   |                    ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| i32::MIN / 0);
+LL +     let _x = false.then_some(i32::MIN / 0);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:273:14
@@ -682,8 +743,9 @@ LL |     let _x = false.then(|| 4 / 2);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(4 / 2);
-   |                    ~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| 4 / 2);
+LL +     let _x = false.then_some(4 / 2);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval.rs:281:14
@@ -693,8 +755,9 @@ LL |     let _x = false.then(|| f1 + f2);
    |
 help: use `then_some` instead
    |
-LL |     let _x = false.then_some(f1 + f2);
-   |                    ~~~~~~~~~~~~~~~~~~
+LL -     let _x = false.then(|| f1 + f2);
+LL +     let _x = false.then_some(f1 + f2);
+   |
 
 error: aborting due to 63 previous errors
 
diff --git a/src/tools/clippy/tests/ui/unnecessary_lazy_eval_unfixable.stderr b/src/tools/clippy/tests/ui/unnecessary_lazy_eval_unfixable.stderr
index 390235b2124..9688c44c914 100644
--- a/src/tools/clippy/tests/ui/unnecessary_lazy_eval_unfixable.stderr
+++ b/src/tools/clippy/tests/ui/unnecessary_lazy_eval_unfixable.stderr
@@ -8,8 +8,9 @@ LL |     let _ = Ok(1).unwrap_or_else(|()| 2);
    = help: to override `-D warnings` add `#[allow(clippy::unnecessary_lazy_evaluations)]`
 help: use `unwrap_or` instead
    |
-LL |     let _ = Ok(1).unwrap_or(2);
-   |                   ~~~~~~~~~~~~
+LL -     let _ = Ok(1).unwrap_or_else(|()| 2);
+LL +     let _ = Ok(1).unwrap_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval_unfixable.rs:19:13
@@ -19,8 +20,9 @@ LL |     let _ = Ok(1).unwrap_or_else(|e::E| 2);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Ok(1).unwrap_or(2);
-   |                   ~~~~~~~~~~~~
+LL -     let _ = Ok(1).unwrap_or_else(|e::E| 2);
+LL +     let _ = Ok(1).unwrap_or(2);
+   |
 
 error: unnecessary closure used to substitute value for `Result::Err`
   --> tests/ui/unnecessary_lazy_eval_unfixable.rs:21:13
@@ -30,8 +32,9 @@ LL |     let _ = Ok(1).unwrap_or_else(|SomeStruct { .. }| 2);
    |
 help: use `unwrap_or` instead
    |
-LL |     let _ = Ok(1).unwrap_or(2);
-   |                   ~~~~~~~~~~~~
+LL -     let _ = Ok(1).unwrap_or_else(|SomeStruct { .. }| 2);
+LL +     let _ = Ok(1).unwrap_or(2);
+   |
 
 error: unnecessary closure used with `bool::then`
   --> tests/ui/unnecessary_lazy_eval_unfixable.rs:31:13
@@ -41,8 +44,9 @@ LL |     let _ = true.then(|| -> &[u8] { &[] });
    |
 help: use `then_some` instead
    |
-LL |     let _ = true.then_some({ &[] });
-   |                  ~~~~~~~~~~~~~~~~~~
+LL -     let _ = true.then(|| -> &[u8] { &[] });
+LL +     let _ = true.then_some({ &[] });
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/tools/clippy/tests/ui/unnecessary_literal_unwrap.stderr b/src/tools/clippy/tests/ui/unnecessary_literal_unwrap.stderr
index 37ee9195fce..631bf083726 100644
--- a/src/tools/clippy/tests/ui/unnecessary_literal_unwrap.stderr
+++ b/src/tools/clippy/tests/ui/unnecessary_literal_unwrap.stderr
@@ -62,8 +62,9 @@ LL |     let _val = None::<()>.expect("this always happens");
    |
 help: remove the `None` and `expect()`
    |
-LL |     let _val = panic!("this always happens");
-   |                ~~~~~~~
+LL -     let _val = None::<()>.expect("this always happens");
+LL +     let _val = panic!("this always happens");
+   |
 
 error: used `unwrap_or_default()` on `None` value
   --> tests/ui/unnecessary_literal_unwrap.rs:22:24
@@ -133,8 +134,9 @@ LL |     None::<()>.expect("this always happens");
    |
 help: remove the `None` and `expect()`
    |
-LL |     panic!("this always happens");
-   |     ~~~~~~~
+LL -     None::<()>.expect("this always happens");
+LL +     panic!("this always happens");
+   |
 
 error: used `unwrap_or_default()` on `None` value
   --> tests/ui/unnecessary_literal_unwrap.rs:30:5
@@ -222,8 +224,9 @@ LL |     let _val = Ok::<_, ()>(1).unwrap_err();
    |
 help: remove the `Ok` and `unwrap_err()`
    |
-LL |     let _val = panic!("{:?}", 1);
-   |                ~~~~~~~~~~~~~~  ~
+LL -     let _val = Ok::<_, ()>(1).unwrap_err();
+LL +     let _val = panic!("{:?}", 1);
+   |
 
 error: used `expect_err()` on `Ok` value
   --> tests/ui/unnecessary_literal_unwrap.rs:41:16
@@ -233,8 +236,9 @@ LL |     let _val = Ok::<_, ()>(1).expect_err("this always happens");
    |
 help: remove the `Ok` and `expect_err()`
    |
-LL |     let _val = panic!("{1}: {:?}", 1, "this always happens");
-   |                ~~~~~~~~~~~~~~~~~~~  ~
+LL -     let _val = Ok::<_, ()>(1).expect_err("this always happens");
+LL +     let _val = panic!("{1}: {:?}", 1, "this always happens");
+   |
 
 error: used `unwrap()` on `Ok` value
   --> tests/ui/unnecessary_literal_unwrap.rs:43:5
@@ -268,8 +272,9 @@ LL |     Ok::<_, ()>(1).unwrap_err();
    |
 help: remove the `Ok` and `unwrap_err()`
    |
-LL |     panic!("{:?}", 1);
-   |     ~~~~~~~~~~~~~~  ~
+LL -     Ok::<_, ()>(1).unwrap_err();
+LL +     panic!("{:?}", 1);
+   |
 
 error: used `expect_err()` on `Ok` value
   --> tests/ui/unnecessary_literal_unwrap.rs:46:5
@@ -279,8 +284,9 @@ LL |     Ok::<_, ()>(1).expect_err("this always happens");
    |
 help: remove the `Ok` and `expect_err()`
    |
-LL |     panic!("{1}: {:?}", 1, "this always happens");
-   |     ~~~~~~~~~~~~~~~~~~~  ~
+LL -     Ok::<_, ()>(1).expect_err("this always happens");
+LL +     panic!("{1}: {:?}", 1, "this always happens");
+   |
 
 error: used `unwrap_err()` on `Err` value
   --> tests/ui/unnecessary_literal_unwrap.rs:50:16
@@ -314,8 +320,9 @@ LL |     let _val = Err::<(), _>(1).unwrap();
    |
 help: remove the `Err` and `unwrap()`
    |
-LL |     let _val = panic!("{:?}", 1);
-   |                ~~~~~~~~~~~~~~  ~
+LL -     let _val = Err::<(), _>(1).unwrap();
+LL +     let _val = panic!("{:?}", 1);
+   |
 
 error: used `expect()` on `Err` value
   --> tests/ui/unnecessary_literal_unwrap.rs:53:16
@@ -325,8 +332,9 @@ LL |     let _val = Err::<(), _>(1).expect("this always happens");
    |
 help: remove the `Err` and `expect()`
    |
-LL |     let _val = panic!("{1}: {:?}", 1, "this always happens");
-   |                ~~~~~~~~~~~~~~~~~~~  ~
+LL -     let _val = Err::<(), _>(1).expect("this always happens");
+LL +     let _val = panic!("{1}: {:?}", 1, "this always happens");
+   |
 
 error: used `unwrap_err()` on `Err` value
   --> tests/ui/unnecessary_literal_unwrap.rs:55:5
@@ -360,8 +368,9 @@ LL |     Err::<(), _>(1).unwrap();
    |
 help: remove the `Err` and `unwrap()`
    |
-LL |     panic!("{:?}", 1);
-   |     ~~~~~~~~~~~~~~  ~
+LL -     Err::<(), _>(1).unwrap();
+LL +     panic!("{:?}", 1);
+   |
 
 error: used `expect()` on `Err` value
   --> tests/ui/unnecessary_literal_unwrap.rs:58:5
@@ -371,8 +380,9 @@ LL |     Err::<(), _>(1).expect("this always happens");
    |
 help: remove the `Err` and `expect()`
    |
-LL |     panic!("{1}: {:?}", 1, "this always happens");
-   |     ~~~~~~~~~~~~~~~~~~~  ~
+LL -     Err::<(), _>(1).expect("this always happens");
+LL +     panic!("{1}: {:?}", 1, "this always happens");
+   |
 
 error: used `unwrap_or()` on `Some` value
   --> tests/ui/unnecessary_literal_unwrap.rs:62:16
diff --git a/src/tools/clippy/tests/ui/unnecessary_map_or.stderr b/src/tools/clippy/tests/ui/unnecessary_map_or.stderr
index 2ae327f0bf8..9f38b8c8d93 100644
--- a/src/tools/clippy/tests/ui/unnecessary_map_or.stderr
+++ b/src/tools/clippy/tests/ui/unnecessary_map_or.stderr
@@ -8,8 +8,9 @@ LL |     let _ = Some(5).map_or(false, |n| n == 5);
    = help: to override `-D warnings` add `#[allow(clippy::unnecessary_map_or)]`
 help: use a standard comparison instead
    |
-LL |     let _ = Some(5) == Some(5);
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let _ = Some(5).map_or(false, |n| n == 5);
+LL +     let _ = Some(5) == Some(5);
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:14:13
@@ -19,8 +20,9 @@ LL |     let _ = Some(5).map_or(true, |n| n != 5);
    |
 help: use a standard comparison instead
    |
-LL |     let _ = Some(5) != Some(5);
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let _ = Some(5).map_or(true, |n| n != 5);
+LL +     let _ = Some(5) != Some(5);
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:15:13
@@ -34,8 +36,12 @@ LL | |     });
    |
 help: use a standard comparison instead
    |
-LL |     let _ = Some(5) == Some(5);
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let _ = Some(5).map_or(false, |n| {
+LL -         let _ = 1;
+LL -         n == 5
+LL -     });
+LL +     let _ = Some(5) == Some(5);
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:19:13
@@ -121,8 +127,9 @@ LL |     let _ = Ok::<i32, i32>(5).map_or(false, |n| n == 5);
    |
 help: use a standard comparison instead
    |
-LL |     let _ = Ok::<i32, i32>(5) == Ok(5);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = Ok::<i32, i32>(5).map_or(false, |n| n == 5);
+LL +     let _ = Ok::<i32, i32>(5) == Ok(5);
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:29:13
@@ -132,8 +139,9 @@ LL |     let _ = Some(5).map_or(false, |n| n == 5).then(|| 1);
    |
 help: use a standard comparison instead
    |
-LL |     let _ = (Some(5) == Some(5)).then(|| 1);
-   |             ~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = Some(5).map_or(false, |n| n == 5).then(|| 1);
+LL +     let _ = (Some(5) == Some(5)).then(|| 1);
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:30:13
@@ -167,8 +175,9 @@ LL |     let _ = !Some(5).map_or(false, |n| n == 5);
    |
 help: use a standard comparison instead
    |
-LL |     let _ = !(Some(5) == Some(5));
-   |              ~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = !Some(5).map_or(false, |n| n == 5);
+LL +     let _ = !(Some(5) == Some(5));
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:33:13
@@ -178,8 +187,9 @@ LL |     let _ = Some(5).map_or(false, |n| n == 5) || false;
    |
 help: use a standard comparison instead
    |
-LL |     let _ = (Some(5) == Some(5)) || false;
-   |             ~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = Some(5).map_or(false, |n| n == 5) || false;
+LL +     let _ = (Some(5) == Some(5)) || false;
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:34:13
@@ -189,8 +199,9 @@ LL |     let _ = Some(5).map_or(false, |n| n == 5) as usize;
    |
 help: use a standard comparison instead
    |
-LL |     let _ = (Some(5) == Some(5)) as usize;
-   |             ~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = Some(5).map_or(false, |n| n == 5) as usize;
+LL +     let _ = (Some(5) == Some(5)) as usize;
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:58:13
@@ -248,8 +259,9 @@ LL |     let _ = r.map_or(false, |x| x == 8);
    |
 help: use a standard comparison instead
    |
-LL |     let _ = r == Ok(8);
-   |             ~~~~~~~~~~
+LL -     let _ = r.map_or(false, |x| x == 8);
+LL +     let _ = r == Ok(8);
+   |
 
 error: this `map_or` can be simplified
   --> tests/ui/unnecessary_map_or.rs:90:5
diff --git a/src/tools/clippy/tests/ui/unnecessary_wraps.stderr b/src/tools/clippy/tests/ui/unnecessary_wraps.stderr
index b304d4dce6e..b06ab91dc8d 100644
--- a/src/tools/clippy/tests/ui/unnecessary_wraps.stderr
+++ b/src/tools/clippy/tests/ui/unnecessary_wraps.stderr
@@ -13,8 +13,9 @@ LL | | }
    = help: to override `-D warnings` add `#[allow(clippy::unnecessary_wraps)]`
 help: remove `Option` from the return type...
    |
-LL | fn func1(a: bool, b: bool) -> i32 {
-   |                               ~~~
+LL - fn func1(a: bool, b: bool) -> Option<i32> {
+LL + fn func1(a: bool, b: bool) -> i32 {
+   |
 help: ...and then change returning expressions
    |
 LL ~         return 42;
@@ -40,8 +41,9 @@ LL | | }
    |
 help: remove `Option` from the return type...
    |
-LL | fn func2(a: bool, b: bool) -> i32 {
-   |                               ~~~
+LL - fn func2(a: bool, b: bool) -> Option<i32> {
+LL + fn func2(a: bool, b: bool) -> i32 {
+   |
 help: ...and then change returning expressions
    |
 LL ~         return 10;
@@ -60,11 +62,13 @@ LL | | }
    |
 help: remove `Option` from the return type...
    |
-LL | fn func5() -> i32 {
-   |               ~~~
+LL - fn func5() -> Option<i32> {
+LL + fn func5() -> i32 {
+   |
 help: ...and then change returning expressions
    |
-LL |     1
+LL -     Some(1)
+LL +     1
    |
 
 error: this function's return value is unnecessarily wrapped by `Result`
@@ -78,11 +82,13 @@ LL | | }
    |
 help: remove `Result` from the return type...
    |
-LL | fn func7() -> i32 {
-   |               ~~~
+LL - fn func7() -> Result<i32, ()> {
+LL + fn func7() -> i32 {
+   |
 help: ...and then change returning expressions
    |
-LL |     1
+LL -     Ok(1)
+LL +     1
    |
 
 error: this function's return value is unnecessarily wrapped by `Option`
@@ -96,11 +102,13 @@ LL | |     }
    |
 help: remove `Option` from the return type...
    |
-LL |     fn func12() -> i32 {
-   |                    ~~~
+LL -     fn func12() -> Option<i32> {
+LL +     fn func12() -> i32 {
+   |
 help: ...and then change returning expressions
    |
-LL |         1
+LL -         Some(1)
+LL +         1
    |
 
 error: this function's return value is unnecessary
@@ -116,8 +124,9 @@ LL | | }
    |
 help: remove the return type...
    |
-LL | fn issue_6640_1(a: bool, b: bool) -> () {
-   |                                      ~~
+LL - fn issue_6640_1(a: bool, b: bool) -> Option<()> {
+LL + fn issue_6640_1(a: bool, b: bool) -> () {
+   |
 help: ...and then remove returned values
    |
 LL ~         return ;
@@ -142,8 +151,9 @@ LL | | }
    |
 help: remove the return type...
    |
-LL | fn issue_6640_2(a: bool, b: bool) -> () {
-   |                                      ~~
+LL - fn issue_6640_2(a: bool, b: bool) -> Result<(), i32> {
+LL + fn issue_6640_2(a: bool, b: bool) -> () {
+   |
 help: ...and then remove returned values
    |
 LL ~         return ;
diff --git a/src/tools/clippy/tests/ui/unnested_or_patterns.stderr b/src/tools/clippy/tests/ui/unnested_or_patterns.stderr
index bd15ef62368..4325df14304 100644
--- a/src/tools/clippy/tests/ui/unnested_or_patterns.stderr
+++ b/src/tools/clippy/tests/ui/unnested_or_patterns.stderr
@@ -8,8 +8,9 @@ LL |     if let box 0 | box 2 = Box::new(0) {}
    = help: to override `-D warnings` add `#[allow(clippy::unnested_or_patterns)]`
 help: nest the patterns
    |
-LL |     if let box (0 | 2) = Box::new(0) {}
-   |            ~~~~~~~~~~~
+LL -     if let box 0 | box 2 = Box::new(0) {}
+LL +     if let box (0 | 2) = Box::new(0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:17:12
@@ -19,8 +20,9 @@ LL |     if let box ((0 | 1)) | box (2 | 3) | box 4 = Box::new(0) {}
    |
 help: nest the patterns
    |
-LL |     if let box (0 | 1 | 2 | 3 | 4) = Box::new(0) {}
-   |            ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if let box ((0 | 1)) | box (2 | 3) | box 4 = Box::new(0) {}
+LL +     if let box (0 | 1 | 2 | 3 | 4) = Box::new(0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:19:12
@@ -30,8 +32,9 @@ LL |     if let Some(1) | C0 | Some(2) = None {}
    |
 help: nest the patterns
    |
-LL |     if let Some(1 | 2) | C0 = None {}
-   |            ~~~~~~~~~~~~~~~~
+LL -     if let Some(1) | C0 | Some(2) = None {}
+LL +     if let Some(1 | 2) | C0 = None {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:20:12
@@ -41,8 +44,9 @@ LL |     if let &mut 0 | &mut 2 = &mut 0 {}
    |
 help: nest the patterns
    |
-LL |     if let &mut (0 | 2) = &mut 0 {}
-   |            ~~~~~~~~~~~~
+LL -     if let &mut 0 | &mut 2 = &mut 0 {}
+LL +     if let &mut (0 | 2) = &mut 0 {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:21:12
@@ -52,8 +56,9 @@ LL |     if let x @ 0 | x @ 2 = 0 {}
    |
 help: nest the patterns
    |
-LL |     if let x @ (0 | 2) = 0 {}
-   |            ~~~~~~~~~~~
+LL -     if let x @ 0 | x @ 2 = 0 {}
+LL +     if let x @ (0 | 2) = 0 {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:22:12
@@ -63,8 +68,9 @@ LL |     if let (0, 1) | (0, 2) | (0, 3) = (0, 0) {}
    |
 help: nest the patterns
    |
-LL |     if let (0, 1 | 2 | 3) = (0, 0) {}
-   |            ~~~~~~~~~~~~~~
+LL -     if let (0, 1) | (0, 2) | (0, 3) = (0, 0) {}
+LL +     if let (0, 1 | 2 | 3) = (0, 0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:23:12
@@ -74,8 +80,9 @@ LL |     if let (1, 0) | (2, 0) | (3, 0) = (0, 0) {}
    |
 help: nest the patterns
    |
-LL |     if let (1 | 2 | 3, 0) = (0, 0) {}
-   |            ~~~~~~~~~~~~~~
+LL -     if let (1, 0) | (2, 0) | (3, 0) = (0, 0) {}
+LL +     if let (1 | 2 | 3, 0) = (0, 0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:24:12
@@ -85,8 +92,9 @@ LL |     if let (x, ..) | (x, 1) | (x, 2) = (0, 1) {}
    |
 help: nest the patterns
    |
-LL |     if let (x, ..) | (x, 1 | 2) = (0, 1) {}
-   |            ~~~~~~~~~~~~~~~~~~~~
+LL -     if let (x, ..) | (x, 1) | (x, 2) = (0, 1) {}
+LL +     if let (x, ..) | (x, 1 | 2) = (0, 1) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:25:12
@@ -96,8 +104,9 @@ LL |     if let [0] | [1] = [0] {}
    |
 help: nest the patterns
    |
-LL |     if let [0 | 1] = [0] {}
-   |            ~~~~~~~
+LL -     if let [0] | [1] = [0] {}
+LL +     if let [0 | 1] = [0] {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:26:12
@@ -107,8 +116,9 @@ LL |     if let [x, 0] | [x, 1] = [0, 1] {}
    |
 help: nest the patterns
    |
-LL |     if let [x, 0 | 1] = [0, 1] {}
-   |            ~~~~~~~~~~
+LL -     if let [x, 0] | [x, 1] = [0, 1] {}
+LL +     if let [x, 0 | 1] = [0, 1] {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:27:12
@@ -118,8 +128,9 @@ LL |     if let [x, 0] | [x, 1] | [x, 2] = [0, 1] {}
    |
 help: nest the patterns
    |
-LL |     if let [x, 0 | 1 | 2] = [0, 1] {}
-   |            ~~~~~~~~~~~~~~
+LL -     if let [x, 0] | [x, 1] | [x, 2] = [0, 1] {}
+LL +     if let [x, 0 | 1 | 2] = [0, 1] {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:28:12
@@ -129,8 +140,9 @@ LL |     if let [x, ..] | [x, 1] | [x, 2] = [0, 1] {}
    |
 help: nest the patterns
    |
-LL |     if let [x, ..] | [x, 1 | 2] = [0, 1] {}
-   |            ~~~~~~~~~~~~~~~~~~~~
+LL -     if let [x, ..] | [x, 1] | [x, 2] = [0, 1] {}
+LL +     if let [x, ..] | [x, 1 | 2] = [0, 1] {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:30:12
@@ -140,8 +152,9 @@ LL |     if let TS(0, x) | TS(1, x) = TS(0, 0) {}
    |
 help: nest the patterns
    |
-LL |     if let TS(0 | 1, x) = TS(0, 0) {}
-   |            ~~~~~~~~~~~~
+LL -     if let TS(0, x) | TS(1, x) = TS(0, 0) {}
+LL +     if let TS(0 | 1, x) = TS(0, 0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:31:12
@@ -151,8 +164,9 @@ LL |     if let TS(1, 0) | TS(2, 0) | TS(3, 0) = TS(0, 0) {}
    |
 help: nest the patterns
    |
-LL |     if let TS(1 | 2 | 3, 0) = TS(0, 0) {}
-   |            ~~~~~~~~~~~~~~~~
+LL -     if let TS(1, 0) | TS(2, 0) | TS(3, 0) = TS(0, 0) {}
+LL +     if let TS(1 | 2 | 3, 0) = TS(0, 0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:32:12
@@ -162,8 +176,9 @@ LL |     if let TS(x, ..) | TS(x, 1) | TS(x, 2) = TS(0, 0) {}
    |
 help: nest the patterns
    |
-LL |     if let TS(x, ..) | TS(x, 1 | 2) = TS(0, 0) {}
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if let TS(x, ..) | TS(x, 1) | TS(x, 2) = TS(0, 0) {}
+LL +     if let TS(x, ..) | TS(x, 1 | 2) = TS(0, 0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:37:12
@@ -173,8 +188,9 @@ LL |     if let S { x: 0, y } | S { y, x: 1 } = (S { x: 0, y: 1 }) {}
    |
 help: nest the patterns
    |
-LL |     if let S { x: 0 | 1, y } = (S { x: 0, y: 1 }) {}
-   |            ~~~~~~~~~~~~~~~~~
+LL -     if let S { x: 0, y } | S { y, x: 1 } = (S { x: 0, y: 1 }) {}
+LL +     if let S { x: 0 | 1, y } = (S { x: 0, y: 1 }) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns.rs:48:12
@@ -184,8 +200,9 @@ LL |     if let [1] | [53] = [0] {}
    |
 help: nest the patterns
    |
-LL |     if let [1 | 53] = [0] {}
-   |            ~~~~~~~~
+LL -     if let [1] | [53] = [0] {}
+LL +     if let [1 | 53] = [0] {}
+   |
 
 error: aborting due to 17 previous errors
 
diff --git a/src/tools/clippy/tests/ui/unnested_or_patterns2.stderr b/src/tools/clippy/tests/ui/unnested_or_patterns2.stderr
index 54f03937508..3d8968551b9 100644
--- a/src/tools/clippy/tests/ui/unnested_or_patterns2.stderr
+++ b/src/tools/clippy/tests/ui/unnested_or_patterns2.stderr
@@ -8,8 +8,9 @@ LL |     if let Some(Some(0)) | Some(Some(1)) = None {}
    = help: to override `-D warnings` add `#[allow(clippy::unnested_or_patterns)]`
 help: nest the patterns
    |
-LL |     if let Some(Some(0 | 1)) = None {}
-   |            ~~~~~~~~~~~~~~~~~
+LL -     if let Some(Some(0)) | Some(Some(1)) = None {}
+LL +     if let Some(Some(0 | 1)) = None {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:13:12
@@ -19,8 +20,9 @@ LL |     if let Some(Some(0)) | Some(Some(1) | Some(2)) = None {}
    |
 help: nest the patterns
    |
-LL |     if let Some(Some(0 | 1 | 2)) = None {}
-   |            ~~~~~~~~~~~~~~~~~~~~~
+LL -     if let Some(Some(0)) | Some(Some(1) | Some(2)) = None {}
+LL +     if let Some(Some(0 | 1 | 2)) = None {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:14:12
@@ -30,8 +32,9 @@ LL |     if let Some(Some(0 | 1) | Some(2)) | Some(Some(3) | Some(4)) = None {}
    |
 help: nest the patterns
    |
-LL |     if let Some(Some(0 | 1 | 2 | 3 | 4)) = None {}
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if let Some(Some(0 | 1) | Some(2)) | Some(Some(3) | Some(4)) = None {}
+LL +     if let Some(Some(0 | 1 | 2 | 3 | 4)) = None {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:15:12
@@ -41,8 +44,9 @@ LL |     if let Some(Some(0) | Some(1 | 2)) = None {}
    |
 help: nest the patterns
    |
-LL |     if let Some(Some(0 | 1 | 2)) = None {}
-   |            ~~~~~~~~~~~~~~~~~~~~~
+LL -     if let Some(Some(0) | Some(1 | 2)) = None {}
+LL +     if let Some(Some(0 | 1 | 2)) = None {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:16:12
@@ -52,8 +56,9 @@ LL |     if let ((0,),) | ((1,) | (2,),) = ((0,),) {}
    |
 help: nest the patterns
    |
-LL |     if let ((0 | 1 | 2,),) = ((0,),) {}
-   |            ~~~~~~~~~~~~~~~
+LL -     if let ((0,),) | ((1,) | (2,),) = ((0,),) {}
+LL +     if let ((0 | 1 | 2,),) = ((0,),) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:17:12
@@ -63,8 +68,9 @@ LL |     if let 0 | (1 | 2) = 0 {}
    |
 help: nest the patterns
    |
-LL |     if let 0 | 1 | 2 = 0 {}
-   |            ~~~~~~~~~
+LL -     if let 0 | (1 | 2) = 0 {}
+LL +     if let 0 | 1 | 2 = 0 {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:18:12
@@ -74,8 +80,9 @@ LL |     if let box (0 | 1) | (box 2 | box (3 | 4)) = Box::new(0) {}
    |
 help: nest the patterns
    |
-LL |     if let box (0 | 1 | 2 | 3 | 4) = Box::new(0) {}
-   |            ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if let box (0 | 1) | (box 2 | box (3 | 4)) = Box::new(0) {}
+LL +     if let box (0 | 1 | 2 | 3 | 4) = Box::new(0) {}
+   |
 
 error: unnested or-patterns
   --> tests/ui/unnested_or_patterns2.rs:19:12
@@ -85,8 +92,9 @@ LL |     if let box box 0 | box (box 2 | box 4) = Box::new(Box::new(0)) {}
    |
 help: nest the patterns
    |
-LL |     if let box box (0 | 2 | 4) = Box::new(Box::new(0)) {}
-   |            ~~~~~~~~~~~~~~~~~~~
+LL -     if let box box 0 | box (box 2 | box 4) = Box::new(Box::new(0)) {}
+LL +     if let box box (0 | 2 | 4) = Box::new(Box::new(0)) {}
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/src/tools/clippy/tests/ui/unused_enumerate_index.stderr b/src/tools/clippy/tests/ui/unused_enumerate_index.stderr
index 6ec07dcbff0..02d65f06430 100644
--- a/src/tools/clippy/tests/ui/unused_enumerate_index.stderr
+++ b/src/tools/clippy/tests/ui/unused_enumerate_index.stderr
@@ -8,8 +8,9 @@ LL |     for (_, x) in v.iter().enumerate() {
    = help: to override `-D warnings` add `#[allow(clippy::unused_enumerate_index)]`
 help: remove the `.enumerate()` call
    |
-LL |     for x in v.iter() {
-   |         ~    ~~~~~~~~
+LL -     for (_, x) in v.iter().enumerate() {
+LL +     for x in v.iter() {
+   |
 
 error: you seem to use `.enumerate()` and immediately discard the index
   --> tests/ui/unused_enumerate_index.rs:59:19
@@ -19,8 +20,9 @@ LL |     for (_, x) in dummy.enumerate() {
    |
 help: remove the `.enumerate()` call
    |
-LL |     for x in dummy {
-   |         ~    ~~~~~
+LL -     for (_, x) in dummy.enumerate() {
+LL +     for x in dummy {
+   |
 
 error: you seem to use `.enumerate()` and immediately discard the index
   --> tests/ui/unused_enumerate_index.rs:63:39
diff --git a/src/tools/clippy/tests/ui/unused_format_specs.stderr b/src/tools/clippy/tests/ui/unused_format_specs.stderr
index df61d59130e..d3c0530ced4 100644
--- a/src/tools/clippy/tests/ui/unused_format_specs.stderr
+++ b/src/tools/clippy/tests/ui/unused_format_specs.stderr
@@ -8,8 +8,9 @@ LL |     println!("{:5}.", format_args!(""));
    = help: to override `-D warnings` add `#[allow(clippy::unused_format_specs)]`
 help: for the width to apply consider using `format!()`
    |
-LL |     println!("{:5}.", format!(""));
-   |                       ~~~~~~
+LL -     println!("{:5}.", format_args!(""));
+LL +     println!("{:5}.", format!(""));
+   |
 help: if the current behavior is intentional, remove the format specifiers
    |
 LL -     println!("{:5}.", format_args!(""));
@@ -24,8 +25,9 @@ LL |     println!("{:.3}", format_args!("abcde"));
    |
 help: for the precision to apply consider using `format!()`
    |
-LL |     println!("{:.3}", format!("abcde"));
-   |                       ~~~~~~
+LL -     println!("{:.3}", format_args!("abcde"));
+LL +     println!("{:.3}", format!("abcde"));
+   |
 help: if the current behavior is intentional, remove the format specifiers
    |
 LL -     println!("{:.3}", format_args!("abcde"));
@@ -66,8 +68,9 @@ LL |     usr_println!(true, "{:5}.", format_args!(""));
    |
 help: for the width to apply consider using `format!()`
    |
-LL |     usr_println!(true, "{:5}.", format!(""));
-   |                                 ~~~~~~
+LL -     usr_println!(true, "{:5}.", format_args!(""));
+LL +     usr_println!(true, "{:5}.", format!(""));
+   |
 help: if the current behavior is intentional, remove the format specifiers
    |
 LL -     usr_println!(true, "{:5}.", format_args!(""));
@@ -82,8 +85,9 @@ LL |     usr_println!(true, "{:.3}", format_args!("abcde"));
    |
 help: for the precision to apply consider using `format!()`
    |
-LL |     usr_println!(true, "{:.3}", format!("abcde"));
-   |                                 ~~~~~~
+LL -     usr_println!(true, "{:.3}", format_args!("abcde"));
+LL +     usr_println!(true, "{:.3}", format!("abcde"));
+   |
 help: if the current behavior is intentional, remove the format specifiers
    |
 LL -     usr_println!(true, "{:.3}", format_args!("abcde"));
diff --git a/src/tools/clippy/tests/ui/unused_result_ok.stderr b/src/tools/clippy/tests/ui/unused_result_ok.stderr
index 241e0c71261..024aafa6bbb 100644
--- a/src/tools/clippy/tests/ui/unused_result_ok.stderr
+++ b/src/tools/clippy/tests/ui/unused_result_ok.stderr
@@ -8,8 +8,9 @@ LL |     x.parse::<u32>().ok();
    = help: to override `-D warnings` add `#[allow(clippy::unused_result_ok)]`
 help: consider using `let _ =` and removing the call to `.ok()` instead
    |
-LL |     let _ = x.parse::<u32>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     x.parse::<u32>().ok();
+LL +     let _ = x.parse::<u32>();
+   |
 
 error: ignoring a result with `.ok()` is misleading
   --> tests/ui/unused_result_ok.rs:18:5
@@ -19,8 +20,9 @@ LL |     x   .   parse::<i32>()   .   ok   ();
    |
 help: consider using `let _ =` and removing the call to `.ok()` instead
    |
-LL |     let _ = x   .   parse::<i32>();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     x   .   parse::<i32>()   .   ok   ();
+LL +     let _ = x   .   parse::<i32>();
+   |
 
 error: ignoring a result with `.ok()` is misleading
   --> tests/ui/unused_result_ok.rs:34:5
@@ -30,8 +32,9 @@ LL |     v!().ok();
    |
 help: consider using `let _ =` and removing the call to `.ok()` instead
    |
-LL |     let _ = v!();
-   |     ~~~~~~~~~~~~
+LL -     v!().ok();
+LL +     let _ = v!();
+   |
 
 error: ignoring a result with `.ok()` is misleading
   --> tests/ui/unused_result_ok.rs:29:9
@@ -45,8 +48,9 @@ LL |     w!();
    = note: this error originates in the macro `w` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: consider using `let _ =` and removing the call to `.ok()` instead
    |
-LL |         let _ = Ok::<(), ()>(());
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         Ok::<(), ()>(()).ok();
+LL +         let _ = Ok::<(), ()>(());
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/tools/enzyme b/src/tools/enzyme
-Subproject 0e5fa4a3d475f4dece489c9e06b11164f83789f
+Subproject 7f3b207c4413c9d715fd54b36b8a8fd3179e0b6
diff --git a/src/tools/miri/tests/pass/intrinsics/portable-simd.rs b/src/tools/miri/tests/pass/intrinsics/portable-simd.rs
index 0d0d79098d5..b6c5522b3d2 100644
--- a/src/tools/miri/tests/pass/intrinsics/portable-simd.rs
+++ b/src/tools/miri/tests/pass/intrinsics/portable-simd.rs
@@ -299,27 +299,6 @@ fn simd_mask() {
         }
     }
 
-    // This used to cause an ICE. It exercises simd_select_bitmask with an array as input.
-    let bitmask = u8x4::from_array([0b00001101, 0, 0, 0]);
-    assert_eq!(
-        mask32x4::from_bitmask_vector(bitmask),
-        mask32x4::from_array([true, false, true, true]),
-    );
-    let bitmask = u8x8::from_array([0b01000101, 0, 0, 0, 0, 0, 0, 0]);
-    assert_eq!(
-        mask32x8::from_bitmask_vector(bitmask),
-        mask32x8::from_array([true, false, true, false, false, false, true, false]),
-    );
-    let bitmask =
-        u8x16::from_array([0b01000101, 0b11110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
-    assert_eq!(
-        mask32x16::from_bitmask_vector(bitmask),
-        mask32x16::from_array([
-            true, false, true, false, false, false, true, false, false, false, false, false, true,
-            true, true, true,
-        ]),
-    );
-
     // Also directly call simd_select_bitmask, to test both kinds of argument types.
     unsafe {
         // These masks are exactly the results we got out above in the `simd_bitmask` tests.
diff --git a/src/tools/rustfmt/src/patterns.rs b/src/tools/rustfmt/src/patterns.rs
index 1d88726d945..bafed41e39f 100644
--- a/src/tools/rustfmt/src/patterns.rs
+++ b/src/tools/rustfmt/src/patterns.rs
@@ -75,12 +75,12 @@ fn is_short_pattern_inner(context: &RewriteContext<'_>, pat: &ast::Pat) -> bool
     }
 }
 
-pub(crate) struct RangeOperand<'a> {
-    operand: &'a Option<ptr::P<ast::Expr>>,
-    pub(crate) span: Span,
+pub(crate) struct RangeOperand<'a, T> {
+    pub operand: &'a Option<ptr::P<T>>,
+    pub span: Span,
 }
 
-impl<'a> Rewrite for RangeOperand<'a> {
+impl<'a, T: Rewrite> Rewrite for RangeOperand<'a, T> {
     fn rewrite(&self, context: &RewriteContext<'_>, shape: Shape) -> Option<String> {
         self.rewrite_result(context, shape).ok()
     }
@@ -259,40 +259,7 @@ impl Rewrite for Pat {
             }
             PatKind::Never => Err(RewriteError::Unknown),
             PatKind::Range(ref lhs, ref rhs, ref end_kind) => {
-                let infix = match end_kind.node {
-                    RangeEnd::Included(RangeSyntax::DotDotDot) => "...",
-                    RangeEnd::Included(RangeSyntax::DotDotEq) => "..=",
-                    RangeEnd::Excluded => "..",
-                };
-                let infix = if context.config.spaces_around_ranges() {
-                    let lhs_spacing = match lhs {
-                        None => "",
-                        Some(_) => " ",
-                    };
-                    let rhs_spacing = match rhs {
-                        None => "",
-                        Some(_) => " ",
-                    };
-                    format!("{lhs_spacing}{infix}{rhs_spacing}")
-                } else {
-                    infix.to_owned()
-                };
-                let lspan = self.span.with_hi(end_kind.span.lo());
-                let rspan = self.span.with_lo(end_kind.span.hi());
-                rewrite_pair(
-                    &RangeOperand {
-                        operand: lhs,
-                        span: lspan,
-                    },
-                    &RangeOperand {
-                        operand: rhs,
-                        span: rspan,
-                    },
-                    PairParts::infix(&infix),
-                    context,
-                    shape,
-                    SeparatorPlace::Front,
-                )
+                rewrite_range_pat(context, shape, lhs, rhs, end_kind, self.span)
             }
             PatKind::Ref(ref pat, mutability) => {
                 let prefix = format!("&{}", format_mutability(mutability));
@@ -359,6 +326,50 @@ impl Rewrite for Pat {
     }
 }
 
+pub fn rewrite_range_pat<T: Rewrite>(
+    context: &RewriteContext<'_>,
+    shape: Shape,
+    lhs: &Option<ptr::P<T>>,
+    rhs: &Option<ptr::P<T>>,
+    end_kind: &rustc_span::source_map::Spanned<RangeEnd>,
+    span: Span,
+) -> RewriteResult {
+    let infix = match end_kind.node {
+        RangeEnd::Included(RangeSyntax::DotDotDot) => "...",
+        RangeEnd::Included(RangeSyntax::DotDotEq) => "..=",
+        RangeEnd::Excluded => "..",
+    };
+    let infix = if context.config.spaces_around_ranges() {
+        let lhs_spacing = match lhs {
+            None => "",
+            Some(_) => " ",
+        };
+        let rhs_spacing = match rhs {
+            None => "",
+            Some(_) => " ",
+        };
+        format!("{lhs_spacing}{infix}{rhs_spacing}")
+    } else {
+        infix.to_owned()
+    };
+    let lspan = span.with_hi(end_kind.span.lo());
+    let rspan = span.with_lo(end_kind.span.hi());
+    rewrite_pair(
+        &RangeOperand {
+            operand: lhs,
+            span: lspan,
+        },
+        &RangeOperand {
+            operand: rhs,
+            span: rspan,
+        },
+        PairParts::infix(&infix),
+        context,
+        shape,
+        SeparatorPlace::Front,
+    )
+}
+
 fn rewrite_struct_pat(
     qself: &Option<ptr::P<ast::QSelf>>,
     path: &ast::Path,
diff --git a/src/tools/rustfmt/src/spanned.rs b/src/tools/rustfmt/src/spanned.rs
index 6b3e40b9115..e93eb53cd87 100644
--- a/src/tools/rustfmt/src/spanned.rs
+++ b/src/tools/rustfmt/src/spanned.rs
@@ -211,7 +211,7 @@ impl Spanned for ast::PreciseCapturingArg {
     }
 }
 
-impl<'a> Spanned for RangeOperand<'a> {
+impl<'a, T> Spanned for RangeOperand<'a, T> {
     fn span(&self) -> Span {
         self.span
     }
diff --git a/src/tools/rustfmt/src/types.rs b/src/tools/rustfmt/src/types.rs
index f8b713117f4..0009490e86f 100644
--- a/src/tools/rustfmt/src/types.rs
+++ b/src/tools/rustfmt/src/types.rs
@@ -18,6 +18,7 @@ use crate::lists::{
 use crate::macros::{MacroPosition, rewrite_macro};
 use crate::overflow;
 use crate::pairs::{PairParts, rewrite_pair};
+use crate::patterns::rewrite_range_pat;
 use crate::rewrite::{Rewrite, RewriteContext, RewriteError, RewriteErrorExt, RewriteResult};
 use crate::shape::Shape;
 use crate::source_map::SpanUtils;
@@ -1045,6 +1046,21 @@ impl Rewrite for ast::Ty {
     }
 }
 
+impl Rewrite for ast::TyPat {
+    fn rewrite(&self, context: &RewriteContext<'_>, shape: Shape) -> Option<String> {
+        self.rewrite_result(context, shape).ok()
+    }
+
+    fn rewrite_result(&self, context: &RewriteContext<'_>, shape: Shape) -> RewriteResult {
+        match self.kind {
+            ast::TyPatKind::Range(ref lhs, ref rhs, ref end_kind) => {
+                rewrite_range_pat(context, shape, lhs, rhs, end_kind, self.span)
+            }
+            ast::TyPatKind::Err(_) => Err(RewriteError::Unknown),
+        }
+    }
+}
+
 fn rewrite_bare_fn(
     bare_fn: &ast::BareFnTy,
     span: Span,
diff --git a/tests/assembly/targets/targets-elf.rs b/tests/assembly/targets/targets-elf.rs
index 0ff886653a4..b5c0ee5a107 100644
--- a/tests/assembly/targets/targets-elf.rs
+++ b/tests/assembly/targets/targets-elf.rs
@@ -228,6 +228,9 @@
 //@ revisions: i586_unknown_netbsd
 //@ [i586_unknown_netbsd] compile-flags: --target i586-unknown-netbsd
 //@ [i586_unknown_netbsd] needs-llvm-components: x86
+//@ revisions: i586_unknown_redox
+//@ [i586_unknown_redox] compile-flags: --target i586-unknown-redox
+//@ [i586_unknown_redox] needs-llvm-components: x86
 //@ revisions: i686_linux_android
 //@ [i686_linux_android] compile-flags: --target i686-linux-android
 //@ [i686_linux_android] needs-llvm-components: x86
@@ -252,9 +255,6 @@
 //@ revisions: i686_unknown_openbsd
 //@ [i686_unknown_openbsd] compile-flags: --target i686-unknown-openbsd
 //@ [i686_unknown_openbsd] needs-llvm-components: x86
-//@ revisions: i686_unknown_redox
-//@ [i686_unknown_redox] compile-flags: --target i686-unknown-redox
-//@ [i686_unknown_redox] needs-llvm-components: x86
 //@ revisions: i686_wrs_vxworks
 //@ [i686_wrs_vxworks] compile-flags: --target i686-wrs-vxworks
 //@ [i686_wrs_vxworks] needs-llvm-components: x86
diff --git a/tests/codegen/autodiff.rs b/tests/codegen/autodiff.rs
new file mode 100644
index 00000000000..abf7fcf3e4b
--- /dev/null
+++ b/tests/codegen/autodiff.rs
@@ -0,0 +1,33 @@
+//@ compile-flags: -C opt-level=3  -Clto=fat
+//@ no-prefer-dynamic
+//@ needs-enzyme
+#![feature(autodiff)]
+
+use std::autodiff::autodiff;
+
+#[autodiff(d_square, Reverse, Duplicated, Active)]
+#[no_mangle]
+fn square(x: &f64) -> f64 {
+    x * x
+}
+
+// CHECK:define internal fastcc double @diffesquare(double %x.0.val, ptr nocapture align 8 %"x'"
+// CHECK-NEXT:invertstart:
+// CHECK-NEXT:  %_0 = fmul double %x.0.val, %x.0.val
+// CHECK-NEXT:  %0 = fadd fast double %x.0.val, %x.0.val
+// CHECK-NEXT:  %1 = load double, ptr %"x'", align 8
+// CHECK-NEXT:  %2 = fadd fast double %1, %0
+// CHECK-NEXT:  store double %2, ptr %"x'", align 8
+// CHECK-NEXT:  ret double %_0
+// CHECK-NEXT:}
+
+fn main() {
+    let x = 3.0;
+    let output = square(&x);
+    assert_eq!(9.0, output);
+
+    let mut df_dx = 0.0;
+    let output_ = d_square(&x, &mut df_dx, 1.0);
+    assert_eq!(output, output_);
+    assert_eq!(6.0, df_dx);
+}
diff --git a/tests/incremental/feature_gate.rs b/tests/incremental/feature_gate.rs
index 54c2dbb352e..332cf944b5d 100644
--- a/tests/incremental/feature_gate.rs
+++ b/tests/incremental/feature_gate.rs
@@ -10,4 +10,4 @@ fn main() {
 }
 
 extern "unadjusted" fn foo() {}
-//[cfail2]~^ ERROR: unadjusted ABI is an implementation detail and perma-unstable
+//[cfail2]~^ ERROR: "unadjusted" ABI is an implementation detail and perma-unstable
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff
index 5a830254f61..2c89670dcf7 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff
index c11368a347c..8fecfe224cc 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff
index 037ed02ce65..976ea252c2f 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff
index 86351c78759..6c59f5e3e2e 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
index 20a3897a934..1f9cf6d6aca 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
index 2e396301fd0..a8760285fac 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
index 319691174cf..c398ae70a1a 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
index 5dafc89d53f..02934c02587 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
@@ -26,7 +26,7 @@
                           }
                           scope 11 (inlined NonZero::<usize>::get) {
                           }
-                          scope 12 (inlined without_provenance::<[bool; 0]>) {
+                          scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
                               }
                           }
diff --git a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
deleted file mode 100644
index 60742ef0e9a..00000000000
--- a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
+++ /dev/null
@@ -1,100 +0,0 @@
-- // MIR for `is_line_doc_comment_2` before DeduplicateBlocks
-+ // MIR for `is_line_doc_comment_2` after DeduplicateBlocks
-  
-  fn is_line_doc_comment_2(_1: &str) -> bool {
-      debug s => _1;
-      let mut _0: bool;
-      let mut _2: &[u8];
-      let mut _3: &str;
-      let mut _4: usize;
-      let mut _5: usize;
-      let mut _6: bool;
-      let mut _7: usize;
-      let mut _8: usize;
-      let mut _9: bool;
-  
-      bb0: {
-          StorageLive(_2);
-          StorageLive(_3);
-          _3 = &(*_1);
-          _2 = core::str::<impl str>::as_bytes(move _3) -> [return: bb1, unwind unreachable];
-      }
-  
-      bb1: {
-          StorageDead(_3);
-          _4 = Len((*_2));
-          _5 = const 4_usize;
-          _6 = Ge(move _4, move _5);
-          switchInt(move _6) -> [0: bb2, otherwise: bb3];
-      }
-  
-      bb2: {
-          _7 = Len((*_2));
-          _8 = const 3_usize;
-          _9 = Ge(move _7, move _8);
--         switchInt(move _9) -> [0: bb7, otherwise: bb8];
-+         switchInt(move _9) -> [0: bb11, otherwise: bb7];
-      }
-  
-      bb3: {
-          switchInt(copy (*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
-      }
-  
-      bb4: {
-          switchInt(copy (*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
-      }
-  
-      bb5: {
-          switchInt(copy (*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
-      }
-  
-      bb6: {
--         switchInt(copy (*_2)[3 of 4]) -> [47: bb13, otherwise: bb2];
-+         switchInt(copy (*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
-      }
-  
-      bb7: {
--         _0 = const false;
--         goto -> bb14;
-+         switchInt(copy (*_2)[0 of 3]) -> [47: bb8, otherwise: bb11];
-      }
-  
-      bb8: {
--         switchInt(copy (*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
-+         switchInt(copy (*_2)[1 of 3]) -> [47: bb9, otherwise: bb11];
-      }
-  
-      bb9: {
--         switchInt(copy (*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
-+         switchInt(copy (*_2)[2 of 3]) -> [47: bb10, 33: bb10, otherwise: bb11];
-      }
-  
-      bb10: {
--         switchInt(copy (*_2)[2 of 3]) -> [47: bb12, 33: bb11, otherwise: bb7];
--     }
-- 
--     bb11: {
-          _0 = const true;
--         goto -> bb14;
-+         goto -> bb12;
-      }
-  
--     bb12: {
--         _0 = const true;
--         goto -> bb14;
--     }
-- 
--     bb13: {
-+     bb11: {
-          _0 = const false;
--         goto -> bb14;
-+         goto -> bb12;
-      }
-  
--     bb14: {
-+     bb12: {
-          StorageDead(_2);
-          return;
-      }
-  }
-  
diff --git a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
deleted file mode 100644
index 7337a32f525..00000000000
--- a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
+++ /dev/null
@@ -1,100 +0,0 @@
-- // MIR for `is_line_doc_comment_2` before DeduplicateBlocks
-+ // MIR for `is_line_doc_comment_2` after DeduplicateBlocks
-  
-  fn is_line_doc_comment_2(_1: &str) -> bool {
-      debug s => _1;
-      let mut _0: bool;
-      let mut _2: &[u8];
-      let mut _3: &str;
-      let mut _4: usize;
-      let mut _5: usize;
-      let mut _6: bool;
-      let mut _7: usize;
-      let mut _8: usize;
-      let mut _9: bool;
-  
-      bb0: {
-          StorageLive(_2);
-          StorageLive(_3);
-          _3 = &(*_1);
-          _2 = core::str::<impl str>::as_bytes(move _3) -> [return: bb1, unwind continue];
-      }
-  
-      bb1: {
-          StorageDead(_3);
-          _4 = Len((*_2));
-          _5 = const 4_usize;
-          _6 = Ge(move _4, move _5);
-          switchInt(move _6) -> [0: bb2, otherwise: bb3];
-      }
-  
-      bb2: {
-          _7 = Len((*_2));
-          _8 = const 3_usize;
-          _9 = Ge(move _7, move _8);
--         switchInt(move _9) -> [0: bb7, otherwise: bb8];
-+         switchInt(move _9) -> [0: bb11, otherwise: bb7];
-      }
-  
-      bb3: {
-          switchInt(copy (*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
-      }
-  
-      bb4: {
-          switchInt(copy (*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
-      }
-  
-      bb5: {
-          switchInt(copy (*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
-      }
-  
-      bb6: {
--         switchInt(copy (*_2)[3 of 4]) -> [47: bb13, otherwise: bb2];
-+         switchInt(copy (*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
-      }
-  
-      bb7: {
--         _0 = const false;
--         goto -> bb14;
-+         switchInt(copy (*_2)[0 of 3]) -> [47: bb8, otherwise: bb11];
-      }
-  
-      bb8: {
--         switchInt(copy (*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
-+         switchInt(copy (*_2)[1 of 3]) -> [47: bb9, otherwise: bb11];
-      }
-  
-      bb9: {
--         switchInt(copy (*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
-+         switchInt(copy (*_2)[2 of 3]) -> [47: bb10, 33: bb10, otherwise: bb11];
-      }
-  
-      bb10: {
--         switchInt(copy (*_2)[2 of 3]) -> [47: bb12, 33: bb11, otherwise: bb7];
--     }
-- 
--     bb11: {
-          _0 = const true;
--         goto -> bb14;
-+         goto -> bb12;
-      }
-  
--     bb12: {
--         _0 = const true;
--         goto -> bb14;
--     }
-- 
--     bb13: {
-+     bb11: {
-          _0 = const false;
--         goto -> bb14;
-+         goto -> bb12;
-      }
-  
--     bb14: {
-+     bb12: {
-          StorageDead(_2);
-          return;
-      }
-  }
-  
diff --git a/tests/mir-opt/deduplicate_blocks.rs b/tests/mir-opt/deduplicate_blocks.rs
deleted file mode 100644
index 3a164cb09a0..00000000000
--- a/tests/mir-opt/deduplicate_blocks.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// skip-filecheck
-// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
-//@ test-mir-pass: DeduplicateBlocks
-
-// EMIT_MIR deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff
-pub const fn is_line_doc_comment_2(s: &str) -> bool {
-    match s.as_bytes() {
-        [b'/', b'/', b'/', b'/', ..] => false,
-        [b'/', b'/', b'/', ..] => true,
-        [b'/', b'/', b'!', ..] => true,
-        _ => false,
-    }
-}
-
-fn main() {
-    is_line_doc_comment_2("asd");
-}
diff --git a/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff b/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff
index 8e7964297d0..f56af33ea60 100644
--- a/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff
+++ b/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff
@@ -16,7 +16,7 @@
                       }
                       scope 8 (inlined NonZero::<usize>::get) {
                       }
-                      scope 9 (inlined without_provenance::<u8>) {
+                      scope 9 (inlined std::ptr::without_provenance::<u8>) {
                           scope 10 (inlined without_provenance_mut::<u8>) {
                           }
                       }
diff --git a/tests/mir-opt/gvn_type_id_polymorphic.cursed_is_i32.GVN.diff b/tests/mir-opt/gvn_type_id_polymorphic.cursed_is_i32.GVN.diff
new file mode 100644
index 00000000000..2f83f54d2af
--- /dev/null
+++ b/tests/mir-opt/gvn_type_id_polymorphic.cursed_is_i32.GVN.diff
@@ -0,0 +1,12 @@
+- // MIR for `cursed_is_i32` before GVN
++ // MIR for `cursed_is_i32` after GVN
+  
+  fn cursed_is_i32() -> bool {
+      let mut _0: bool;
+  
+      bb0: {
+          _0 = Eq(const cursed_is_i32::<T>::{constant#0}, const cursed_is_i32::<T>::{constant#1});
+          return;
+      }
+  }
+  
diff --git a/tests/mir-opt/gvn_type_id_polymorphic.rs b/tests/mir-opt/gvn_type_id_polymorphic.rs
new file mode 100644
index 00000000000..39bc5c24ecc
--- /dev/null
+++ b/tests/mir-opt/gvn_type_id_polymorphic.rs
@@ -0,0 +1,22 @@
+//@ test-mir-pass: GVN
+//@ compile-flags: -C opt-level=2
+
+#![feature(core_intrinsics)]
+
+fn generic<T>() {}
+
+const fn type_id_of_val<T: 'static>(_: &T) -> u128 {
+    std::intrinsics::type_id::<T>()
+}
+
+// EMIT_MIR gvn_type_id_polymorphic.cursed_is_i32.GVN.diff
+fn cursed_is_i32<T: 'static>() -> bool {
+    // CHECK-LABEL: fn cursed_is_i32(
+    // CHECK: _0 = Eq(const cursed_is_i32::<T>::{constant#0}, const cursed_is_i32::<T>::{constant#1});
+    // CHECK-NEXT: return;
+    (const { type_id_of_val(&generic::<T>) } == const { type_id_of_val(&generic::<i32>) })
+}
+
+fn main() {
+    dbg!(cursed_is_i32::<i32>());
+}
diff --git a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir
index 496ec78fd8d..b7a9b4a1fe0 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir
@@ -59,7 +59,7 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
                     let _9: *const T;
                     scope 7 {
                     }
-                    scope 12 (inlined without_provenance::<T>) {
+                    scope 12 (inlined std::ptr::without_provenance::<T>) {
                         scope 13 (inlined without_provenance_mut::<T>) {
                         }
                     }
diff --git a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir
index c4547cb888f..33dbf04d028 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir
@@ -34,7 +34,7 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
                     let _9: *const T;
                     scope 7 {
                     }
-                    scope 12 (inlined without_provenance::<T>) {
+                    scope 12 (inlined std::ptr::without_provenance::<T>) {
                         scope 13 (inlined without_provenance_mut::<T>) {
                         }
                     }
diff --git a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir
index 7d011ea3347..dc13bb23c31 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir
@@ -31,7 +31,7 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
                     let _9: *const T;
                     scope 7 {
                     }
-                    scope 12 (inlined without_provenance::<T>) {
+                    scope 12 (inlined std::ptr::without_provenance::<T>) {
                         scope 13 (inlined without_provenance_mut::<T>) {
                         }
                     }
diff --git a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir
index 75e6542a3a4..3f1e0e0f746 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir
@@ -31,7 +31,7 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
                     let _9: *const T;
                     scope 7 {
                     }
-                    scope 12 (inlined without_provenance::<T>) {
+                    scope 12 (inlined std::ptr::without_provenance::<T>) {
                         scope 13 (inlined without_provenance_mut::<T>) {
                         }
                     }
diff --git a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir
index 41bc91ab028..4b7ab4516d2 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir
@@ -34,7 +34,7 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
                     let _9: *const T;
                     scope 7 {
                     }
-                    scope 12 (inlined without_provenance::<T>) {
+                    scope 12 (inlined std::ptr::without_provenance::<T>) {
                         scope 13 (inlined without_provenance_mut::<T>) {
                         }
                     }
diff --git a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir
index 6ed8ef9715b..b2c15247cd7 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir
@@ -34,7 +34,7 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
                     let _9: *const T;
                     scope 7 {
                     }
-                    scope 12 (inlined without_provenance::<T>) {
+                    scope 12 (inlined std::ptr::without_provenance::<T>) {
                         scope 13 (inlined without_provenance_mut::<T>) {
                         }
                     }
diff --git a/tests/run-make/apple-deployment-target/rmake.rs b/tests/run-make/apple-deployment-target/rmake.rs
index 0ae95cb1f4b..839e21b7496 100644
--- a/tests/run-make/apple-deployment-target/rmake.rs
+++ b/tests/run-make/apple-deployment-target/rmake.rs
@@ -7,7 +7,11 @@
 
 //@ only-apple
 
-use run_make_support::{apple_os, cmd, run_in_tmpdir, rustc, target};
+use std::collections::HashSet;
+
+use run_make_support::{
+    apple_os, cmd, has_extension, path, regex, run_in_tmpdir, rustc, shallow_find_files, target,
+};
 
 /// Run vtool to check the `minos` field in LC_BUILD_VERSION.
 ///
@@ -166,4 +170,21 @@ fn main() {
         rustc().env_remove(env_var).run();
         minos("foo.o", default_version);
     });
+
+    // Test that all binaries in rlibs produced by `rustc` have the same version.
+    // Regression test for https://github.com/rust-lang/rust/issues/128419.
+    let sysroot = rustc().print("sysroot").run().stdout_utf8();
+    let target_sysroot = path(sysroot.trim()).join("lib/rustlib").join(target()).join("lib");
+    let rlibs = shallow_find_files(&target_sysroot, |path| has_extension(path, "rlib"));
+
+    let output = cmd("otool").arg("-l").args(rlibs).run().stdout_utf8();
+    let re = regex::Regex::new(r"(minos|version) ([0-9.]*)").unwrap();
+    let mut versions = HashSet::new();
+    for (_, [_, version]) in re.captures_iter(&output).map(|c| c.extract()) {
+        versions.insert(version);
+    }
+    // FIXME(madsmtm): See above for aarch64-apple-watchos.
+    if versions.len() != 1 && target() != "aarch64-apple-watchos" {
+        panic!("std rlibs contained multiple different deployment target versions: {versions:?}");
+    }
 }
diff --git a/tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr b/tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr
index ef7fec77b1e..3bba27e593c 100644
--- a/tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr
+++ b/tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr
@@ -11,8 +11,9 @@ LL | #![deny(rustdoc::broken_intra_doc_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: to link to the enum, prefix with `enum@`
    |
-LL | /// Link to [enum@S]
-   |              ~~~~~
+LL - /// Link to [struct@S]
+LL + /// Link to [enum@S]
+   |
 
 error: incompatible link kind for `S`
   --> $DIR/disambiguator-mismatch.rs:27:14
@@ -22,8 +23,9 @@ LL | /// Link to [mod@S]
    |
 help: to link to the enum, prefix with `enum@`
    |
-LL | /// Link to [enum@S]
-   |              ~~~~~
+LL - /// Link to [mod@S]
+LL + /// Link to [enum@S]
+   |
 
 error: incompatible link kind for `S`
   --> $DIR/disambiguator-mismatch.rs:32:14
@@ -33,8 +35,9 @@ LL | /// Link to [union@S]
    |
 help: to link to the enum, prefix with `enum@`
    |
-LL | /// Link to [enum@S]
-   |              ~~~~~
+LL - /// Link to [union@S]
+LL + /// Link to [enum@S]
+   |
 
 error: incompatible link kind for `S`
   --> $DIR/disambiguator-mismatch.rs:37:14
@@ -44,8 +47,9 @@ LL | /// Link to [trait@S]
    |
 help: to link to the enum, prefix with `enum@`
    |
-LL | /// Link to [enum@S]
-   |              ~~~~~
+LL - /// Link to [trait@S]
+LL + /// Link to [enum@S]
+   |
 
 error: incompatible link kind for `T`
   --> $DIR/disambiguator-mismatch.rs:42:14
@@ -55,8 +59,9 @@ LL | /// Link to [struct@T]
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// Link to [trait@T]
-   |              ~~~~~~
+LL - /// Link to [struct@T]
+LL + /// Link to [trait@T]
+   |
 
 error: incompatible link kind for `m`
   --> $DIR/disambiguator-mismatch.rs:47:14
@@ -89,8 +94,9 @@ LL | /// Link to [const@s]
    |
 help: to link to the static, prefix with `static@`
    |
-LL | /// Link to [static@s]
-   |              ~~~~~~~
+LL - /// Link to [const@s]
+LL + /// Link to [static@s]
+   |
 
 error: incompatible link kind for `c`
   --> $DIR/disambiguator-mismatch.rs:63:14
@@ -100,8 +106,9 @@ LL | /// Link to [static@c]
    |
 help: to link to the constant, prefix with `const@`
    |
-LL | /// Link to [const@c]
-   |              ~~~~~~
+LL - /// Link to [static@c]
+LL + /// Link to [const@c]
+   |
 
 error: incompatible link kind for `c`
   --> $DIR/disambiguator-mismatch.rs:68:14
@@ -111,8 +118,9 @@ LL | /// Link to [fn@c]
    |
 help: to link to the constant, prefix with `const@`
    |
-LL | /// Link to [const@c]
-   |              ~~~~~~
+LL - /// Link to [fn@c]
+LL + /// Link to [const@c]
+   |
 
 error: incompatible link kind for `c`
   --> $DIR/disambiguator-mismatch.rs:73:14
@@ -146,8 +154,9 @@ LL | /// Link to [fn@std]
    |
 help: to link to the crate, prefix with `mod@`
    |
-LL | /// Link to [mod@std]
-   |              ~~~~
+LL - /// Link to [fn@std]
+LL + /// Link to [mod@std]
+   |
 
 error: incompatible link kind for `X::y`
   --> $DIR/disambiguator-mismatch.rs:88:14
@@ -157,8 +166,9 @@ LL | /// Link to [method@X::y]
    |
 help: to link to the field, prefix with `field@`
    |
-LL | /// Link to [field@X::y]
-   |              ~~~~~~
+LL - /// Link to [method@X::y]
+LL + /// Link to [field@X::y]
+   |
 
 error: unresolved link to `S::A`
   --> $DIR/disambiguator-mismatch.rs:93:14
@@ -168,8 +178,9 @@ LL | /// Link to [field@S::A]
    |
 help: to link to the variant, prefix with `variant@`
    |
-LL | /// Link to [variant@S::A]
-   |              ~~~~~~~~
+LL - /// Link to [field@S::A]
+LL + /// Link to [variant@S::A]
+   |
 
 error: aborting due to 15 previous errors
 
diff --git a/tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr b/tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr
index b952517022b..2818b6b4bba 100644
--- a/tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr
+++ b/tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr
@@ -11,8 +11,9 @@ LL | #![deny(rustdoc::broken_intra_doc_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: to link to the associated constant, prefix with `const@`
    |
-LL | //! [const@u8::MIN]
-   |      ~~~~~~
+LL - //! [static@u8::MIN]
+LL + //! [const@u8::MIN]
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/rustdoc-ui/intra-doc/prim-conflict.stderr b/tests/rustdoc-ui/intra-doc/prim-conflict.stderr
index 03ce8f15f0a..c50f6bb9b87 100644
--- a/tests/rustdoc-ui/intra-doc/prim-conflict.stderr
+++ b/tests/rustdoc-ui/intra-doc/prim-conflict.stderr
@@ -26,12 +26,14 @@ LL | /// [type@char]
    |
 help: to link to the module, prefix with `mod@`
    |
-LL | /// [mod@char]
-   |      ~~~~
+LL - /// [type@char]
+LL + /// [mod@char]
+   |
 help: to link to the primitive type, prefix with `prim@`
    |
-LL | /// [prim@char]
-   |      ~~~~~
+LL - /// [type@char]
+LL + /// [prim@char]
+   |
 
 error: incompatible link kind for `char`
   --> $DIR/prim-conflict.rs:19:6
@@ -41,8 +43,9 @@ LL | /// [struct@char]
    |
 help: to link to the module, prefix with `mod@`
    |
-LL | /// [mod@char]
-   |      ~~~~
+LL - /// [struct@char]
+LL + /// [mod@char]
+   |
 
 error: incompatible link kind for `char`
   --> $DIR/prim-conflict.rs:26:10
@@ -52,8 +55,9 @@ LL |     //! [struct@char]
    |
 help: to link to the primitive type, prefix with `prim@`
    |
-LL |     //! [prim@char]
-   |          ~~~~~
+LL -     //! [struct@char]
+LL +     //! [prim@char]
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/rustdoc-ui/intra-doc/value-ctor.stderr b/tests/rustdoc-ui/intra-doc/value-ctor.stderr
index 8d2a6649f4c..cfc2bb67396 100644
--- a/tests/rustdoc-ui/intra-doc/value-ctor.stderr
+++ b/tests/rustdoc-ui/intra-doc/value-ctor.stderr
@@ -11,8 +11,9 @@ LL | #![deny(rustdoc::broken_intra_doc_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: to link to the variant, prefix with `variant@`
    |
-LL | /// [variant@Foo::X]
-   |      ~~~~~~~~
+LL - /// [value@Foo::X]
+LL + /// [variant@Foo::X]
+   |
 
 error: unresolved link to `MyStruct`
   --> $DIR/value-ctor.rs:10:11
@@ -22,8 +23,9 @@ LL | /// [tst][value@MyStruct]
    |
 help: to link to the struct, prefix with `struct@`
    |
-LL | /// [tst][struct@MyStruct]
-   |           ~~~~~~~
+LL - /// [tst][value@MyStruct]
+LL + /// [tst][struct@MyStruct]
+   |
 
 error: unresolved link to `Internals`
   --> $DIR/value-ctor.rs:20:15
@@ -33,8 +35,9 @@ LL | /// while [b][value@Internals] fails.
    |
 help: to link to the struct, prefix with `struct@`
    |
-LL | /// while [b][struct@Internals] fails.
-   |               ~~~~~~~
+LL - /// while [b][value@Internals] fails.
+LL + /// while [b][struct@Internals] fails.
+   |
 
 error: incompatible link kind for `Internals`
   --> $DIR/value-ctor.rs:22:15
@@ -44,8 +47,9 @@ LL | /// while [d][variant@Internals] fails.
    |
 help: to link to the struct, prefix with `struct@`
    |
-LL | /// while [d][struct@Internals] fails.
-   |               ~~~~~~~
+LL - /// while [d][variant@Internals] fails.
+LL + /// while [d][struct@Internals] fails.
+   |
 
 error: unresolved link to `Internals2`
   --> $DIR/value-ctor.rs:34:15
@@ -55,8 +59,9 @@ LL | /// while [b][value@Internals2] fails.
    |
 help: to link to the enum, prefix with `enum@`
    |
-LL | /// while [b][enum@Internals2] fails.
-   |               ~~~~~
+LL - /// while [b][value@Internals2] fails.
+LL + /// while [b][enum@Internals2] fails.
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/rustdoc-ui/intra-doc/weird-syntax.stderr b/tests/rustdoc-ui/intra-doc/weird-syntax.stderr
index 17bcbc783fd..1381c1b31eb 100644
--- a/tests/rustdoc-ui/intra-doc/weird-syntax.stderr
+++ b/tests/rustdoc-ui/intra-doc/weird-syntax.stderr
@@ -11,8 +11,9 @@ LL | #![deny(rustdoc::broken_intra_doc_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [`trait@Clone`]
-   |       ~~~~~~
+LL - /// [`struct@Clone`]
+LL + /// [`trait@Clone`]
+   |
 
 error: incompatible link kind for `Clone`
   --> $DIR/weird-syntax.rs:21:9
@@ -22,8 +23,9 @@ LL | /// [```struct@Clone```]
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [```trait@Clone```]
-   |         ~~~~~~
+LL - /// [```struct@Clone```]
+LL + /// [```trait@Clone```]
+   |
 
 error: incompatible link kind for `Clone`
   --> $DIR/weird-syntax.rs:24:11
@@ -33,8 +35,9 @@ LL | /// [  `  struct@Clone  `  ]
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [  `  trait@Clone  `  ]
-   |           ~~~~~~
+LL - /// [  `  struct@Clone  `  ]
+LL + /// [  `  trait@Clone  `  ]
+   |
 
 error: unresolved link to `Clone`
   --> $DIR/weird-syntax.rs:27:9
@@ -104,8 +107,9 @@ LL | /// [x][ struct@Clone]
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [x][ trait@Clone]
-   |          ~~~~~~
+LL - /// [x][ struct@Clone]
+LL + /// [x][ trait@Clone]
+   |
 
 error: incompatible link kind for `Clone`
   --> $DIR/weird-syntax.rs:65:9
@@ -115,8 +119,9 @@ LL | /// [x][struct@Clone ]
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [x][trait@Clone ]
-   |         ~~~~~~
+LL - /// [x][struct@Clone ]
+LL + /// [x][trait@Clone ]
+   |
 
 error: unresolved link to `Clone`
   --> $DIR/weird-syntax.rs:74:9
@@ -158,8 +163,9 @@ LL | /// [w]( struct@Clone)
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [w]( trait@Clone)
-   |          ~~~~~~
+LL - /// [w]( struct@Clone)
+LL + /// [w]( trait@Clone)
+   |
 
 error: incompatible link kind for `Clone`
   --> $DIR/weird-syntax.rs:94:9
@@ -169,8 +175,9 @@ LL | /// [w](struct@Clone )
    |
 help: to link to the trait, prefix with `trait@`
    |
-LL | /// [w](trait@Clone )
-   |         ~~~~~~
+LL - /// [w](struct@Clone )
+LL + /// [w](trait@Clone )
+   |
 
 error: unresolved link to `Clone`
   --> $DIR/weird-syntax.rs:97:9
diff --git a/tests/rustdoc-ui/issues/ice-generic-type-alias-105742.stderr b/tests/rustdoc-ui/issues/ice-generic-type-alias-105742.stderr
index 1e52b699820..e4a84655486 100644
--- a/tests/rustdoc-ui/issues/ice-generic-type-alias-105742.stderr
+++ b/tests/rustdoc-ui/issues/ice-generic-type-alias-105742.stderr
@@ -319,8 +319,9 @@ LL | |  > {
    | |__^ ...because it uses `Self` as a type parameter
 help: consider using an opaque type instead
    |
-LL | pub fn next<'a, T>(s: &'a mut impl SVec<Item = T, Output = T>) {
-   |                               ~~~~
+LL - pub fn next<'a, T>(s: &'a mut dyn SVec<Item = T, Output = T>) {
+LL + pub fn next<'a, T>(s: &'a mut impl SVec<Item = T, Output = T>) {
+   |
 
 error[E0107]: missing generics for associated type `SVec::Item`
   --> $DIR/ice-generic-type-alias-105742.rs:16:21
diff --git a/tests/rustdoc-ui/issues/ice-typeof-102986.stderr b/tests/rustdoc-ui/issues/ice-typeof-102986.stderr
index 20dbb2661bc..02e257a9163 100644
--- a/tests/rustdoc-ui/issues/ice-typeof-102986.stderr
+++ b/tests/rustdoc-ui/issues/ice-typeof-102986.stderr
@@ -6,8 +6,9 @@ LL |     y: (typeof("hey"),),
    |
 help: consider replacing `typeof(...)` with an actual type
    |
-LL |     y: (&str,),
-   |         ~~~~
+LL -     y: (typeof("hey"),),
+LL +     y: (&str,),
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/rustdoc-ui/issues/issue-120444-1.stderr b/tests/rustdoc-ui/issues/issue-120444-1.stderr
index 7bc56b4263f..aabdc91df2b 100644
--- a/tests/rustdoc-ui/issues/issue-120444-1.stderr
+++ b/tests/rustdoc-ui/issues/issue-120444-1.stderr
@@ -15,8 +15,9 @@ LL | #![deny(rustdoc::redundant_explicit_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: remove explicit link target
    |
-LL | /// [`Vfs`]
-   |     ~~~~~~~
+LL - /// [`Vfs`][crate::Vfs]
+LL + /// [`Vfs`]
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/rustdoc-ui/issues/issue-120444-2.stderr b/tests/rustdoc-ui/issues/issue-120444-2.stderr
index 310bf08e2b5..ee160736b4d 100644
--- a/tests/rustdoc-ui/issues/issue-120444-2.stderr
+++ b/tests/rustdoc-ui/issues/issue-120444-2.stderr
@@ -15,8 +15,9 @@ LL | #![deny(rustdoc::redundant_explicit_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: remove explicit link target
    |
-LL | /// [`Vfs`]
-   |     ~~~~~~~
+LL - /// [`Vfs`][crate::Vfs]
+LL + /// [`Vfs`]
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/rustdoc-ui/lints/redundant_explicit_links.stderr b/tests/rustdoc-ui/lints/redundant_explicit_links.stderr
index 34ec9be6646..f90c41af9f1 100644
--- a/tests/rustdoc-ui/lints/redundant_explicit_links.stderr
+++ b/tests/rustdoc-ui/lints/redundant_explicit_links.stderr
@@ -15,8 +15,9 @@ LL | #![deny(rustdoc::redundant_explicit_links)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: remove explicit link target
    |
-LL | /// [dummy_target]
-   |     ~~~~~~~~~~~~~~
+LL - /// [dummy_target](dummy_target)
+LL + /// [dummy_target]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:9:22
@@ -30,8 +31,9 @@ LL | /// [`dummy_target`](dummy_target)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`dummy_target`]
-   |     ~~~~~~~~~~~~~~~~
+LL - /// [`dummy_target`](dummy_target)
+LL + /// [`dummy_target`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:12:11
@@ -45,8 +47,9 @@ LL | /// [Vec](Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [Vec]
-   |     ~~~~~
+LL - /// [Vec](Vec)
+LL + /// [Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:14:13
@@ -60,8 +63,9 @@ LL | /// [`Vec`](Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`Vec`]
-   |     ~~~~~~~
+LL - /// [`Vec`](Vec)
+LL + /// [`Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:16:11
@@ -75,8 +79,9 @@ LL | /// [Vec](std::vec::Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [Vec]
-   |     ~~~~~
+LL - /// [Vec](std::vec::Vec)
+LL + /// [Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:18:13
@@ -90,8 +95,9 @@ LL | /// [`Vec`](std::vec::Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`Vec`]
-   |     ~~~~~~~
+LL - /// [`Vec`](std::vec::Vec)
+LL + /// [`Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:20:21
@@ -105,8 +111,9 @@ LL | /// [std::vec::Vec](Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::vec::Vec]
-   |     ~~~~~~~~~~~~~~~
+LL - /// [std::vec::Vec](Vec)
+LL + /// [std::vec::Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:22:23
@@ -120,8 +127,9 @@ LL | /// [`std::vec::Vec`](Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::vec::Vec`]
-   |     ~~~~~~~~~~~~~~~~~
+LL - /// [`std::vec::Vec`](Vec)
+LL + /// [`std::vec::Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:24:21
@@ -135,8 +143,9 @@ LL | /// [std::vec::Vec](std::vec::Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::vec::Vec]
-   |     ~~~~~~~~~~~~~~~
+LL - /// [std::vec::Vec](std::vec::Vec)
+LL + /// [std::vec::Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:26:23
@@ -150,8 +159,9 @@ LL | /// [`std::vec::Vec`](std::vec::Vec)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::vec::Vec`]
-   |     ~~~~~~~~~~~~~~~~~
+LL - /// [`std::vec::Vec`](std::vec::Vec)
+LL + /// [`std::vec::Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:29:13
@@ -165,8 +175,9 @@ LL | /// [usize](usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [usize]
-   |     ~~~~~~~
+LL - /// [usize](usize)
+LL + /// [usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:31:15
@@ -180,8 +191,9 @@ LL | /// [`usize`](usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`usize`]
-   |     ~~~~~~~~~
+LL - /// [`usize`](usize)
+LL + /// [`usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:33:13
@@ -195,8 +207,9 @@ LL | /// [usize](std::primitive::usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [usize]
-   |     ~~~~~~~
+LL - /// [usize](std::primitive::usize)
+LL + /// [usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:35:15
@@ -210,8 +223,9 @@ LL | /// [`usize`](std::primitive::usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`usize`]
-   |     ~~~~~~~~~
+LL - /// [`usize`](std::primitive::usize)
+LL + /// [`usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:37:29
@@ -225,8 +239,9 @@ LL | /// [std::primitive::usize](usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::primitive::usize]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [std::primitive::usize](usize)
+LL + /// [std::primitive::usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:39:31
@@ -240,8 +255,9 @@ LL | /// [`std::primitive::usize`](usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::primitive::usize`]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [`std::primitive::usize`](usize)
+LL + /// [`std::primitive::usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:41:29
@@ -255,8 +271,9 @@ LL | /// [std::primitive::usize](std::primitive::usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::primitive::usize]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [std::primitive::usize](std::primitive::usize)
+LL + /// [std::primitive::usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:43:31
@@ -270,8 +287,9 @@ LL | /// [`std::primitive::usize`](std::primitive::usize)
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::primitive::usize`]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [`std::primitive::usize`](std::primitive::usize)
+LL + /// [`std::primitive::usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:46:20
@@ -285,8 +303,9 @@ LL | /// [dummy_target](dummy_target) TEXT
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [dummy_target] TEXT
-   |     ~~~~~~~~~~~~~~
+LL - /// [dummy_target](dummy_target) TEXT
+LL + /// [dummy_target] TEXT
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:48:22
@@ -300,8 +319,9 @@ LL | /// [`dummy_target`](dummy_target) TEXT
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`dummy_target`] TEXT
-   |     ~~~~~~~~~~~~~~~~
+LL - /// [`dummy_target`](dummy_target) TEXT
+LL + /// [`dummy_target`] TEXT
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:56:20
@@ -315,8 +335,9 @@ LL | /// [dummy_target][dummy_target]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [dummy_target]
-   |     ~~~~~~~~~~~~~~
+LL - /// [dummy_target][dummy_target]
+LL + /// [dummy_target]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:58:22
@@ -330,8 +351,9 @@ LL | /// [`dummy_target`][dummy_target]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`dummy_target`]
-   |     ~~~~~~~~~~~~~~~~
+LL - /// [`dummy_target`][dummy_target]
+LL + /// [`dummy_target`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:61:11
@@ -345,8 +367,9 @@ LL | /// [Vec][Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [Vec]
-   |     ~~~~~
+LL - /// [Vec][Vec]
+LL + /// [Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:63:13
@@ -360,8 +383,9 @@ LL | /// [`Vec`][Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`Vec`]
-   |     ~~~~~~~
+LL - /// [`Vec`][Vec]
+LL + /// [`Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:65:11
@@ -375,8 +399,9 @@ LL | /// [Vec][std::vec::Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [Vec]
-   |     ~~~~~
+LL - /// [Vec][std::vec::Vec]
+LL + /// [Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:67:13
@@ -390,8 +415,9 @@ LL | /// [`Vec`][std::vec::Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`Vec`]
-   |     ~~~~~~~
+LL - /// [`Vec`][std::vec::Vec]
+LL + /// [`Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:69:21
@@ -405,8 +431,9 @@ LL | /// [std::vec::Vec][Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::vec::Vec]
-   |     ~~~~~~~~~~~~~~~
+LL - /// [std::vec::Vec][Vec]
+LL + /// [std::vec::Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:71:23
@@ -420,8 +447,9 @@ LL | /// [`std::vec::Vec`][Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::vec::Vec`]
-   |     ~~~~~~~~~~~~~~~~~
+LL - /// [`std::vec::Vec`][Vec]
+LL + /// [`std::vec::Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:73:21
@@ -435,8 +463,9 @@ LL | /// [std::vec::Vec][std::vec::Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::vec::Vec]
-   |     ~~~~~~~~~~~~~~~
+LL - /// [std::vec::Vec][std::vec::Vec]
+LL + /// [std::vec::Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:75:23
@@ -450,8 +479,9 @@ LL | /// [`std::vec::Vec`][std::vec::Vec]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::vec::Vec`]
-   |     ~~~~~~~~~~~~~~~~~
+LL - /// [`std::vec::Vec`][std::vec::Vec]
+LL + /// [`std::vec::Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:78:13
@@ -465,8 +495,9 @@ LL | /// [usize][usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [usize]
-   |     ~~~~~~~
+LL - /// [usize][usize]
+LL + /// [usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:80:15
@@ -480,8 +511,9 @@ LL | /// [`usize`][usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`usize`]
-   |     ~~~~~~~~~
+LL - /// [`usize`][usize]
+LL + /// [`usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:82:13
@@ -495,8 +527,9 @@ LL | /// [usize][std::primitive::usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [usize]
-   |     ~~~~~~~
+LL - /// [usize][std::primitive::usize]
+LL + /// [usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:84:15
@@ -510,8 +543,9 @@ LL | /// [`usize`][std::primitive::usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`usize`]
-   |     ~~~~~~~~~
+LL - /// [`usize`][std::primitive::usize]
+LL + /// [`usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:86:29
@@ -525,8 +559,9 @@ LL | /// [std::primitive::usize][usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::primitive::usize]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [std::primitive::usize][usize]
+LL + /// [std::primitive::usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:88:31
@@ -540,8 +575,9 @@ LL | /// [`std::primitive::usize`][usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::primitive::usize`]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [`std::primitive::usize`][usize]
+LL + /// [`std::primitive::usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:90:29
@@ -555,8 +591,9 @@ LL | /// [std::primitive::usize][std::primitive::usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::primitive::usize]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [std::primitive::usize][std::primitive::usize]
+LL + /// [std::primitive::usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:92:31
@@ -570,8 +607,9 @@ LL | /// [`std::primitive::usize`][std::primitive::usize]
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::primitive::usize`]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [`std::primitive::usize`][std::primitive::usize]
+LL + /// [`std::primitive::usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:95:20
@@ -585,8 +623,9 @@ LL | /// [dummy_target][dummy_target] TEXT
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [dummy_target] TEXT
-   |     ~~~~~~~~~~~~~~
+LL - /// [dummy_target][dummy_target] TEXT
+LL + /// [dummy_target] TEXT
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:97:22
@@ -600,8 +639,9 @@ LL | /// [`dummy_target`][dummy_target] TEXT
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`dummy_target`] TEXT
-   |     ~~~~~~~~~~~~~~~~
+LL - /// [`dummy_target`][dummy_target] TEXT
+LL + /// [`dummy_target`] TEXT
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:105:20
@@ -620,8 +660,9 @@ LL | /// [dummy_target]: dummy_target
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [dummy_target]
-   |     ~~~~~~~~~~~~~~
+LL - /// [dummy_target][dummy_target]
+LL + /// [dummy_target]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:107:22
@@ -640,8 +681,9 @@ LL | /// [dummy_target]: dummy_target
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`dummy_target`]
-   |     ~~~~~~~~~~~~~~~~
+LL - /// [`dummy_target`][dummy_target]
+LL + /// [`dummy_target`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:110:11
@@ -660,8 +702,9 @@ LL | /// [Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [Vec]
-   |     ~~~~~
+LL - /// [Vec][Vec]
+LL + /// [Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:112:13
@@ -680,8 +723,9 @@ LL | /// [Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`Vec`]
-   |     ~~~~~~~
+LL - /// [`Vec`][Vec]
+LL + /// [`Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:114:11
@@ -700,8 +744,9 @@ LL | /// [std::vec::Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [Vec]
-   |     ~~~~~
+LL - /// [Vec][std::vec::Vec]
+LL + /// [Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:116:13
@@ -720,8 +765,9 @@ LL | /// [std::vec::Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`Vec`]
-   |     ~~~~~~~
+LL - /// [`Vec`][std::vec::Vec]
+LL + /// [`Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:118:21
@@ -740,8 +786,9 @@ LL | /// [Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::vec::Vec]
-   |     ~~~~~~~~~~~~~~~
+LL - /// [std::vec::Vec][Vec]
+LL + /// [std::vec::Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:120:23
@@ -760,8 +807,9 @@ LL | /// [Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::vec::Vec`]
-   |     ~~~~~~~~~~~~~~~~~
+LL - /// [`std::vec::Vec`][Vec]
+LL + /// [`std::vec::Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:122:21
@@ -780,8 +828,9 @@ LL | /// [std::vec::Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::vec::Vec]
-   |     ~~~~~~~~~~~~~~~
+LL - /// [std::vec::Vec][std::vec::Vec]
+LL + /// [std::vec::Vec]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:124:23
@@ -800,8 +849,9 @@ LL | /// [std::vec::Vec]: Vec
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::vec::Vec`]
-   |     ~~~~~~~~~~~~~~~~~
+LL - /// [`std::vec::Vec`][std::vec::Vec]
+LL + /// [`std::vec::Vec`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:127:13
@@ -820,8 +870,9 @@ LL | /// [usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [usize]
-   |     ~~~~~~~
+LL - /// [usize][usize]
+LL + /// [usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:129:15
@@ -840,8 +891,9 @@ LL | /// [usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`usize`]
-   |     ~~~~~~~~~
+LL - /// [`usize`][usize]
+LL + /// [`usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:131:13
@@ -860,8 +912,9 @@ LL | /// [std::primitive::usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [usize]
-   |     ~~~~~~~
+LL - /// [usize][std::primitive::usize]
+LL + /// [usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:133:15
@@ -880,8 +933,9 @@ LL | /// [std::primitive::usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`usize`]
-   |     ~~~~~~~~~
+LL - /// [`usize`][std::primitive::usize]
+LL + /// [`usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:135:29
@@ -900,8 +954,9 @@ LL | /// [usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::primitive::usize]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [std::primitive::usize][usize]
+LL + /// [std::primitive::usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:137:31
@@ -920,8 +975,9 @@ LL | /// [usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::primitive::usize`]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [`std::primitive::usize`][usize]
+LL + /// [`std::primitive::usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:139:29
@@ -940,8 +996,9 @@ LL | /// [std::primitive::usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [std::primitive::usize]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [std::primitive::usize][std::primitive::usize]
+LL + /// [std::primitive::usize]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:141:31
@@ -960,8 +1017,9 @@ LL | /// [std::primitive::usize]: usize
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`std::primitive::usize`]
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - /// [`std::primitive::usize`][std::primitive::usize]
+LL + /// [`std::primitive::usize`]
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:144:20
@@ -980,8 +1038,9 @@ LL | /// [dummy_target]: dummy_target
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [dummy_target] TEXT
-   |     ~~~~~~~~~~~~~~
+LL - /// [dummy_target][dummy_target] TEXT
+LL + /// [dummy_target] TEXT
+   |
 
 error: redundant explicit link target
   --> $DIR/redundant_explicit_links.rs:146:22
@@ -1000,8 +1059,9 @@ LL | /// [dummy_target]: dummy_target
            the label is used to resolve intra-doc links
 help: remove explicit link target
    |
-LL | /// [`dummy_target`] TEXT
-   |     ~~~~~~~~~~~~~~~~
+LL - /// [`dummy_target`][dummy_target] TEXT
+LL + /// [`dummy_target`] TEXT
+   |
 
 error: aborting due to 60 previous errors
 
diff --git a/tests/ui/abi/removed-wasm-abi.rs b/tests/ui/abi/removed-wasm-abi.rs
deleted file mode 100644
index a45e42bfe02..00000000000
--- a/tests/ui/abi/removed-wasm-abi.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-extern "wasm" fn test() {}
-//~^ ERROR invalid ABI: found `wasm`
-
-fn main() {}
diff --git a/tests/ui/abi/riscv-discoverability-guidance.riscv32.stderr b/tests/ui/abi/riscv-discoverability-guidance.riscv32.stderr
index e80411fda34..e1f43347985 100644
--- a/tests/ui/abi/riscv-discoverability-guidance.riscv32.stderr
+++ b/tests/ui/abi/riscv-discoverability-guidance.riscv32.stderr
@@ -8,10 +8,9 @@ LL | extern "riscv-interrupt" fn isr() {}
    |        help: did you mean: `"riscv-interrupt-m"`
    |
    = note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-   = note: please use one of riscv-interrupt-m or riscv-interrupt-s for machine- or supervisor-level interrupts, respectively
 
 error[E0703]: invalid ABI: found `riscv-interrupt-u`
-  --> $DIR/riscv-discoverability-guidance.rs:23:8
+  --> $DIR/riscv-discoverability-guidance.rs:22:8
    |
 LL | extern "riscv-interrupt-u" fn isr_U() {}
    |        ^^^^^^^^^^^^^^^^^^^
@@ -20,7 +19,6 @@ LL | extern "riscv-interrupt-u" fn isr_U() {}
    |        help: did you mean: `"riscv-interrupt-m"`
    |
    = note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-   = note: user-mode interrupt handlers have been removed from LLVM pending standardization, see: https://reviews.llvm.org/D149314
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/abi/riscv-discoverability-guidance.riscv64.stderr b/tests/ui/abi/riscv-discoverability-guidance.riscv64.stderr
index e80411fda34..e1f43347985 100644
--- a/tests/ui/abi/riscv-discoverability-guidance.riscv64.stderr
+++ b/tests/ui/abi/riscv-discoverability-guidance.riscv64.stderr
@@ -8,10 +8,9 @@ LL | extern "riscv-interrupt" fn isr() {}
    |        help: did you mean: `"riscv-interrupt-m"`
    |
    = note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-   = note: please use one of riscv-interrupt-m or riscv-interrupt-s for machine- or supervisor-level interrupts, respectively
 
 error[E0703]: invalid ABI: found `riscv-interrupt-u`
-  --> $DIR/riscv-discoverability-guidance.rs:23:8
+  --> $DIR/riscv-discoverability-guidance.rs:22:8
    |
 LL | extern "riscv-interrupt-u" fn isr_U() {}
    |        ^^^^^^^^^^^^^^^^^^^
@@ -20,7 +19,6 @@ LL | extern "riscv-interrupt-u" fn isr_U() {}
    |        help: did you mean: `"riscv-interrupt-m"`
    |
    = note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-   = note: user-mode interrupt handlers have been removed from LLVM pending standardization, see: https://reviews.llvm.org/D149314
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/abi/riscv-discoverability-guidance.rs b/tests/ui/abi/riscv-discoverability-guidance.rs
index 1b189d907ba..dec5059b0a7 100644
--- a/tests/ui/abi/riscv-discoverability-guidance.rs
+++ b/tests/ui/abi/riscv-discoverability-guidance.rs
@@ -18,10 +18,8 @@ extern "riscv-interrupt" fn isr() {}
 //~^ ERROR invalid ABI
 //~^^ NOTE invalid ABI
 //~^^^ NOTE invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-//~^^^^ NOTE please use one of riscv-interrupt-m or riscv-interrupt-s
 
 extern "riscv-interrupt-u" fn isr_U() {}
 //~^ ERROR invalid ABI
 //~^^ NOTE invalid ABI
 //~^^^ NOTE invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-//~^^^^ NOTE user-mode interrupt handlers have been removed from LLVM pending standardization
diff --git a/tests/ui/anon-params/anon-params-denied-2018.stderr b/tests/ui/anon-params/anon-params-denied-2018.stderr
index 2d6356ffcb1..0c38987ca6f 100644
--- a/tests/ui/anon-params/anon-params-denied-2018.stderr
+++ b/tests/ui/anon-params/anon-params-denied-2018.stderr
@@ -31,8 +31,9 @@ LL |     fn foo_with_ref(self: &mut i32);
    |                     +++++
 help: if this is a parameter name, give it a type
    |
-LL |     fn foo_with_ref(i32: &mut TypeName);
-   |                     ~~~~~~~~~~~~~~~~~~
+LL -     fn foo_with_ref(&mut i32);
+LL +     fn foo_with_ref(i32: &mut TypeName);
+   |
 help: if this is a type, explicitly ignore the parameter name
    |
 LL |     fn foo_with_ref(_: &mut i32);
diff --git a/tests/ui/argument-suggestions/basic.stderr b/tests/ui/argument-suggestions/basic.stderr
index 83f0f630fe8..9a639d4b5e4 100644
--- a/tests/ui/argument-suggestions/basic.stderr
+++ b/tests/ui/argument-suggestions/basic.stderr
@@ -42,8 +42,9 @@ LL | fn missing(_i: u32) {}
    |    ^^^^^^^ -------
 help: provide the argument
    |
-LL |     missing(/* u32 */);
-   |            ~~~~~~~~~~~
+LL -     missing();
+LL +     missing(/* u32 */);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/basic.rs:23:5
@@ -60,8 +61,9 @@ LL | fn swapped(_i: u32, _s: &str) {}
    |    ^^^^^^^
 help: swap these arguments
    |
-LL |     swapped(1, "");
-   |            ~~~~~~~
+LL -     swapped("", 1);
+LL +     swapped(1, "");
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/basic.rs:24:5
@@ -79,8 +81,9 @@ LL | fn permuted(_x: X, _y: Y, _z: Z) {}
    |    ^^^^^^^^
 help: reorder these arguments
    |
-LL |     permuted(X {}, Y {}, Z {});
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     permuted(Y {}, Z {}, X {});
+LL +     permuted(X {}, Y {}, Z {});
+   |
 
 error[E0057]: this function takes 1 argument but 0 arguments were supplied
   --> $DIR/basic.rs:27:5
@@ -95,8 +98,9 @@ LL |     let closure = |x| x;
    |                   ^^^
 help: provide the argument
    |
-LL |     closure(/* x */);
-   |            ~~~~~~~~~
+LL -     closure();
+LL +     closure(/* x */);
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/argument-suggestions/complex.stderr b/tests/ui/argument-suggestions/complex.stderr
index 20c7c2fd7a5..be8838f17d7 100644
--- a/tests/ui/argument-suggestions/complex.stderr
+++ b/tests/ui/argument-suggestions/complex.stderr
@@ -11,8 +11,9 @@ LL | fn complex(_i: u32, _s: &str, _e: E, _f: F, _g: G, _x: X, _y: Y, _z: Z ) {}
    |    ^^^^^^^ -------            -----
 help: did you mean
    |
-LL |   complex(/* u32 */, &"", /* E */, F::X2, G{}, X {}, Y {}, Z {});
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   complex(1.0, H {}, &"", G{}, F::X2, Z {}, X {}, Y {});
+LL +   complex(/* u32 */, &"", /* E */, F::X2, G{}, X {}, Y {}, Z {});
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/display-is-suggestable.stderr b/tests/ui/argument-suggestions/display-is-suggestable.stderr
index eea88c3e78d..bb5df1ec234 100644
--- a/tests/ui/argument-suggestions/display-is-suggestable.stderr
+++ b/tests/ui/argument-suggestions/display-is-suggestable.stderr
@@ -11,8 +11,9 @@ LL | fn foo(x: &(dyn Display + Send)) {}
    |    ^^^ ------------------------
 help: provide the argument
    |
-LL |     foo(/* &dyn std::fmt::Display + Send */);
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     foo();
+LL +     foo(/* &dyn std::fmt::Display + Send */);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/extern-fn-arg-names.stderr b/tests/ui/argument-suggestions/extern-fn-arg-names.stderr
index 2aa4983624c..62670316cd1 100644
--- a/tests/ui/argument-suggestions/extern-fn-arg-names.stderr
+++ b/tests/ui/argument-suggestions/extern-fn-arg-names.stderr
@@ -17,8 +17,9 @@ LL |     fn dstfn(src: i32, dst: err);
    |        ^^^^^           ---
 help: provide the argument
    |
-LL |     dstfn(1, /* dst */);
-   |          ~~~~~~~~~~~~~~
+LL -     dstfn(1);
+LL +     dstfn(1, /* dst */);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/argument-suggestions/issue-100478.stderr b/tests/ui/argument-suggestions/issue-100478.stderr
index 6299571d998..8889a0ab5df 100644
--- a/tests/ui/argument-suggestions/issue-100478.stderr
+++ b/tests/ui/argument-suggestions/issue-100478.stderr
@@ -14,8 +14,9 @@ LL | fn three_diff(_a: T1, _b: T2, _c: T3) {}
    |    ^^^^^^^^^^ ------          ------
 help: provide the arguments
    |
-LL |     three_diff(/* T1 */, T2::new(0), /* T3 */);
-   |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     three_diff(T2::new(0));
+LL +     three_diff(/* T1 */, T2::new(0), /* T3 */);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/issue-100478.rs:35:5
@@ -34,8 +35,9 @@ LL | fn four_shuffle(_a: T1, _b: T2, _c: T3, _d: T4) {}
    |    ^^^^^^^^^^^^
 help: did you mean
    |
-LL |     four_shuffle(T1::default(), T2::default(), T3::default(), T4::default());
-   |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     four_shuffle(T3::default(), T4::default(), T1::default(), T2::default());
+LL +     four_shuffle(T1::default(), T2::default(), T3::default(), T4::default());
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/issue-100478.rs:36:5
@@ -53,8 +55,9 @@ LL | fn four_shuffle(_a: T1, _b: T2, _c: T3, _d: T4) {}
    |    ^^^^^^^^^^^^                         ------
 help: swap these arguments
    |
-LL |     four_shuffle(T1::default(), T2::default(), T3::default(), /* T4 */);
-   |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     four_shuffle(T3::default(), T2::default(), T1::default(), T3::default());
+LL +     four_shuffle(T1::default(), T2::default(), T3::default(), /* T4 */);
+   |
 
 error[E0061]: this function takes 8 arguments but 7 arguments were supplied
   --> $DIR/issue-100478.rs:47:5
@@ -72,8 +75,13 @@ LL | fn foo(p1: T1, p2: Arc<T2>, p3: T3, p4: Arc<T4>, p5: T5, p6: T6, p7: T7, p8
    |    ^^^         -----------
 help: provide the argument
    |
-LL |     foo(p1, /* Arc<T2> */, p3, p4, p5, p6, p7, p8);
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     foo(
+LL -
+LL -         p1, //p2,
+LL -         p3, p4, p5, p6, p7, p8,
+LL -     );
+LL +     foo(p1, /* Arc<T2> */, p3, p4, p5, p6, p7, p8);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/argument-suggestions/issue-101097.stderr b/tests/ui/argument-suggestions/issue-101097.stderr
index 45aa2dba5d5..25770e36aa3 100644
--- a/tests/ui/argument-suggestions/issue-101097.stderr
+++ b/tests/ui/argument-suggestions/issue-101097.stderr
@@ -15,8 +15,9 @@ LL | fn f(
    |    ^
 help: did you mean
    |
-LL |     f(A, A, B, B, C, C);
-   |      ~~~~~~~~~~~~~~~~~~
+LL -     f(C, A, A, A, B, B, C);
+LL +     f(A, A, B, B, C, C);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/issue-101097.rs:17:5
@@ -31,8 +32,9 @@ LL | fn f(
    |    ^
 help: did you mean
    |
-LL |     f(A, A, B, B, C, C);
-   |      ~~~~~~~~~~~~~~~~~~
+LL -     f(C, C, A, A, B, B);
+LL +     f(A, A, B, B, C, C);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/issue-101097.rs:18:5
@@ -55,8 +57,9 @@ LL |     c2: C,
    |     -----
 help: did you mean
    |
-LL |     f(A, A, B, B, /* C */, /* C */);
-   |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     f(A, A, D, D, B, B);
+LL +     f(A, A, B, B, /* C */, /* C */);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/issue-101097.rs:19:5
@@ -75,8 +78,9 @@ LL | fn f(
    |    ^
 help: did you mean
    |
-LL |     f(A, A, B, B, C, C);
-   |      ~~~~~~~~~~~~~~~~~~
+LL -     f(C, C, B, B, A, A);
+LL +     f(A, A, B, B, C, C);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/issue-101097.rs:20:5
@@ -99,8 +103,9 @@ LL |     b1: B,
    |     -----
 help: did you mean
    |
-LL |     f(A, A, /* B */, B, C, C);
-   |      ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     f(C, C, A, B, A, A);
+LL +     f(A, A, /* B */, B, C, C);
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/argument-suggestions/issue-109831.stderr b/tests/ui/argument-suggestions/issue-109831.stderr
index cee87223866..1a3a597175d 100644
--- a/tests/ui/argument-suggestions/issue-109831.stderr
+++ b/tests/ui/argument-suggestions/issue-109831.stderr
@@ -9,8 +9,9 @@ LL | fn f(b1: B, b2: B, a2: C) {}
    |
 help: a struct with a similar name exists
    |
-LL | fn f(b1: B, b2: B, a2: A) {}
-   |                        ~
+LL - fn f(b1: B, b2: B, a2: C) {}
+LL + fn f(b1: B, b2: B, a2: A) {}
+   |
 help: you might be missing a type parameter
    |
 LL | fn f<C>(b1: B, b2: B, a2: C) {}
diff --git a/tests/ui/argument-suggestions/issue-96638.stderr b/tests/ui/argument-suggestions/issue-96638.stderr
index 509b2a157de..288a6853d05 100644
--- a/tests/ui/argument-suggestions/issue-96638.stderr
+++ b/tests/ui/argument-suggestions/issue-96638.stderr
@@ -13,8 +13,9 @@ LL | fn f(_: usize, _: &usize, _: usize) {}
    |    ^ --------             --------
 help: provide the argument
    |
-LL |     f(/* usize */, &x, /* usize */);
-   |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     f(&x, "");
+LL +     f(/* usize */, &x, /* usize */);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/issue-97197.stderr b/tests/ui/argument-suggestions/issue-97197.stderr
index 1cf19fc1bc8..acaf4f15107 100644
--- a/tests/ui/argument-suggestions/issue-97197.stderr
+++ b/tests/ui/argument-suggestions/issue-97197.stderr
@@ -11,8 +11,9 @@ LL | pub fn g(a1: (), a2: bool, a3: bool, a4: bool, a5: bool, a6: ()) -> () {}
    |        ^         --------  --------  --------  --------
 help: provide the arguments
    |
-LL |     g((), /* bool */, /* bool */, /* bool */, /* bool */, ());
-   |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     g((), ());
+LL +     g((), /* bool */, /* bool */, /* bool */, /* bool */, ());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/issue-98894.stderr b/tests/ui/argument-suggestions/issue-98894.stderr
index 93e604c3101..44353cb3338 100644
--- a/tests/ui/argument-suggestions/issue-98894.stderr
+++ b/tests/ui/argument-suggestions/issue-98894.stderr
@@ -11,8 +11,9 @@ LL |     (|_, ()| ())(if true {} else {return;});
    |      ^^^^^^^
 help: provide the argument
    |
-LL |     (|_, ()| ())(if true {} else {return;}, ());
-   |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     (|_, ()| ())(if true {} else {return;});
+LL +     (|_, ()| ())(if true {} else {return;}, ());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/issue-98897.stderr b/tests/ui/argument-suggestions/issue-98897.stderr
index 671e3d99d85..fd3ef467b1c 100644
--- a/tests/ui/argument-suggestions/issue-98897.stderr
+++ b/tests/ui/argument-suggestions/issue-98897.stderr
@@ -11,8 +11,9 @@ LL |     (|_, ()| ())([return, ()]);
    |      ^^^^^^^
 help: provide the argument
    |
-LL |     (|_, ()| ())([return, ()], ());
-   |                 ~~~~~~~~~~~~~~~~~~
+LL -     (|_, ()| ())([return, ()]);
+LL +     (|_, ()| ())([return, ()], ());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/issue-99482.stderr b/tests/ui/argument-suggestions/issue-99482.stderr
index be407874615..b3c39604a99 100644
--- a/tests/ui/argument-suggestions/issue-99482.stderr
+++ b/tests/ui/argument-suggestions/issue-99482.stderr
@@ -11,8 +11,9 @@ LL |     let f = |_: (), f: fn()| f;
    |             ^^^^^^^^^^^^^^^^
 help: provide the argument
    |
-LL |     let _f = f((), main);
-   |               ~~~~~~~~~~
+LL -     let _f = f(main);
+LL +     let _f = f((), main);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/argument-suggestions/missing_arguments.stderr b/tests/ui/argument-suggestions/missing_arguments.stderr
index fc219b9ce2c..264c485cbe1 100644
--- a/tests/ui/argument-suggestions/missing_arguments.stderr
+++ b/tests/ui/argument-suggestions/missing_arguments.stderr
@@ -11,8 +11,9 @@ LL | fn one_arg(_a: i32) {}
    |    ^^^^^^^ -------
 help: provide the argument
    |
-LL |   one_arg(/* i32 */);
-   |          ~~~~~~~~~~~
+LL -   one_arg();
+LL +   one_arg(/* i32 */);
+   |
 
 error[E0061]: this function takes 2 arguments but 0 arguments were supplied
   --> $DIR/missing_arguments.rs:14:3
@@ -27,8 +28,9 @@ LL | fn two_same(_a: i32, _b: i32) {}
    |    ^^^^^^^^ -------  -------
 help: provide the arguments
    |
-LL |   two_same(/* i32 */, /* i32 */);
-   |           ~~~~~~~~~~~~~~~~~~~~~~
+LL -   two_same(               );
+LL +   two_same(/* i32 */, /* i32 */);
+   |
 
 error[E0061]: this function takes 2 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:15:3
@@ -43,8 +45,9 @@ LL | fn two_same(_a: i32, _b: i32) {}
    |    ^^^^^^^^          -------
 help: provide the argument
    |
-LL |   two_same(1, /* i32 */);
-   |           ~~~~~~~~~~~~~~
+LL -   two_same(   1           );
+LL +   two_same(1, /* i32 */);
+   |
 
 error[E0061]: this function takes 2 arguments but 0 arguments were supplied
   --> $DIR/missing_arguments.rs:16:3
@@ -59,8 +62,9 @@ LL | fn two_diff(_a: i32, _b: f32) {}
    |    ^^^^^^^^ -------  -------
 help: provide the arguments
    |
-LL |   two_diff(/* i32 */, /* f32 */);
-   |           ~~~~~~~~~~~~~~~~~~~~~~
+LL -   two_diff(               );
+LL +   two_diff(/* i32 */, /* f32 */);
+   |
 
 error[E0061]: this function takes 2 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:17:3
@@ -75,8 +79,9 @@ LL | fn two_diff(_a: i32, _b: f32) {}
    |    ^^^^^^^^          -------
 help: provide the argument
    |
-LL |   two_diff(1, /* f32 */);
-   |           ~~~~~~~~~~~~~~
+LL -   two_diff(   1           );
+LL +   two_diff(1, /* f32 */);
+   |
 
 error[E0061]: this function takes 2 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:18:3
@@ -91,8 +96,9 @@ LL | fn two_diff(_a: i32, _b: f32) {}
    |    ^^^^^^^^ -------
 help: provide the argument
    |
-LL |   two_diff(/* i32 */, 1.0);
-   |           ~~~~~~~~~~~~~~~~
+LL -   two_diff(          1.0  );
+LL +   two_diff(/* i32 */, 1.0);
+   |
 
 error[E0061]: this function takes 3 arguments but 0 arguments were supplied
   --> $DIR/missing_arguments.rs:21:3
@@ -107,8 +113,9 @@ LL | fn three_same(_a: i32, _b: i32, _c: i32) {}
    |    ^^^^^^^^^^ -------  -------  -------
 help: provide the arguments
    |
-LL |   three_same(/* i32 */, /* i32 */, /* i32 */);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   three_same(                       );
+LL +   three_same(/* i32 */, /* i32 */, /* i32 */);
+   |
 
 error[E0061]: this function takes 3 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:22:3
@@ -123,8 +130,9 @@ LL | fn three_same(_a: i32, _b: i32, _c: i32) {}
    |    ^^^^^^^^^^          -------  -------
 help: provide the arguments
    |
-LL |   three_same(1, /* i32 */, /* i32 */);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   three_same(   1                   );
+LL +   three_same(1, /* i32 */, /* i32 */);
+   |
 
 error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> $DIR/missing_arguments.rs:23:3
@@ -139,8 +147,9 @@ LL | fn three_same(_a: i32, _b: i32, _c: i32) {}
    |    ^^^^^^^^^^                   -------
 help: provide the argument
    |
-LL |   three_same(1, 1, /* i32 */);
-   |             ~~~~~~~~~~~~~~~~~
+LL -   three_same(   1,      1           );
+LL +   three_same(1, 1, /* i32 */);
+   |
 
 error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> $DIR/missing_arguments.rs:26:3
@@ -155,8 +164,9 @@ LL | fn three_diff(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^ -------
 help: provide the argument
    |
-LL |   three_diff(/* i32 */, 1.0, "");
-   |             ~~~~~~~~~~~~~~~~~~~~
+LL -   three_diff(          1.0,     ""  );
+LL +   three_diff(/* i32 */, 1.0, "");
+   |
 
 error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> $DIR/missing_arguments.rs:27:3
@@ -171,8 +181,9 @@ LL | fn three_diff(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------
 help: provide the argument
    |
-LL |   three_diff(1, /* f32 */, "");
-   |             ~~~~~~~~~~~~~~~~~~
+LL -   three_diff(   1,              ""  );
+LL +   three_diff(1, /* f32 */, "");
+   |
 
 error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> $DIR/missing_arguments.rs:28:3
@@ -187,8 +198,9 @@ LL | fn three_diff(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^                   --------
 help: provide the argument
    |
-LL |   three_diff(1, 1.0, /* &str */);
-   |             ~~~~~~~~~~~~~~~~~~~~
+LL -   three_diff(   1,     1.0          );
+LL +   three_diff(1, 1.0, /* &str */);
+   |
 
 error[E0061]: this function takes 3 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:29:3
@@ -203,8 +215,9 @@ LL | fn three_diff(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^ -------  -------
 help: provide the arguments
    |
-LL |   three_diff(/* i32 */, /* f32 */, "");
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   three_diff(                   ""  );
+LL +   three_diff(/* i32 */, /* f32 */, "");
+   |
 
 error[E0061]: this function takes 3 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:30:3
@@ -222,8 +235,9 @@ LL | fn three_diff(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^ -------           --------
 help: provide the arguments
    |
-LL |   three_diff(/* i32 */, 1.0, /* &str */);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   three_diff(          1.0          );
+LL +   three_diff(/* i32 */, 1.0, /* &str */);
+   |
 
 error[E0061]: this function takes 3 arguments but 1 argument was supplied
   --> $DIR/missing_arguments.rs:31:3
@@ -238,8 +252,9 @@ LL | fn three_diff(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------  --------
 help: provide the arguments
    |
-LL |   three_diff(1, /* f32 */, /* &str */);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   three_diff(   1                   );
+LL +   three_diff(1, /* f32 */, /* &str */);
+   |
 
 error[E0061]: this function takes 4 arguments but 0 arguments were supplied
   --> $DIR/missing_arguments.rs:34:3
@@ -254,8 +269,9 @@ LL | fn four_repeated(_a: i32, _b: f32, _c: f32, _d: &str) {}
    |    ^^^^^^^^^^^^^ -------  -------  -------  --------
 help: provide the arguments
    |
-LL |   four_repeated(/* i32 */, /* f32 */, /* f32 */, /* &str */);
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   four_repeated(                               );
+LL +   four_repeated(/* i32 */, /* f32 */, /* f32 */, /* &str */);
+   |
 
 error[E0061]: this function takes 4 arguments but 2 arguments were supplied
   --> $DIR/missing_arguments.rs:35:3
@@ -270,8 +286,9 @@ LL | fn four_repeated(_a: i32, _b: f32, _c: f32, _d: &str) {}
    |    ^^^^^^^^^^^^^          -------  -------
 help: provide the arguments
    |
-LL |   four_repeated(1, /* f32 */, /* f32 */, "");
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   four_repeated(   1,                     ""   );
+LL +   four_repeated(1, /* f32 */, /* f32 */, "");
+   |
 
 error[E0061]: this function takes 5 arguments but 0 arguments were supplied
   --> $DIR/missing_arguments.rs:38:3
@@ -286,8 +303,9 @@ LL | fn complex(_a: i32, _b: f32, _c: i32, _d: f32, _e: &str) {}
    |    ^^^^^^^ -------  -------  -------  -------  --------
 help: provide the arguments
    |
-LL |   complex(/* i32 */, /* f32 */, /* i32 */, /* f32 */, /* &str */);
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   complex(                               );
+LL +   complex(/* i32 */, /* f32 */, /* i32 */, /* f32 */, /* &str */);
+   |
 
 error[E0061]: this function takes 5 arguments but 2 arguments were supplied
   --> $DIR/missing_arguments.rs:39:3
@@ -302,8 +320,9 @@ LL | fn complex(_a: i32, _b: f32, _c: i32, _d: f32, _e: &str) {}
    |    ^^^^^^^          -------  -------  -------
 help: provide the arguments
    |
-LL |   complex(1, /* f32 */, /* i32 */, /* f32 */, "");
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   complex(   1,                     ""   );
+LL +   complex(1, /* f32 */, /* i32 */, /* f32 */, "");
+   |
 
 error: aborting due to 19 previous errors
 
diff --git a/tests/ui/argument-suggestions/mixed_cases.stderr b/tests/ui/argument-suggestions/mixed_cases.stderr
index c19cd68c771..0dcb4337eb1 100644
--- a/tests/ui/argument-suggestions/mixed_cases.stderr
+++ b/tests/ui/argument-suggestions/mixed_cases.stderr
@@ -33,8 +33,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------
 help: did you mean
    |
-LL |   three_args(1, /* f32 */, "");
-   |             ~~~~~~~~~~~~~~~~~~
+LL -   three_args(1, "", X {}, "");
+LL +   three_args(1, /* f32 */, "");
+   |
 
 error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> $DIR/mixed_cases.rs:14:3
@@ -52,8 +53,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------  --------
 help: provide the argument
    |
-LL |   three_args(1, /* f32 */, /* &str */);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   three_args(1, X {});
+LL +   three_args(1, /* f32 */, /* &str */);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/mixed_cases.rs:17:3
@@ -70,8 +72,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------
 help: did you mean
    |
-LL |   three_args(1, /* f32 */, "");
-   |             ~~~~~~~~~~~~~~~~~~
+LL -   three_args(1, "", X {});
+LL +   three_args(1, /* f32 */, "");
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/mixed_cases.rs:20:3
@@ -89,8 +92,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------
 help: swap these arguments
    |
-LL |   three_args(1, /* f32 */, "");
-   |             ~~~~~~~~~~~~~~~~~~
+LL -   three_args("", X {}, 1);
+LL +   three_args(1, /* f32 */, "");
+   |
 
 error[E0061]: this function takes 3 arguments but 2 arguments were supplied
   --> $DIR/mixed_cases.rs:23:3
@@ -109,8 +113,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^          -------
 help: did you mean
    |
-LL |   three_args(1, /* f32 */, "");
-   |             ~~~~~~~~~~~~~~~~~~
+LL -   three_args("", 1);
+LL +   three_args(1, /* f32 */, "");
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/argument-suggestions/permuted_arguments.stderr b/tests/ui/argument-suggestions/permuted_arguments.stderr
index f6bec520984..9592fc2801c 100644
--- a/tests/ui/argument-suggestions/permuted_arguments.stderr
+++ b/tests/ui/argument-suggestions/permuted_arguments.stderr
@@ -14,8 +14,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^
 help: reorder these arguments
    |
-LL |   three_args(1, 1.0, "");
-   |             ~~~~~~~~~~~~
+LL -   three_args(1.0, "", 1);
+LL +   three_args(1, 1.0, "");
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/permuted_arguments.rs:12:3
@@ -35,8 +36,9 @@ LL | fn many_args(_a: i32, _b: f32, _c: &str, _d: X, _e: Y) {}
    |    ^^^^^^^^^
 help: reorder these arguments
    |
-LL |   many_args(1, 1.0, "", X {}, Y {});
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   many_args(X {}, Y {}, 1, 1.0, "");
+LL +   many_args(1, 1.0, "", X {}, Y {});
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/argument-suggestions/swapped_arguments.stderr b/tests/ui/argument-suggestions/swapped_arguments.stderr
index 22db77b3b93..f72659363ac 100644
--- a/tests/ui/argument-suggestions/swapped_arguments.stderr
+++ b/tests/ui/argument-suggestions/swapped_arguments.stderr
@@ -13,8 +13,9 @@ LL | fn two_args(_a: i32, _b: f32) {}
    |    ^^^^^^^^
 help: swap these arguments
    |
-LL |   two_args(1, 1.0);
-   |           ~~~~~~~~
+LL -   two_args(1.0, 1);
+LL +   two_args(1, 1.0);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/swapped_arguments.rs:9:3
@@ -31,8 +32,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^
 help: swap these arguments
    |
-LL |   three_args(1, 1.0, "");
-   |             ~~~~~~~~~~~~
+LL -   three_args(1.0,   1,  "");
+LL +   three_args(1, 1.0, "");
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/swapped_arguments.rs:10:3
@@ -49,8 +51,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^
 help: swap these arguments
    |
-LL |   three_args(1, 1.0, "");
-   |             ~~~~~~~~~~~~
+LL -   three_args(  1,  "", 1.0);
+LL +   three_args(1, 1.0, "");
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/swapped_arguments.rs:11:3
@@ -67,8 +70,9 @@ LL | fn three_args(_a: i32, _b: f32, _c: &str) {}
    |    ^^^^^^^^^^
 help: swap these arguments
    |
-LL |   three_args(1, 1.0, "");
-   |             ~~~~~~~~~~~~
+LL -   three_args( "", 1.0,   1);
+LL +   three_args(1, 1.0, "");
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/swapped_arguments.rs:13:3
@@ -87,8 +91,9 @@ LL | fn four_args(_a: i32, _b: f32, _c: &str, _d: X) {}
    |    ^^^^^^^^^
 help: did you mean
    |
-LL |   four_args(1, 1.0, "", X {});
-   |            ~~~~~~~~~~~~~~~~~~
+LL -   four_args(1.0, 1, X {}, "");
+LL +   four_args(1, 1.0, "", X {});
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/array-slice-vec/suggest-array-length.stderr b/tests/ui/array-slice-vec/suggest-array-length.stderr
index b71be306780..14d10832e36 100644
--- a/tests/ui/array-slice-vec/suggest-array-length.stderr
+++ b/tests/ui/array-slice-vec/suggest-array-length.stderr
@@ -6,8 +6,9 @@ LL |     const Foo: [i32; _] = [1, 2, 3];
    |
 help: replace this with a fully-specified type
    |
-LL |     const Foo: [i32; 3] = [1, 2, 3];
-   |                ~~~~~~~~
+LL -     const Foo: [i32; _] = [1, 2, 3];
+LL +     const Foo: [i32; 3] = [1, 2, 3];
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
   --> $DIR/suggest-array-length.rs:7:26
@@ -17,8 +18,9 @@ LL |     const REF_FOO: &[u8; _] = &[1];
    |
 help: replace this with a fully-specified type
    |
-LL |     const REF_FOO: &[u8; 1] = &[1];
-   |                    ~~~~~~~~
+LL -     const REF_FOO: &[u8; _] = &[1];
+LL +     const REF_FOO: &[u8; 1] = &[1];
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/suggest-array-length.rs:9:26
@@ -28,8 +30,9 @@ LL |     static Statik: [i32; _] = [1, 2, 3];
    |
 help: replace this with a fully-specified type
    |
-LL |     static Statik: [i32; 3] = [1, 2, 3];
-   |                    ~~~~~~~~
+LL -     static Statik: [i32; _] = [1, 2, 3];
+LL +     static Statik: [i32; 3] = [1, 2, 3];
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/suggest-array-length.rs:11:30
@@ -39,8 +42,9 @@ LL |     static REF_STATIK: &[u8; _] = &[1];
    |
 help: replace this with a fully-specified type
    |
-LL |     static REF_STATIK: &[u8; 1] = &[1];
-   |                        ~~~~~~~~
+LL -     static REF_STATIK: &[u8; _] = &[1];
+LL +     static REF_STATIK: &[u8; 1] = &[1];
+   |
 
 error[E0658]: using `_` for array lengths is unstable
   --> $DIR/suggest-array-length.rs:13:20
diff --git a/tests/ui/asm/aarch64/bad-reg.stderr b/tests/ui/asm/aarch64/bad-reg.stderr
index 370752ad0f1..c76722f32a7 100644
--- a/tests/ui/asm/aarch64/bad-reg.stderr
+++ b/tests/ui/asm/aarch64/bad-reg.stderr
@@ -3,6 +3,8 @@ error: invalid register class `foo`: unknown register class
    |
 LL |         asm!("{}", in(foo) foo);
    |                    ^^^^^^^^^^^
+   |
+   = note: the following register classes are supported on this target: `reg`, `vreg`, `vreg_low16`, `preg`
 
 error: invalid register `foo`: unknown register
   --> $DIR/bad-reg.rs:14:18
diff --git a/tests/ui/asm/aarch64/parse-error.stderr b/tests/ui/asm/aarch64/parse-error.stderr
index 7b273282ee6..b5e1169e5f6 100644
--- a/tests/ui/asm/aarch64/parse-error.stderr
+++ b/tests/ui/asm/aarch64/parse-error.stderr
@@ -330,8 +330,9 @@ LL |         asm!("{}", options(), const foo);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:45:44
@@ -341,8 +342,9 @@ LL |         asm!("{}", clobber_abi("C"), const foo);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:48:55
@@ -352,8 +354,9 @@ LL |         asm!("{}", options(), clobber_abi("C"), const foo);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:50:31
@@ -363,8 +366,9 @@ LL |         asm!("{a}", a = const foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:50:46
@@ -374,8 +378,9 @@ LL |         asm!("{a}", a = const foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:57:45
@@ -385,8 +390,9 @@ LL |         asm!("{a}", in("x0") foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:59:45
@@ -396,8 +402,9 @@ LL |         asm!("{a}", in("x0") foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:61:41
@@ -407,8 +414,9 @@ LL |         asm!("{1}", in("x0") foo, const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error: aborting due to 59 previous errors
 
diff --git a/tests/ui/asm/invalid-const-operand.stderr b/tests/ui/asm/invalid-const-operand.stderr
index bda4b0355b7..13bb10e84a5 100644
--- a/tests/ui/asm/invalid-const-operand.stderr
+++ b/tests/ui/asm/invalid-const-operand.stderr
@@ -6,8 +6,9 @@ LL |         asm!("{}", const x);
    |
 help: consider using `const` instead of `let`
    |
-LL |         const x: /* Type */ = 0;
-   |         ~~~~~  ++++++++++++
+LL -         let x = 0;
+LL +         const x: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/invalid-const-operand.rs:43:36
@@ -17,8 +18,9 @@ LL |         asm!("{}", const const_foo(x));
    |
 help: consider using `const` instead of `let`
    |
-LL |         const x: /* Type */ = 0;
-   |         ~~~~~  ++++++++++++
+LL -         let x = 0;
+LL +         const x: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/invalid-const-operand.rs:46:36
@@ -28,8 +30,9 @@ LL |         asm!("{}", const const_bar(x));
    |
 help: consider using `const` instead of `let`
    |
-LL |         const x: /* Type */ = 0;
-   |         ~~~~~  ++++++++++++
+LL -         let x = 0;
+LL +         const x: /* Type */ = 0;
+   |
 
 error: invalid type for `const` operand
   --> $DIR/invalid-const-operand.rs:12:19
diff --git a/tests/ui/asm/parse-error.stderr b/tests/ui/asm/parse-error.stderr
index 6d0e629b937..74647372a35 100644
--- a/tests/ui/asm/parse-error.stderr
+++ b/tests/ui/asm/parse-error.stderr
@@ -424,8 +424,9 @@ LL |         asm!("{}", options(), const foo);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:69:44
@@ -435,8 +436,9 @@ LL |         asm!("{}", clobber_abi("C"), const foo);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:72:55
@@ -446,8 +448,9 @@ LL |         asm!("{}", options(), clobber_abi("C"), const foo);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:74:31
@@ -457,8 +460,9 @@ LL |         asm!("{a}", a = const foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut foo = 0;
+LL +     const foo: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/parse-error.rs:74:46
@@ -468,8 +472,9 @@ LL |         asm!("{a}", a = const foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error: aborting due to 72 previous errors
 
diff --git a/tests/ui/asm/x86_64/bad-reg.stderr b/tests/ui/asm/x86_64/bad-reg.stderr
index 3df1f7b2208..6a02957210b 100644
--- a/tests/ui/asm/x86_64/bad-reg.stderr
+++ b/tests/ui/asm/x86_64/bad-reg.stderr
@@ -3,6 +3,8 @@ error: invalid register class `foo`: unknown register class
    |
 LL |         asm!("{}", in(foo) foo);
    |                    ^^^^^^^^^^^
+   |
+   = note: the following register classes are supported on this target: `reg`, `reg_abcd`, `reg_byte`, `xmm_reg`, `ymm_reg`, `zmm_reg`, `kreg`, `kreg0`, `mmx_reg`, `x87_reg`, `tmm_reg`
 
 error: invalid register `foo`: unknown register
   --> $DIR/bad-reg.rs:14:18
diff --git a/tests/ui/asm/x86_64/issue-82869.stderr b/tests/ui/asm/x86_64/issue-82869.stderr
index 3cf9d6d1c1c..56e49099569 100644
--- a/tests/ui/asm/x86_64/issue-82869.stderr
+++ b/tests/ui/asm/x86_64/issue-82869.stderr
@@ -3,12 +3,16 @@ error: invalid register class `vreg`: unknown register class
    |
 LL |     asm!("add {:d}, {:d}, d0", out(vreg) c, in(vreg) a, in("d0") {
    |                                ^^^^^^^^^^^
+   |
+   = note: the following register classes are supported on this target: `reg`, `reg_abcd`, `reg_byte`, `xmm_reg`, `ymm_reg`, `zmm_reg`, `kreg`, `kreg0`, `mmx_reg`, `x87_reg`, `tmm_reg`
 
 error: invalid register class `vreg`: unknown register class
   --> $DIR/issue-82869.rs:11:45
    |
 LL |     asm!("add {:d}, {:d}, d0", out(vreg) c, in(vreg) a, in("d0") {
    |                                             ^^^^^^^^^^
+   |
+   = note: the following register classes are supported on this target: `reg`, `reg_abcd`, `reg_byte`, `xmm_reg`, `ymm_reg`, `zmm_reg`, `kreg`, `kreg0`, `mmx_reg`, `x87_reg`, `tmm_reg`
 
 error: invalid register `d0`: unknown register
   --> $DIR/issue-82869.rs:11:57
diff --git a/tests/ui/asm/x86_64/x86_64_parse_error.stderr b/tests/ui/asm/x86_64/x86_64_parse_error.stderr
index b64f6c1127e..dfa3e1d0ef2 100644
--- a/tests/ui/asm/x86_64/x86_64_parse_error.stderr
+++ b/tests/ui/asm/x86_64/x86_64_parse_error.stderr
@@ -20,8 +20,9 @@ LL |         asm!("{a}", in("eax") foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/x86_64_parse_error.rs:13:46
@@ -31,8 +32,9 @@ LL |         asm!("{a}", in("eax") foo, a = const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/x86_64_parse_error.rs:15:42
@@ -42,8 +44,9 @@ LL |         asm!("{1}", in("eax") foo, const bar);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const bar: /* Type */ = 0;
-   |     ~~~~~    ++++++++++++
+LL -     let mut bar = 0;
+LL +     const bar: /* Type */ = 0;
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/associated-consts/associated-const-ambiguity-report.stderr b/tests/ui/associated-consts/associated-const-ambiguity-report.stderr
index 35ee95d1215..e68ba503c50 100644
--- a/tests/ui/associated-consts/associated-const-ambiguity-report.stderr
+++ b/tests/ui/associated-consts/associated-const-ambiguity-report.stderr
@@ -16,10 +16,12 @@ LL |     const ID: i32 = 1;
    |     ^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL | const X: i32 = <i32 as Bar>::ID;
-   |                ~~~~~~~~~~~~~~
-LL | const X: i32 = <i32 as Foo>::ID;
-   |                ~~~~~~~~~~~~~~
+LL - const X: i32 = <i32>::ID;
+LL + const X: i32 = <i32 as Bar>::ID;
+   |
+LL - const X: i32 = <i32>::ID;
+LL + const X: i32 = <i32 as Foo>::ID;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-inherent-types/dont-select-if-disabled.stderr b/tests/ui/associated-inherent-types/dont-select-if-disabled.stderr
index edf54894cd4..d245659c209 100644
--- a/tests/ui/associated-inherent-types/dont-select-if-disabled.stderr
+++ b/tests/ui/associated-inherent-types/dont-select-if-disabled.stderr
@@ -6,8 +6,9 @@ LL | struct S(S::P);
    |
 help: if there were a trait named `Example` with associated type `P` implemented for `S`, you could use the fully-qualified path
    |
-LL | struct S(<S as Example>::P);
-   |          ~~~~~~~~~~~~~~~~~
+LL - struct S(S::P);
+LL + struct S(<S as Example>::P);
+   |
 
 error[E0658]: inherent associated types are unstable
   --> $DIR/dont-select-if-disabled.rs:15:10
diff --git a/tests/ui/associated-inherent-types/issue-109071.no_gate.stderr b/tests/ui/associated-inherent-types/issue-109071.no_gate.stderr
index 72d3f5c6d4d..d5e8fd69645 100644
--- a/tests/ui/associated-inherent-types/issue-109071.no_gate.stderr
+++ b/tests/ui/associated-inherent-types/issue-109071.no_gate.stderr
@@ -28,10 +28,12 @@ LL |     fn T() -> Option<Self::Item> {}
    |
 help: use fully-qualified syntax
    |
-LL |     fn T() -> Option<<Windows<T> as IntoAsyncIterator>::Item> {}
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     fn T() -> Option<<Windows<T> as IntoIterator>::Item> {}
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn T() -> Option<Self::Item> {}
+LL +     fn T() -> Option<<Windows<T> as IntoAsyncIterator>::Item> {}
+   |
+LL -     fn T() -> Option<Self::Item> {}
+LL +     fn T() -> Option<<Windows<T> as IntoIterator>::Item> {}
+   |
 
 error[E0658]: inherent associated types are unstable
   --> $DIR/issue-109071.rs:8:5
diff --git a/tests/ui/associated-inherent-types/issue-109768.stderr b/tests/ui/associated-inherent-types/issue-109768.stderr
index e71551f9e73..18455f4669e 100644
--- a/tests/ui/associated-inherent-types/issue-109768.stderr
+++ b/tests/ui/associated-inherent-types/issue-109768.stderr
@@ -43,8 +43,9 @@ LL | struct Wrapper<T>(T);
    |        ^^^^^^^
 help: provide the argument
    |
-LL |     const WRAPPED_ASSOC_3: Wrapper<Self::AssocType3> = Wrapper(/* value */);
-   |                                                               ~~~~~~~~~~~~~
+LL -     const WRAPPED_ASSOC_3: Wrapper<Self::AssocType3> = Wrapper();
+LL +     const WRAPPED_ASSOC_3: Wrapper<Self::AssocType3> = Wrapper(/* value */);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/associated-item/associated-item-enum.stderr b/tests/ui/associated-item/associated-item-enum.stderr
index 3b00588f1d1..49f168b8544 100644
--- a/tests/ui/associated-item/associated-item-enum.stderr
+++ b/tests/ui/associated-item/associated-item-enum.stderr
@@ -9,8 +9,9 @@ LL |     Enum::mispellable();
    |
 help: there is an associated function `misspellable` with a similar name
    |
-LL |     Enum::misspellable();
-   |           ~~~~~~~~~~~~
+LL -     Enum::mispellable();
+LL +     Enum::misspellable();
+   |
 
 error[E0599]: no variant or associated item named `mispellable_trait` found for enum `Enum` in the current scope
   --> $DIR/associated-item-enum.rs:18:11
@@ -23,8 +24,9 @@ LL |     Enum::mispellable_trait();
    |
 help: there is an associated function `misspellable_trait` with a similar name
    |
-LL |     Enum::misspellable_trait();
-   |           ~~~~~~~~~~~~~~~~~~
+LL -     Enum::mispellable_trait();
+LL +     Enum::misspellable_trait();
+   |
 
 error[E0599]: no variant or associated item named `MISPELLABLE` found for enum `Enum` in the current scope
   --> $DIR/associated-item-enum.rs:19:11
@@ -37,8 +39,9 @@ LL |     Enum::MISPELLABLE;
    |
 help: there is an associated constant `MISSPELLABLE` with a similar name
    |
-LL |     Enum::MISSPELLABLE;
-   |           ~~~~~~~~~~~~
+LL -     Enum::MISPELLABLE;
+LL +     Enum::MISSPELLABLE;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr
index b1575abe571..d5795e7ed7d 100644
--- a/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr
+++ b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr
@@ -6,8 +6,9 @@ LL |     type Out = Box<dyn Bar<Assoc: Copy>>;
    |
 help: use `impl Trait` to introduce a type instead
    |
-LL |     type Out = Box<dyn Bar<Assoc = impl Copy>>;
-   |                                  ~~~~~~
+LL -     type Out = Box<dyn Bar<Assoc: Copy>>;
+LL +     type Out = Box<dyn Bar<Assoc = impl Copy>>;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-type-bounds/elision.stderr b/tests/ui/associated-type-bounds/elision.stderr
index 36ca5a80024..75141080dbf 100644
--- a/tests/ui/associated-type-bounds/elision.stderr
+++ b/tests/ui/associated-type-bounds/elision.stderr
@@ -7,8 +7,9 @@ LL | fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()>
    = help: this function's return type contains a borrowed value, but the signature does not say which one of `x`'s 2 lifetimes it is borrowed from
 help: consider introducing a named lifetime parameter
    |
-LL | fn f<'a>(x: &'a mut dyn Iterator<Item: Iterator<Item = &'a ()>>) -> Option<&'a ()> { x.next() }
-   |     ++++     ++                                         ~~                  ~~
+LL - fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
+LL + fn f<'a>(x: &'a mut dyn Iterator<Item: Iterator<Item = &'a ()>>) -> Option<&'a ()> { x.next() }
+   |
 
 error: associated type bounds are not allowed in `dyn` types
   --> $DIR/elision.rs:4:27
@@ -18,8 +19,9 @@ LL | fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()>
    |
 help: use `impl Trait` to introduce a type instead
    |
-LL | fn f(x: &mut dyn Iterator<Item = impl Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
-   |                                ~~~~~~
+LL - fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
+LL + fn f(x: &mut dyn Iterator<Item = impl Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/associated-type-bounds/return-type-notation/path-ambiguous.stderr b/tests/ui/associated-type-bounds/return-type-notation/path-ambiguous.stderr
index 80705424035..12f6762cb51 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/path-ambiguous.stderr
+++ b/tests/ui/associated-type-bounds/return-type-notation/path-ambiguous.stderr
@@ -12,12 +12,14 @@ LL |     T::method(..): Send,
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <T as B>::method(..): Send,
-   |     ~~~~~~~~~~
+LL -     T::method(..): Send,
+LL +     <T as B>::method(..): Send,
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <T as A>::method(..): Send,
-   |     ~~~~~~~~~~
+LL -     T::method(..): Send,
+LL +     <T as A>::method(..): Send,
+   |
 
 error[E0221]: ambiguous associated function `method` in bounds of `T`
   --> $DIR/path-ambiguous.rs:21:5
@@ -33,12 +35,14 @@ LL |     T::method(..): Send,
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <T as B>::method(..): Send,
-   |     ~~~~~~~~~~
+LL -     T::method(..): Send,
+LL +     <T as B>::method(..): Send,
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <T as A>::method(..): Send,
-   |     ~~~~~~~~~~
+LL -     T::method(..): Send,
+LL +     <T as A>::method(..): Send,
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/associated-type-bounds/return-type-notation/path-higher-ranked.stderr b/tests/ui/associated-type-bounds/return-type-notation/path-higher-ranked.stderr
index 2a9a1a1e899..b3a229c58c8 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/path-higher-ranked.stderr
+++ b/tests/ui/associated-type-bounds/return-type-notation/path-higher-ranked.stderr
@@ -6,8 +6,9 @@ LL |     T::method(..): Send,
    |
 help: use a fully qualified path with inferred lifetimes
    |
-LL |     <T as A<'_>>::method(..): Send,
-   |     ~~~~~~~~~~~~~~
+LL -     T::method(..): Send,
+LL +     <T as A<'_>>::method(..): Send,
+   |
 
 error[E0212]: cannot use the associated function of a trait with uninferred generic parameters
   --> $DIR/path-higher-ranked.rs:19:5
@@ -17,8 +18,9 @@ LL |     T::method(..): Send,
    |
 help: use a fully qualified path with inferred lifetimes
    |
-LL |     <T as A<'_>>::method(..): Send,
-   |     ~~~~~~~~~~~~~~
+LL -     T::method(..): Send,
+LL +     <T as A<'_>>::method(..): Send,
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/associated-type-bounds/return-type-notation/path-no-qself.stderr b/tests/ui/associated-type-bounds/return-type-notation/path-no-qself.stderr
index 6dbb5dabc0e..aad6dfc496b 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/path-no-qself.stderr
+++ b/tests/ui/associated-type-bounds/return-type-notation/path-no-qself.stderr
@@ -6,8 +6,9 @@ LL |     Trait::method(..): Send,
    |
 help: if there were a type named `Example` that implemented `Trait`, you could use the fully-qualified path
    |
-LL |     <Example as Trait>::method: Send,
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Trait::method(..): Send,
+LL +     <Example as Trait>::method: Send,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-type-bounds/suggest-assoc-ty-bound-on-eq-bound.stderr b/tests/ui/associated-type-bounds/suggest-assoc-ty-bound-on-eq-bound.stderr
index dbe285c5310..6eb8fabb185 100644
--- a/tests/ui/associated-type-bounds/suggest-assoc-ty-bound-on-eq-bound.stderr
+++ b/tests/ui/associated-type-bounds/suggest-assoc-ty-bound-on-eq-bound.stderr
@@ -10,8 +10,9 @@ LL | fn f(_: impl Trait<T = dyn Copy>) {}
    |                        +++
 help: you might have meant to write a bound here
    |
-LL | fn f(_: impl Trait<T: Copy>) {}
-   |                     ~
+LL - fn f(_: impl Trait<T = Copy>) {}
+LL + fn f(_: impl Trait<T: Copy>) {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-assoc-ty-bound-on-eq-bound.rs:9:24
@@ -25,8 +26,9 @@ LL | fn g(_: impl Trait<T = dyn std::fmt::Debug + Eq>) {}
    |                        +++
 help: you might have meant to write a bound here
    |
-LL | fn g(_: impl Trait<T: std::fmt::Debug + Eq>) {}
-   |                     ~
+LL - fn g(_: impl Trait<T = std::fmt::Debug + Eq>) {}
+LL + fn g(_: impl Trait<T: std::fmt::Debug + Eq>) {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-assoc-ty-bound-on-eq-bound.rs:14:26
@@ -40,8 +42,9 @@ LL | fn h(_: impl Trait<T<> = dyn 'static + for<'a> Fn(&'a ())>) {}
    |                          +++
 help: you might have meant to write a bound here
    |
-LL | fn h(_: impl Trait<T<>: 'static + for<'a> Fn(&'a ())>) {}
-   |                       ~
+LL - fn h(_: impl Trait<T<> = 'static + for<'a> Fn(&'a ())>) {}
+LL + fn h(_: impl Trait<T<>: 'static + for<'a> Fn(&'a ())>) {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-assoc-ty-bound-on-eq-bound.rs:20:26
diff --git a/tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr b/tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr
index df01e1e3768..b828eb86b43 100644
--- a/tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr
+++ b/tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr
@@ -12,12 +12,14 @@ LL | fn a<C:Vehicle+Box>(_: C::Color) {
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn a<C:Vehicle+Box>(_: <C as Box>::Color) {
-   |                        ~~~~~~~~~~~~
+LL - fn a<C:Vehicle+Box>(_: C::Color) {
+LL + fn a<C:Vehicle+Box>(_: <C as Box>::Color) {
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn a<C:Vehicle+Box>(_: <C as Vehicle>::Color) {
-   |                        ~~~~~~~~~~~~~~~~
+LL - fn a<C:Vehicle+Box>(_: C::Color) {
+LL + fn a<C:Vehicle+Box>(_: <C as Vehicle>::Color) {
+   |
 
 error[E0221]: ambiguous associated type `Color` in bounds of `C`
   --> $DIR/associated-type-projection-ambig-between-bound-and-where-clause.rs:20:12
@@ -33,12 +35,14 @@ LL | fn b<C>(_: C::Color) where C : Vehicle+Box {
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn b<C>(_: <C as Box>::Color) where C : Vehicle+Box {
-   |            ~~~~~~~~~~~~
+LL - fn b<C>(_: C::Color) where C : Vehicle+Box {
+LL + fn b<C>(_: <C as Box>::Color) where C : Vehicle+Box {
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn b<C>(_: <C as Vehicle>::Color) where C : Vehicle+Box {
-   |            ~~~~~~~~~~~~~~~~
+LL - fn b<C>(_: C::Color) where C : Vehicle+Box {
+LL + fn b<C>(_: <C as Vehicle>::Color) where C : Vehicle+Box {
+   |
 
 error[E0221]: ambiguous associated type `Color` in bounds of `C`
   --> $DIR/associated-type-projection-ambig-between-bound-and-where-clause.rs:24:12
@@ -54,12 +58,14 @@ LL | fn c<C>(_: C::Color) where C : Vehicle, C : Box {
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn c<C>(_: <C as Box>::Color) where C : Vehicle, C : Box {
-   |            ~~~~~~~~~~~~
+LL - fn c<C>(_: C::Color) where C : Vehicle, C : Box {
+LL + fn c<C>(_: <C as Box>::Color) where C : Vehicle, C : Box {
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn c<C>(_: <C as Vehicle>::Color) where C : Vehicle, C : Box {
-   |            ~~~~~~~~~~~~~~~~
+LL - fn c<C>(_: C::Color) where C : Vehicle, C : Box {
+LL + fn c<C>(_: <C as Vehicle>::Color) where C : Vehicle, C : Box {
+   |
 
 error[E0221]: ambiguous associated type `Color` in bounds of `X`
   --> $DIR/associated-type-projection-ambig-between-bound-and-where-clause.rs:35:20
@@ -75,12 +81,14 @@ LL |     fn e(&self, _: X::Color) where X : Box;
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     fn e(&self, _: <X as Box>::Color) where X : Box;
-   |                    ~~~~~~~~~~~~
+LL -     fn e(&self, _: X::Color) where X : Box;
+LL +     fn e(&self, _: <X as Box>::Color) where X : Box;
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     fn e(&self, _: <X as Vehicle>::Color) where X : Box;
-   |                    ~~~~~~~~~~~~~~~~
+LL -     fn e(&self, _: X::Color) where X : Box;
+LL +     fn e(&self, _: <X as Vehicle>::Color) where X : Box;
+   |
 
 error[E0221]: ambiguous associated type `Color` in bounds of `X`
   --> $DIR/associated-type-projection-ambig-between-bound-and-where-clause.rs:38:20
@@ -96,12 +104,14 @@ LL |     fn f(&self, _: X::Color) where X : Box { }
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     fn f(&self, _: <X as Box>::Color) where X : Box { }
-   |                    ~~~~~~~~~~~~
+LL -     fn f(&self, _: X::Color) where X : Box { }
+LL +     fn f(&self, _: <X as Box>::Color) where X : Box { }
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     fn f(&self, _: <X as Vehicle>::Color) where X : Box { }
-   |                    ~~~~~~~~~~~~~~~~
+LL -     fn f(&self, _: X::Color) where X : Box { }
+LL +     fn f(&self, _: <X as Vehicle>::Color) where X : Box { }
+   |
 
 error[E0221]: ambiguous associated type `Color` in bounds of `X`
   --> $DIR/associated-type-projection-ambig-between-bound-and-where-clause.rs:30:20
@@ -117,12 +127,14 @@ LL |     fn d(&self, _: X::Color) where X : Box { }
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     fn d(&self, _: <X as Box>::Color) where X : Box { }
-   |                    ~~~~~~~~~~~~
+LL -     fn d(&self, _: X::Color) where X : Box { }
+LL +     fn d(&self, _: <X as Box>::Color) where X : Box { }
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     fn d(&self, _: <X as Vehicle>::Color) where X : Box { }
-   |                    ~~~~~~~~~~~~~~~~
+LL -     fn d(&self, _: X::Color) where X : Box { }
+LL +     fn d(&self, _: <X as Vehicle>::Color) where X : Box { }
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr b/tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr
index a4874903285..063623ebd12 100644
--- a/tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr
+++ b/tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr
@@ -20,12 +20,14 @@ LL | fn dent<C:BoxCar>(c: C, color: C::Color) {
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn dent<C:BoxCar>(c: C, color: <C as Vehicle>::Color) {
-   |                                ~~~~~~~~~~~~~~~~
+LL - fn dent<C:BoxCar>(c: C, color: C::Color) {
+LL + fn dent<C:BoxCar>(c: C, color: <C as Vehicle>::Color) {
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn dent<C:BoxCar>(c: C, color: <C as Box>::Color) {
-   |                                ~~~~~~~~~~~~
+LL - fn dent<C:BoxCar>(c: C, color: C::Color) {
+LL + fn dent<C:BoxCar>(c: C, color: <C as Box>::Color) {
+   |
 
 error[E0222]: ambiguous associated type `Color` in bounds of `BoxCar`
   --> $DIR/associated-type-projection-from-multiple-supertraits.rs:23:38
@@ -73,12 +75,14 @@ LL | fn paint<C:BoxCar>(c: C, d: C::Color) {
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn paint<C:BoxCar>(c: C, d: <C as Vehicle>::Color) {
-   |                             ~~~~~~~~~~~~~~~~
+LL - fn paint<C:BoxCar>(c: C, d: C::Color) {
+LL + fn paint<C:BoxCar>(c: C, d: <C as Vehicle>::Color) {
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL | fn paint<C:BoxCar>(c: C, d: <C as Box>::Color) {
-   |                             ~~~~~~~~~~~~
+LL - fn paint<C:BoxCar>(c: C, d: C::Color) {
+LL + fn paint<C:BoxCar>(c: C, d: <C as Box>::Color) {
+   |
 
 error[E0191]: the value of the associated types `Color` in `Box`, `Color` in `Vehicle` must be specified
   --> $DIR/associated-type-projection-from-multiple-supertraits.rs:32:33
diff --git a/tests/ui/associated-types/associated-types-eq-1.stderr b/tests/ui/associated-types/associated-types-eq-1.stderr
index 14ef3687674..581ad25d88a 100644
--- a/tests/ui/associated-types/associated-types-eq-1.stderr
+++ b/tests/ui/associated-types/associated-types-eq-1.stderr
@@ -8,8 +8,9 @@ LL |     let _: A = x.boo();
    |
 help: a type parameter with a similar name exists
    |
-LL |     let _: I = x.boo();
-   |            ~
+LL -     let _: A = x.boo();
+LL +     let _: I = x.boo();
+   |
 help: you might be missing a type parameter
    |
 LL | fn foo2<I: Foo, A>(x: I) {
diff --git a/tests/ui/associated-types/associated-types-eq-2.stderr b/tests/ui/associated-types/associated-types-eq-2.stderr
index ccd13123d70..19c34241e5f 100644
--- a/tests/ui/associated-types/associated-types-eq-2.stderr
+++ b/tests/ui/associated-types/associated-types-eq-2.stderr
@@ -100,8 +100,9 @@ LL | impl Tr2<i32, T2 = Qux, T3 = usize> for Bar {
    |
 help: to use `Qux` as a generic argument specify it directly
    |
-LL | impl Tr2<i32, Qux, T3 = usize> for Bar {
-   |               ~~~
+LL - impl Tr2<i32, T2 = Qux, T3 = usize> for Bar {
+LL + impl Tr2<i32, Qux, T3 = usize> for Bar {
+   |
 
 error[E0107]: trait takes 3 generic arguments but 1 generic argument was supplied
   --> $DIR/associated-types-eq-2.rs:47:6
@@ -189,8 +190,9 @@ LL | impl Tr2<i32, Qux, T3 = GenericTerm<i32>> for Bar {
    |
 help: to use `GenericTerm<i32>` as a generic argument specify it directly
    |
-LL | impl Tr2<i32, Qux, GenericTerm<i32>> for Bar {
-   |                    ~~~~~~~~~~~~~~~~
+LL - impl Tr2<i32, Qux, T3 = GenericTerm<i32>> for Bar {
+LL + impl Tr2<i32, Qux, GenericTerm<i32>> for Bar {
+   |
 
 error[E0229]: associated item constraints are not allowed here
   --> $DIR/associated-types-eq-2.rs:76:10
@@ -203,8 +205,12 @@ LL | | = 42, T2 = Qux, T3 = usize> for Bar {
    |
 help: to use `42` as a generic argument specify it directly
    |
-LL | impl Tr3<42, T2 = Qux, T3 = usize> for Bar {
-   |          ~~
+LL - impl Tr3<N
+LL -
+LL -
+LL - = 42, T2 = Qux, T3 = usize> for Bar {
+LL + impl Tr3<42, T2 = Qux, T3 = usize> for Bar {
+   |
 
 error[E0107]: trait takes 3 generic arguments but 0 generic arguments were supplied
   --> $DIR/associated-types-eq-2.rs:84:6
@@ -328,8 +334,9 @@ LL | impl<'a, T> St<'a , T = Qux> {
    |
 help: to use `Qux` as a generic argument specify it directly
    |
-LL | impl<'a, T> St<'a , Qux> {
-   |                     ~~~
+LL - impl<'a, T> St<'a , T = Qux> {
+LL + impl<'a, T> St<'a , Qux> {
+   |
 
 error: aborting due to 25 previous errors
 
diff --git a/tests/ui/associated-types/associated-types-in-ambiguous-context.stderr b/tests/ui/associated-types/associated-types-in-ambiguous-context.stderr
index 88db3611719..d7d2161e7ad 100644
--- a/tests/ui/associated-types/associated-types-in-ambiguous-context.stderr
+++ b/tests/ui/associated-types/associated-types-in-ambiguous-context.stderr
@@ -6,8 +6,9 @@ LL | fn get<T:Get,U:Get>(x: T, y: U) -> Get::Value {}
    |
 help: if there were a type named `Example` that implemented `Get`, you could use the fully-qualified path
    |
-LL | fn get<T:Get,U:Get>(x: T, y: U) -> <Example as Get>::Value {}
-   |                                    ~~~~~~~~~~~~~~~~~~~~~~~
+LL - fn get<T:Get,U:Get>(x: T, y: U) -> Get::Value {}
+LL + fn get<T:Get,U:Get>(x: T, y: U) -> <Example as Get>::Value {}
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/associated-types-in-ambiguous-context.rs:13:23
@@ -23,8 +24,9 @@ LL |     fn get(&self) -> Get::Value;
    |
 help: if there were a type named `Example` that implemented `Get`, you could use the fully-qualified path
    |
-LL |     fn get(&self) -> <Example as Get>::Value;
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn get(&self) -> Get::Value;
+LL +     fn get(&self) -> <Example as Get>::Value;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/associated-types-in-ambiguous-context.rs:22:17
@@ -40,14 +42,18 @@ LL | type X = std::ops::Deref::Target;
    |
 help: use fully-qualified syntax
    |
-LL | type X = <ByteStr as Deref>::Target;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | type X = <ByteString as Deref>::Target;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | type X = <CString as Deref>::Target;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | type X = <IoSlice<'_> as Deref>::Target;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type X = std::ops::Deref::Target;
+LL + type X = <ByteStr as Deref>::Target;
+   |
+LL - type X = std::ops::Deref::Target;
+LL + type X = <ByteString as Deref>::Target;
+   |
+LL - type X = std::ops::Deref::Target;
+LL + type X = <CString as Deref>::Target;
+   |
+LL - type X = std::ops::Deref::Target;
+LL + type X = <IoSlice<'_> as Deref>::Target;
+   |
      and N other candidates
 
 error: aborting due to 5 previous errors
diff --git a/tests/ui/associated-types/associated-types-path-1.stderr b/tests/ui/associated-types/associated-types-path-1.stderr
index cab9dcec0b6..aea70e085c1 100644
--- a/tests/ui/associated-types/associated-types-path-1.stderr
+++ b/tests/ui/associated-types/associated-types-path-1.stderr
@@ -18,12 +18,14 @@ LL | pub fn f2<T: Foo + Bar>(a: T, x: T::A) {}
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL | pub fn f2<T: Foo + Bar>(a: T, x: <T as Bar>::A) {}
-   |                                  ~~~~~~~~~~~~
+LL - pub fn f2<T: Foo + Bar>(a: T, x: T::A) {}
+LL + pub fn f2<T: Foo + Bar>(a: T, x: <T as Bar>::A) {}
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL | pub fn f2<T: Foo + Bar>(a: T, x: <T as Foo>::A) {}
-   |                                  ~~~~~~~~~~~~
+LL - pub fn f2<T: Foo + Bar>(a: T, x: T::A) {}
+LL + pub fn f2<T: Foo + Bar>(a: T, x: <T as Foo>::A) {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/associated-types/associated-types-path-2.stderr b/tests/ui/associated-types/associated-types-path-2.stderr
index 5edd5c864e1..897eb75e3e3 100644
--- a/tests/ui/associated-types/associated-types-path-2.stderr
+++ b/tests/ui/associated-types/associated-types-path-2.stderr
@@ -13,8 +13,9 @@ LL | pub fn f1<T: Foo>(a: T, x: T::A) {}
    |        ^^               -------
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |     f1(2i32, 4u32);
-   |               ~~~
+LL -     f1(2i32, 4i32);
+LL +     f1(2i32, 4u32);
+   |
 
 error[E0277]: the trait bound `u32: Foo` is not satisfied
   --> $DIR/associated-types-path-2.rs:29:8
diff --git a/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr
index 83bad291e56..b0c904fe62b 100644
--- a/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr
+++ b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr
@@ -6,8 +6,9 @@ LL |     x: I::A)
    |
 help: use a fully qualified path with inferred lifetimes
    |
-LL |     x: <I as Foo<&isize>>::A)
-   |        ~~~~~~~~~~~~~~~~~~~~
+LL -     x: I::A)
+LL +     x: <I as Foo<&isize>>::A)
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr b/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr
index 48433b15286..bd30c25c97b 100644
--- a/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr
+++ b/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr
@@ -6,8 +6,9 @@ LL |     fn some_method(&self, arg: I::A);
    |
 help: use a fully qualified path with inferred lifetimes
    |
-LL |     fn some_method(&self, arg: <I as Foo<&isize>>::A);
-   |                                ~~~~~~~~~~~~~~~~~~~~
+LL -     fn some_method(&self, arg: I::A);
+LL +     fn some_method(&self, arg: <I as Foo<&isize>>::A);
+   |
 
 error[E0212]: cannot use the associated type of a trait with uninferred generic parameters
   --> $DIR/associated-types-project-from-hrtb-in-trait-method.rs:32:24
@@ -17,8 +18,9 @@ LL |     fn mango(&self) -> X::Assoc {
    |
 help: use a fully qualified path with inferred lifetimes
    |
-LL |     fn mango(&self) -> <X as Banana<'_>>::Assoc {
-   |                        ~~~~~~~~~~~~~~~~~~~
+LL -     fn mango(&self) -> X::Assoc {
+LL +     fn mango(&self) -> <X as Banana<'_>>::Assoc {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/associated-types/defaults-specialization.stderr b/tests/ui/associated-types/defaults-specialization.stderr
index b4ed99f36f4..fd2a1a0c2d1 100644
--- a/tests/ui/associated-types/defaults-specialization.stderr
+++ b/tests/ui/associated-types/defaults-specialization.stderr
@@ -23,8 +23,9 @@ LL |     fn make() -> Self::Ty {
               found signature `fn() -> u8`
 help: change the output type to match the trait
    |
-LL |     fn make() -> <A<T> as Tr>::Ty { 0 }
-   |                  ~~~~~~~~~~~~~~~~
+LL -     fn make() -> u8 { 0 }
+LL +     fn make() -> <A<T> as Tr>::Ty { 0 }
+   |
 
 error[E0053]: method `make` has an incompatible type for trait
   --> $DIR/defaults-specialization.rs:35:18
@@ -44,8 +45,9 @@ LL |     fn make() -> Self::Ty {
               found signature `fn() -> bool`
 help: change the output type to match the trait
    |
-LL |     fn make() -> <B<T> as Tr>::Ty { true }
-   |                  ~~~~~~~~~~~~~~~~
+LL -     fn make() -> bool { true }
+LL +     fn make() -> <B<T> as Tr>::Ty { true }
+   |
 
 error[E0308]: mismatched types
   --> $DIR/defaults-specialization.rs:10:9
diff --git a/tests/ui/associated-types/defaults-suitability.current.stderr b/tests/ui/associated-types/defaults-suitability.current.stderr
index 61247cee1f3..b9ea541e981 100644
--- a/tests/ui/associated-types/defaults-suitability.current.stderr
+++ b/tests/ui/associated-types/defaults-suitability.current.stderr
@@ -134,8 +134,9 @@ LL |     type Baz = T;
    |          --- required by a bound in this associated type
 help: consider further restricting type parameter `T` with trait `Clone`
    |
-LL |     Self::Baz: Clone, T: std::clone::Clone
-   |                     ~~~~~~~~~~~~~~~~~~~~~~
+LL -     Self::Baz: Clone,
+LL +     Self::Baz: Clone, T: std::clone::Clone
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/associated-types/defaults-suitability.next.stderr b/tests/ui/associated-types/defaults-suitability.next.stderr
index 61247cee1f3..b9ea541e981 100644
--- a/tests/ui/associated-types/defaults-suitability.next.stderr
+++ b/tests/ui/associated-types/defaults-suitability.next.stderr
@@ -134,8 +134,9 @@ LL |     type Baz = T;
    |          --- required by a bound in this associated type
 help: consider further restricting type parameter `T` with trait `Clone`
    |
-LL |     Self::Baz: Clone, T: std::clone::Clone
-   |                     ~~~~~~~~~~~~~~~~~~~~~~
+LL -     Self::Baz: Clone,
+LL +     Self::Baz: Clone, T: std::clone::Clone
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/associated-types/impl-wf-cycle-3.stderr b/tests/ui/associated-types/impl-wf-cycle-3.stderr
index d3ca06f890b..b97117a9aab 100644
--- a/tests/ui/associated-types/impl-wf-cycle-3.stderr
+++ b/tests/ui/associated-types/impl-wf-cycle-3.stderr
@@ -19,8 +19,9 @@ LL |     T: A<Self::Type>,
    |        ------------- unsatisfied trait bound introduced here
 help: replace the associated type with the type specified in this `impl`
    |
-LL |     T: A<bool>,
-   |          ~~~~
+LL -     T: A<Self::Type>,
+LL +     T: A<bool>,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-types/invalid-ctor.stderr b/tests/ui/associated-types/invalid-ctor.stderr
index b545c95a768..0b3bf316f60 100644
--- a/tests/ui/associated-types/invalid-ctor.stderr
+++ b/tests/ui/associated-types/invalid-ctor.stderr
@@ -6,8 +6,9 @@ LL |         Self::Out(1)
    |
 help: to construct a value of type `Constructor`, use the explicit path
    |
-LL |         Constructor(1)
-   |         ~~~~~~~~~~~
+LL -         Self::Out(1)
+LL +         Constructor(1)
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-types/issue-38821.stderr b/tests/ui/associated-types/issue-38821.stderr
index 58f019704e7..b29e9cc16e2 100644
--- a/tests/ui/associated-types/issue-38821.stderr
+++ b/tests/ui/associated-types/issue-38821.stderr
@@ -13,8 +13,9 @@ LL | impl<T: NotNull> IntoNullable for T {
    |         unsatisfied trait bound introduced here
 help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
    |
-LL |     Expr: Expression<SqlType=<Col::SqlType as IntoNullable>::Nullable>, <Col as Expression>::SqlType: NotNull
-   |                                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Expr: Expression<SqlType=<Col::SqlType as IntoNullable>::Nullable>,
+LL +     Expr: Expression<SqlType=<Col::SqlType as IntoNullable>::Nullable>, <Col as Expression>::SqlType: NotNull
+   |
 
 error[E0277]: the trait bound `<Col as Expression>::SqlType: NotNull` is not satisfied
   --> $DIR/issue-38821.rs:40:1
@@ -37,8 +38,9 @@ LL | impl<T: NotNull> IntoNullable for T {
    |         unsatisfied trait bound introduced here
 help: consider extending the `where` clause, but there might be an alternative better way to express this requirement
    |
-LL |     Expr: Expression<SqlType=<Col::SqlType as IntoNullable>::Nullable>, <Col as Expression>::SqlType: NotNull
-   |                                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Expr: Expression<SqlType=<Col::SqlType as IntoNullable>::Nullable>,
+LL +     Expr: Expression<SqlType=<Col::SqlType as IntoNullable>::Nullable>, <Col as Expression>::SqlType: NotNull
+   |
 
 error[E0277]: the trait bound `<Col as Expression>::SqlType: NotNull` is not satisfied
   --> $DIR/issue-38821.rs:23:10
diff --git a/tests/ui/associated-types/issue-54108.current.stderr b/tests/ui/associated-types/issue-54108.current.stderr
index 8850b4548e3..1b2285b214f 100644
--- a/tests/ui/associated-types/issue-54108.current.stderr
+++ b/tests/ui/associated-types/issue-54108.current.stderr
@@ -12,8 +12,9 @@ LL |     type Size: Add<Output = Self::Size>;
    |                ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Encoder::Size`
 help: consider further restricting the associated type
    |
-LL |     T: SubEncoder, <T as SubEncoder>::ActualSize: Add
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: SubEncoder,
+LL +     T: SubEncoder, <T as SubEncoder>::ActualSize: Add
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-types/issue-54108.next.stderr b/tests/ui/associated-types/issue-54108.next.stderr
index 5e2fa551afe..cc80ab63901 100644
--- a/tests/ui/associated-types/issue-54108.next.stderr
+++ b/tests/ui/associated-types/issue-54108.next.stderr
@@ -12,8 +12,9 @@ LL |     type Size: Add<Output = Self::Size>;
    |                    ^^^^^^^^^^^^^^^^^^^ required by this bound in `Encoder::Size`
 help: consider further restricting the associated type
    |
-LL |     T: SubEncoder, <T as SubEncoder>::ActualSize: Add
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: SubEncoder,
+LL +     T: SubEncoder, <T as SubEncoder>::ActualSize: Add
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-types/issue-59324.stderr b/tests/ui/associated-types/issue-59324.stderr
index 2abe337b69a..dc8f9cfe895 100644
--- a/tests/ui/associated-types/issue-59324.stderr
+++ b/tests/ui/associated-types/issue-59324.stderr
@@ -87,8 +87,9 @@ LL | fn with_factory<H>(factory: dyn ThriftService<()>) {}
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL | fn with_factory<H>(factory: impl ThriftService<()>) {}
-   |                             ~~~~
+LL - fn with_factory<H>(factory: dyn ThriftService<()>) {}
+LL + fn with_factory<H>(factory: impl ThriftService<()>) {}
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL | fn with_factory<H>(factory: &dyn ThriftService<()>) {}
diff --git a/tests/ui/async-await/async-closures/arg-mismatch.stderr b/tests/ui/async-await/async-closures/arg-mismatch.stderr
index 5c8e6650293..8c11fa15776 100644
--- a/tests/ui/async-await/async-closures/arg-mismatch.stderr
+++ b/tests/ui/async-await/async-closures/arg-mismatch.stderr
@@ -13,8 +13,9 @@ LL |         let c = async |x| {};
    |                        ^
 help: change the type of the numeric literal from `usize` to `i32`
    |
-LL |         c(2i32).await;
-   |            ~~~
+LL -         c(2usize).await;
+LL +         c(2i32).await;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr b/tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr
index 36f90c7bcd5..b7f2879727f 100644
--- a/tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr
+++ b/tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr
@@ -17,8 +17,9 @@ LL |     #[warn(refining_impl_trait)]
    = note: `#[warn(refining_impl_trait_reachable)]` implied by `#[warn(refining_impl_trait)]`
 help: replace the return type so that it matches the trait
    |
-LL |     fn foo(&self) -> impl Future<Output = i32> {
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn foo(&self) -> Pin<Box<dyn Future<Output = i32> + '_>> {
+LL +     fn foo(&self) -> impl Future<Output = i32> {
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/async-await/in-trait/async-example-desugared-manual.stderr b/tests/ui/async-await/in-trait/async-example-desugared-manual.stderr
index 8e39559071f..86546df88c1 100644
--- a/tests/ui/async-await/in-trait/async-example-desugared-manual.stderr
+++ b/tests/ui/async-await/in-trait/async-example-desugared-manual.stderr
@@ -17,8 +17,9 @@ LL |     #[warn(refining_impl_trait)]
    = note: `#[warn(refining_impl_trait_reachable)]` implied by `#[warn(refining_impl_trait)]`
 help: replace the return type so that it matches the trait
    |
-LL |     fn foo(&self) -> impl Future<Output = i32> {
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn foo(&self) -> MyFuture {
+LL +     fn foo(&self) -> impl Future<Output = i32> {
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr b/tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr
index 782fa4295fd..2a3d46cc97f 100644
--- a/tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr
+++ b/tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr
@@ -6,8 +6,9 @@ LL |     let _ = move async { };
    |
 help: try switching the order
    |
-LL |     let _ = async move { };
-   |             ~~~~~~~~~~
+LL -     let _ = move async { };
+LL +     let _ = async move { };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2015.stderr b/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2015.stderr
index d4266814a7c..2bdc1347c81 100644
--- a/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2015.stderr
+++ b/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2015.stderr
@@ -16,12 +16,14 @@ LL |     fn r#struct(&self) {
    |     ^^^^^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     async::r#struct(&r#fn {});
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r#fn {}.r#struct();
+LL +     async::r#struct(&r#fn {});
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     await::r#struct(&r#fn {});
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r#fn {}.r#struct();
+LL +     await::r#struct(&r#fn {});
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2018.stderr b/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2018.stderr
index fe104bfe445..ab10ab749fe 100644
--- a/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2018.stderr
+++ b/tests/ui/async-await/issue-65634-raw-ident-suggestion.edition2018.stderr
@@ -16,12 +16,14 @@ LL |     fn r#struct(&self) {
    |     ^^^^^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     r#async::r#struct(&r#fn {});
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r#fn {}.r#struct();
+LL +     r#async::r#struct(&r#fn {});
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     r#await::r#struct(&r#fn {});
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     r#fn {}.r#struct();
+LL +     r#await::r#struct(&r#fn {});
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/async-await/pin-ergonomics/sugar-no-const.stderr b/tests/ui/async-await/pin-ergonomics/sugar-no-const.stderr
index 822cfffcb8c..062b6d3f487 100644
--- a/tests/ui/async-await/pin-ergonomics/sugar-no-const.stderr
+++ b/tests/ui/async-await/pin-ergonomics/sugar-no-const.stderr
@@ -8,8 +8,9 @@ LL |     let _x: &pin i32 = todo!();
    |
 help: there is a keyword `in` with a similar name
    |
-LL |     let _x: &in i32 = todo!();
-   |              ~~
+LL -     let _x: &pin i32 = todo!();
+LL +     let _x: &in i32 = todo!();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr b/tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr
index c8bbb3a243c..11f5825c232 100644
--- a/tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr
+++ b/tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr
@@ -19,8 +19,9 @@ LL |     x.await;
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide
 help: a field with a similar name exists
    |
-LL |     x.awai;
-   |       ~~~~
+LL -     x.await;
+LL +     x.awai;
+   |
 
 error[E0609]: no field `await` on type `Pin<&mut dyn Future<Output = ()>>`
   --> $DIR/suggest-switching-edition-on-await-cargo.rs:34:7
diff --git a/tests/ui/async-await/suggest-switching-edition-on-await.stderr b/tests/ui/async-await/suggest-switching-edition-on-await.stderr
index ef5a5f81269..2ede8d5b7f4 100644
--- a/tests/ui/async-await/suggest-switching-edition-on-await.stderr
+++ b/tests/ui/async-await/suggest-switching-edition-on-await.stderr
@@ -19,8 +19,9 @@ LL |     x.await;
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide
 help: a field with a similar name exists
    |
-LL |     x.awai;
-   |       ~~~~
+LL -     x.await;
+LL +     x.awai;
+   |
 
 error[E0609]: no field `await` on type `Pin<&mut dyn Future<Output = ()>>`
   --> $DIR/suggest-switching-edition-on-await.rs:32:7
diff --git a/tests/ui/async-await/unconstrained-lifetimes.rs b/tests/ui/async-await/unconstrained-lifetimes.rs
new file mode 100644
index 00000000000..50ab7bae73d
--- /dev/null
+++ b/tests/ui/async-await/unconstrained-lifetimes.rs
@@ -0,0 +1,9 @@
+//@ edition: 2021
+
+// Make sure we don't complain about the implicit `-> impl Future` capturing an
+// unconstrained anonymous lifetime.
+
+async fn foo(_: Missing<'_>) {}
+//~^ ERROR cannot find type `Missing` in this scope
+
+fn main() {}
diff --git a/tests/ui/async-await/unconstrained-lifetimes.stderr b/tests/ui/async-await/unconstrained-lifetimes.stderr
new file mode 100644
index 00000000000..18a46a3b555
--- /dev/null
+++ b/tests/ui/async-await/unconstrained-lifetimes.stderr
@@ -0,0 +1,9 @@
+error[E0412]: cannot find type `Missing` in this scope
+  --> $DIR/unconstrained-lifetimes.rs:6:17
+   |
+LL | async fn foo(_: Missing<'_>) {}
+   |                 ^^^^^^^ not found in this scope
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0412`.
diff --git a/tests/ui/attributes/key-value-non-ascii.stderr b/tests/ui/attributes/key-value-non-ascii.stderr
index cc01bc46ebd..fa87ad5ee6d 100644
--- a/tests/ui/attributes/key-value-non-ascii.stderr
+++ b/tests/ui/attributes/key-value-non-ascii.stderr
@@ -6,8 +6,9 @@ LL | #[rustc_dummy = b"ffi.rs"]
    |
 help: if you meant to use the UTF-8 encoding of 'ffi', use \xHH escapes
    |
-LL | #[rustc_dummy = b"/xEF/xAC/x83.rs"]
-   |                   ~~~~~~~~~~~~
+LL - #[rustc_dummy = b"ffi.rs"]
+LL + #[rustc_dummy = b"/xEF/xAC/x83.rs"]
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/attributes/rustc_confusables.stderr b/tests/ui/attributes/rustc_confusables.stderr
index 9e37d5f5083..f475e9c494e 100644
--- a/tests/ui/attributes/rustc_confusables.stderr
+++ b/tests/ui/attributes/rustc_confusables.stderr
@@ -35,8 +35,9 @@ LL |     x.inser();
    |
 help: there is a method `insert` with a similar name
    |
-LL |     x.insert();
-   |       ~~~~~~
+LL -     x.inser();
+LL +     x.insert();
+   |
 
 error[E0599]: no method named `foo` found for struct `rustc_confusables_across_crate::BTreeSet` in the current scope
   --> $DIR/rustc_confusables.rs:15:7
@@ -52,8 +53,9 @@ LL |     x.push();
    |
 help: you might have meant to use `insert`
    |
-LL |     x.insert();
-   |       ~~~~~~
+LL -     x.push();
+LL +     x.insert();
+   |
 
 error[E0599]: no method named `test` found for struct `rustc_confusables_across_crate::BTreeSet` in the current scope
   --> $DIR/rustc_confusables.rs:20:7
@@ -69,8 +71,9 @@ LL |     x.pulled();
    |
 help: you might have meant to use `pull`
    |
-LL |     x.pull();
-   |       ~~~~
+LL -     x.pulled();
+LL +     x.pull();
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/attributes/rustc_confusables_std_cases.stderr b/tests/ui/attributes/rustc_confusables_std_cases.stderr
index 7bf96241ca7..b9acf2d31ab 100644
--- a/tests/ui/attributes/rustc_confusables_std_cases.stderr
+++ b/tests/ui/attributes/rustc_confusables_std_cases.stderr
@@ -6,8 +6,9 @@ LL |     x.push(1);
    |
 help: you might have meant to use `insert`
    |
-LL |     x.insert(1);
-   |       ~~~~~~
+LL -     x.push(1);
+LL +     x.insert(1);
+   |
 
 error[E0599]: no method named `push_back` found for struct `Vec<_>` in the current scope
   --> $DIR/rustc_confusables_std_cases.rs:9:7
@@ -17,8 +18,9 @@ LL |     x.push_back(1);
    |
 help: you might have meant to use `push`
    |
-LL |     x.push(1);
-   |       ~~~~
+LL -     x.push_back(1);
+LL +     x.push(1);
+   |
 
 error[E0599]: no method named `push` found for struct `VecDeque` in the current scope
   --> $DIR/rustc_confusables_std_cases.rs:12:7
@@ -36,8 +38,9 @@ LL |     let mut x = VecDeque::new();
    |         ----- earlier `x` shadowed here with type `VecDeque`
 help: you might have meant to use `push_back`
    |
-LL |     x.push_back(1);
-   |       ~~~~~~~~~
+LL -     x.push(1);
+LL +     x.push_back(1);
+   |
 
 error[E0599]: no method named `length` found for struct `Vec<{integer}>` in the current scope
   --> $DIR/rustc_confusables_std_cases.rs:15:7
@@ -47,8 +50,9 @@ LL |     x.length();
    |
 help: you might have meant to use `len`
    |
-LL |     x.len();
-   |       ~~~
+LL -     x.length();
+LL +     x.len();
+   |
 
 error[E0599]: no method named `size` found for struct `Vec<{integer}>` in the current scope
   --> $DIR/rustc_confusables_std_cases.rs:17:7
@@ -60,8 +64,9 @@ help: there is a method `resize` with a similar name, but with different argumen
   --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
 help: you might have meant to use `len`
    |
-LL |     x.len();
-   |       ~~~
+LL -     x.size();
+LL +     x.len();
+   |
 
 error[E0308]: mismatched types
   --> $DIR/rustc_confusables_std_cases.rs:20:14
@@ -77,8 +82,9 @@ note: method defined here
   --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
 help: you might have meant to use `push`
    |
-LL |     x.push(42);
-   |       ~~~~
+LL -     x.append(42);
+LL +     x.push(42);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/rustc_confusables_std_cases.rs:22:24
@@ -92,8 +98,9 @@ note: method defined here
   --> $SRC_DIR/alloc/src/string.rs:LL:COL
 help: you might have meant to use `push_str`
    |
-LL |     String::new().push_str("");
-   |                   ~~~~~~~~
+LL -     String::new().push("");
+LL +     String::new().push_str("");
+   |
 
 error[E0599]: no method named `append` found for struct `String` in the current scope
   --> $DIR/rustc_confusables_std_cases.rs:24:19
@@ -103,8 +110,9 @@ LL |     String::new().append("");
    |
 help: you might have meant to use `push_str`
    |
-LL |     String::new().push_str("");
-   |                   ~~~~~~~~
+LL -     String::new().append("");
+LL +     String::new().push_str("");
+   |
 
 error[E0599]: no method named `get_line` found for struct `Stdin` in the current scope
   --> $DIR/rustc_confusables_std_cases.rs:28:11
@@ -114,8 +122,9 @@ LL |     stdin.get_line(&mut buffer).unwrap();
    |
 help: you might have meant to use `read_line`
    |
-LL |     stdin.read_line(&mut buffer).unwrap();
-   |           ~~~~~~~~~
+LL -     stdin.get_line(&mut buffer).unwrap();
+LL +     stdin.read_line(&mut buffer).unwrap();
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/binop/placement-syntax.stderr b/tests/ui/binop/placement-syntax.stderr
index b20a2ee6353..e398c0b0702 100644
--- a/tests/ui/binop/placement-syntax.stderr
+++ b/tests/ui/binop/placement-syntax.stderr
@@ -6,8 +6,9 @@ LL |     if x<-1 {
    |
 help: if you meant to write a comparison against a negative value, add a space in between `<` and `-`
    |
-LL |     if x< -1 {
-   |         ~~~
+LL -     if x<-1 {
+LL +     if x< -1 {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/block-result/issue-3563.stderr b/tests/ui/block-result/issue-3563.stderr
index 22606a52f85..e03453f3946 100644
--- a/tests/ui/block-result/issue-3563.stderr
+++ b/tests/ui/block-result/issue-3563.stderr
@@ -6,8 +6,9 @@ LL |         || self.b()
    |
 help: there is a method `a` with a similar name
    |
-LL |         || self.a()
-   |                 ~
+LL -         || self.b()
+LL +         || self.a()
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/borrowck/already-borrowed-as-mutable-if-let-133941.stderr b/tests/ui/borrowck/already-borrowed-as-mutable-if-let-133941.stderr
index bb21caccbaf..2f443797dfa 100644
--- a/tests/ui/borrowck/already-borrowed-as-mutable-if-let-133941.stderr
+++ b/tests/ui/borrowck/already-borrowed-as-mutable-if-let-133941.stderr
@@ -15,8 +15,9 @@ LL |     }
    |
 help: consider using the `matches!` macro
    |
-LL |     while matches!(foo.f(), Some(_)) {
-   |           ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     while let Some(_) = foo.f() {
+LL +     while matches!(foo.f(), Some(_)) {
+   |
 
 error[E0499]: cannot borrow `foo` as mutable more than once at a time
   --> $DIR/already-borrowed-as-mutable-if-let-133941.rs:29:9
@@ -35,8 +36,9 @@ LL |     }
    |
 help: consider using the `matches!` macro
    |
-LL |     if matches!(foo.f(), Some(_)) {
-   |        ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     if let Some(_) = foo.f() {
+LL +     if matches!(foo.f(), Some(_)) {
+   |
 
 error[E0499]: cannot borrow `foo` as mutable more than once at a time
   --> $DIR/already-borrowed-as-mutable-if-let-133941.rs:33:9
diff --git a/tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr b/tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr
index bc11204acf2..d953ed2ad3e 100644
--- a/tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr
+++ b/tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr
@@ -33,8 +33,9 @@ LL | struct B;
    | ^^^^^^^^
 help: if `B` implemented `Clone`, you could clone the value from the field instead of using the functional record update syntax
    |
-LL |         let _s2 = S { a: 2, b: s0.b.clone(), c: s0.c.clone() };
-   |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         let _s2 = S { a: 2, ..s0 };
+LL +         let _s2 = S { a: 2, b: s0.b.clone(), c: s0.c.clone() };
+   |
 
 error[E0509]: cannot move out of type `S<B>`, which implements the `Drop` trait
   --> $DIR/borrowck-struct-update-with-dtor.rs:24:19
@@ -52,8 +53,9 @@ LL | struct B;
    | ^^^^^^^^
 help: if `B` implemented `Clone`, you could clone the value from the field instead of using the functional record update syntax
    |
-LL |         let _s2 = S { a: 2, b: s0.b.clone(), c: s0.c.clone() };
-   |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         let _s2 = S { a: 2, ..s0 };
+LL +         let _s2 = S { a: 2, b: s0.b.clone(), c: s0.c.clone() };
+   |
 
 error[E0509]: cannot move out of type `S<K>`, which implements the `Drop` trait
   --> $DIR/borrowck-struct-update-with-dtor.rs:29:19
@@ -99,8 +101,9 @@ LL |         let _s2 = T { a: 2, ..s0 };
    |
 help: clone the value from the field instead of using the functional record update syntax
    |
-LL |         let _s2 = T { a: 2, b: s0.b.clone() };
-   |                           ~~~~~~~~~~~~~~~~~
+LL -         let _s2 = T { a: 2, ..s0 };
+LL +         let _s2 = T { a: 2, b: s0.b.clone() };
+   |
 
 error[E0509]: cannot move out of type `T`, which implements the `Drop` trait
   --> $DIR/borrowck-struct-update-with-dtor.rs:42:19
@@ -113,8 +116,9 @@ LL |         let _s2 = T { ..s0 };
    |
 help: clone the value from the field instead of using the functional record update syntax
    |
-LL |         let _s2 = T { b: s0.b.clone(), ..s0 };
-   |                     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         let _s2 = T { ..s0 };
+LL +         let _s2 = T { b: s0.b.clone(), ..s0 };
+   |
 
 error[E0509]: cannot move out of type `T`, which implements the `Drop` trait
   --> $DIR/borrowck-struct-update-with-dtor.rs:47:32
diff --git a/tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.stderr b/tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.stderr
index e4dfa6d7fba..1e3570fc855 100644
--- a/tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.stderr
+++ b/tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.stderr
@@ -9,8 +9,9 @@ LL |         let sfoo: *mut Foo = &mut SFOO;
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |         let sfoo: *mut Foo = &raw mut SFOO;
-   |                              ~~~~~~~~
+LL -         let sfoo: *mut Foo = &mut SFOO;
+LL +         let sfoo: *mut Foo = &raw mut SFOO;
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/borrowck/implied-bound-from-impl-header.rs b/tests/ui/borrowck/implied-bound-from-impl-header.rs
new file mode 100644
index 00000000000..326a62b22f0
--- /dev/null
+++ b/tests/ui/borrowck/implied-bound-from-impl-header.rs
@@ -0,0 +1,28 @@
+//@ check-pass
+//@ revisions: current next
+//@ ignore-compare-mode-next-solver (explicit revisions)
+//@[next] compile-flags: -Znext-solver
+
+// Make sure that we can normalize `<T as Ref<'a>>::Assoc` to `&'a T` and get
+// its implied bounds in impl header.
+
+trait Ref<'a> {
+    type Assoc;
+}
+impl<'a, T> Ref<'a> for T where T: 'a {
+    type Assoc = &'a T;
+}
+
+fn outlives<'a, T: 'a>() {}
+
+trait Trait<'a, T> {
+    fn test();
+}
+
+impl<'a, T> Trait<'a, T> for <T as Ref<'a>>::Assoc {
+    fn test() {
+        outlives::<'a, T>();
+    }
+}
+
+fn main() {}
diff --git a/tests/ui/borrowck/implied-bound-from-normalized-arg.rs b/tests/ui/borrowck/implied-bound-from-normalized-arg.rs
new file mode 100644
index 00000000000..4e9a4953c6b
--- /dev/null
+++ b/tests/ui/borrowck/implied-bound-from-normalized-arg.rs
@@ -0,0 +1,22 @@
+//@ check-pass
+//@ revisions: current next
+//@ ignore-compare-mode-next-solver (explicit revisions)
+//@[next] compile-flags: -Znext-solver
+
+// Make sure that we can normalize `<T as Ref<'a>>::Assoc` to `&'a T` and get
+// its implied bounds.
+
+trait Ref<'a> {
+    type Assoc;
+}
+impl<'a, T> Ref<'a> for T where T: 'a {
+    type Assoc = &'a T;
+}
+
+fn outlives<'a, T: 'a>() {}
+
+fn test<'a, T>(_: <T as Ref<'a>>::Assoc) {
+    outlives::<'a, T>();
+}
+
+fn main() {}
diff --git a/tests/ui/borrowck/index-mut-help.stderr b/tests/ui/borrowck/index-mut-help.stderr
index c4c9c1c5313..6c3bd0df20b 100644
--- a/tests/ui/borrowck/index-mut-help.stderr
+++ b/tests/ui/borrowck/index-mut-help.stderr
@@ -7,8 +7,9 @@ LL |     map["peter"].clear();
    = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `HashMap<&str, String>`
 help: to modify a `HashMap<&str, String>` use `.get_mut()`
    |
-LL |     if let Some(val) = map.get_mut("peter") { val.clear(); };
-   |     ++++++++++++++++++    ~~~~~~~~~       ~~~~~~~        +++
+LL -     map["peter"].clear();
+LL +     if let Some(val) = map.get_mut("peter") { val.clear(); };
+   |
 
 error[E0594]: cannot assign to data in an index of `HashMap<&str, String>`
   --> $DIR/index-mut-help.rs:11:5
@@ -19,12 +20,15 @@ LL |     map["peter"] = "0".to_string();
    = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `HashMap<&str, String>`
 help: use `.insert()` to insert a value into a `HashMap<&str, String>`, `.get_mut()` to modify it, or the entry API for more flexibility
    |
-LL |     map.insert("peter", "0".to_string());
-   |        ~~~~~~~~       ~                +
-LL |     if let Some(val) = map.get_mut("peter") { *val = "0".to_string(); };
-   |     ++++++++++++++++++    ~~~~~~~~~       ~~~~~~~~                  +++
-LL |     let val = map.entry("peter").or_insert("0".to_string());
-   |     +++++++++    ~~~~~~~       ~~~~~~~~~~~~               +
+LL -     map["peter"] = "0".to_string();
+LL +     map.insert("peter", "0".to_string());
+   |
+LL -     map["peter"] = "0".to_string();
+LL +     if let Some(val) = map.get_mut("peter") { *val = "0".to_string(); };
+   |
+LL -     map["peter"] = "0".to_string();
+LL +     let val = map.entry("peter").or_insert("0".to_string());
+   |
 
 error[E0596]: cannot borrow data in an index of `HashMap<&str, String>` as mutable
   --> $DIR/index-mut-help.rs:12:13
diff --git a/tests/ui/borrowck/issue-115259-suggest-iter-mut.stderr b/tests/ui/borrowck/issue-115259-suggest-iter-mut.stderr
index 40ab2e61d6a..53b833e7c91 100644
--- a/tests/ui/borrowck/issue-115259-suggest-iter-mut.stderr
+++ b/tests/ui/borrowck/issue-115259-suggest-iter-mut.stderr
@@ -8,8 +8,9 @@ LL |         self.layers.iter().fold(0, |result, mut layer| result + layer.proce
    |
 help: you may want to use `iter_mut` here
    |
-LL |         self.layers.iter_mut().fold(0, |result, mut layer| result + layer.process())
-   |                     ~~~~~~~~
+LL -         self.layers.iter().fold(0, |result, mut layer| result + layer.process())
+LL +         self.layers.iter_mut().fold(0, |result, mut layer| result + layer.process())
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.stderr b/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.stderr
index 466f19eb0ab..86d53012cf3 100644
--- a/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.stderr
+++ b/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.stderr
@@ -8,8 +8,9 @@ LL |             vec.iter().flat_map(|container| container.things()).cloned().co
    |
 help: you may want to use `iter_mut` here
    |
-LL |             vec.iter_mut().flat_map(|container| container.things()).cloned().collect::<Vec<PathBuf>>();
-   |                 ~~~~~~~~
+LL -             vec.iter().flat_map(|container| container.things()).cloned().collect::<Vec<PathBuf>>();
+LL +             vec.iter_mut().flat_map(|container| container.things()).cloned().collect::<Vec<PathBuf>>();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/borrowck/issue-62387-suggest-iter-mut.stderr b/tests/ui/borrowck/issue-62387-suggest-iter-mut.stderr
index fd58e433020..f0a17d76a67 100644
--- a/tests/ui/borrowck/issue-62387-suggest-iter-mut.stderr
+++ b/tests/ui/borrowck/issue-62387-suggest-iter-mut.stderr
@@ -8,8 +8,9 @@ LL |     v.iter().for_each(|a| a.double());
    |
 help: you may want to use `iter_mut` here
    |
-LL |     v.iter_mut().for_each(|a| a.double());
-   |       ~~~~~~~~
+LL -     v.iter().for_each(|a| a.double());
+LL +     v.iter_mut().for_each(|a| a.double());
+   |
 
 error[E0596]: cannot borrow `*a` as mutable, as it is behind a `&` reference
   --> $DIR/issue-62387-suggest-iter-mut.rs:25:39
@@ -21,8 +22,9 @@ LL |     v.iter().rev().rev().for_each(|a| a.double());
    |
 help: you may want to use `iter_mut` here
    |
-LL |     v.iter_mut().rev().rev().for_each(|a| a.double());
-   |       ~~~~~~~~
+LL -     v.iter().rev().rev().for_each(|a| a.double());
+LL +     v.iter_mut().rev().rev().for_each(|a| a.double());
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/borrowck/issue-85765-closure.stderr b/tests/ui/borrowck/issue-85765-closure.stderr
index 936ddd67bcd..fa4e5441508 100644
--- a/tests/ui/borrowck/issue-85765-closure.stderr
+++ b/tests/ui/borrowck/issue-85765-closure.stderr
@@ -6,8 +6,9 @@ LL |         rofl.push(Vec::new());
    |
 help: consider changing this binding's type
    |
-LL |         let rofl: &mut Vec<Vec<i32>> = &mut test;
-   |                   ~~~~~~~~~~~~~~~~~~
+LL -         let rofl: &Vec<Vec<i32>> = &mut test;
+LL +         let rofl: &mut Vec<Vec<i32>> = &mut test;
+   |
 
 error[E0594]: cannot assign to `*r`, which is behind a `&` reference
   --> $DIR/issue-85765-closure.rs:13:9
@@ -28,8 +29,9 @@ LL |         *x = 1;
    |
 help: consider changing this binding's type
    |
-LL |         let x: &mut usize = &mut{0};
-   |                ~~~~~~~~~~
+LL -         let x: &usize = &mut{0};
+LL +         let x: &mut usize = &mut{0};
+   |
 
 error[E0594]: cannot assign to `*y`, which is behind a `&` reference
   --> $DIR/issue-85765-closure.rs:27:9
@@ -39,8 +41,9 @@ LL |         *y = 1;
    |
 help: consider changing this binding's type
    |
-LL |         let y: &mut usize = &mut(0);
-   |                ~~~~~~~~~~
+LL -         let y: &usize = &mut(0);
+LL +         let y: &mut usize = &mut(0);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/borrowck/issue-85765.stderr b/tests/ui/borrowck/issue-85765.stderr
index 57900bfb612..9354294f52b 100644
--- a/tests/ui/borrowck/issue-85765.stderr
+++ b/tests/ui/borrowck/issue-85765.stderr
@@ -6,8 +6,9 @@ LL |     rofl.push(Vec::new());
    |
 help: consider changing this binding's type
    |
-LL |     let rofl: &mut Vec<Vec<i32>> = &mut test;
-   |               ~~~~~~~~~~~~~~~~~~
+LL -     let rofl: &Vec<Vec<i32>> = &mut test;
+LL +     let rofl: &mut Vec<Vec<i32>> = &mut test;
+   |
 
 error[E0594]: cannot assign to `*r`, which is behind a `&` reference
   --> $DIR/issue-85765.rs:12:5
@@ -28,8 +29,9 @@ LL |     *x = 1;
    |
 help: consider changing this binding's type
    |
-LL |     let x: &mut usize = &mut{0};
-   |            ~~~~~~~~~~
+LL -     let x: &usize = &mut{0};
+LL +     let x: &mut usize = &mut{0};
+   |
 
 error[E0594]: cannot assign to `*y`, which is behind a `&` reference
   --> $DIR/issue-85765.rs:26:5
@@ -39,8 +41,9 @@ LL |     *y = 1;
    |
 help: consider changing this binding's type
    |
-LL |     let y: &mut usize = &mut(0);
-   |            ~~~~~~~~~~
+LL -     let y: &usize = &mut(0);
+LL +     let y: &mut usize = &mut(0);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/borrowck/no-invalid-mut-suggestion-for-raw-pointer-issue-127562.stderr b/tests/ui/borrowck/no-invalid-mut-suggestion-for-raw-pointer-issue-127562.stderr
index dbe834b6b78..9bcfbd33795 100644
--- a/tests/ui/borrowck/no-invalid-mut-suggestion-for-raw-pointer-issue-127562.stderr
+++ b/tests/ui/borrowck/no-invalid-mut-suggestion-for-raw-pointer-issue-127562.stderr
@@ -6,8 +6,9 @@ LL |     unsafe { *ptr = 3; }
    |
 help: consider changing this to be a mutable pointer
    |
-LL |     let ptr = &raw mut val;
-   |                    ~~~
+LL -     let ptr = &raw const val;
+LL +     let ptr = &raw mut val;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/borrowck/suggest-lt-on-ty-alias-w-generics.stderr b/tests/ui/borrowck/suggest-lt-on-ty-alias-w-generics.stderr
index 28b4b4aa290..98fb49824ae 100644
--- a/tests/ui/borrowck/suggest-lt-on-ty-alias-w-generics.stderr
+++ b/tests/ui/borrowck/suggest-lt-on-ty-alias-w-generics.stderr
@@ -12,8 +12,9 @@ LL | |     })
    |
 help: to declare that the trait object captures data from argument `x`, you can add a lifetime parameter `'a` in the type alias
    |
-LL | type Lazy<'a, T> = Box<dyn Fn() -> T + 'a>;
-   |           +++                          ~~
+LL - type Lazy<T> = Box<dyn Fn() -> T + 'static>;
+LL + type Lazy<'a, T> = Box<dyn Fn() -> T + 'a>;
+   |
 
 error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
   --> $DIR/suggest-lt-on-ty-alias-w-generics.rs:4:14
diff --git a/tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.stderr b/tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.stderr
index 0ae301b2090..a18c4e72719 100644
--- a/tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.stderr
+++ b/tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.stderr
@@ -16,8 +16,9 @@ LL | impl MyStruct<'_> {
    | ----------------- `Self` is on type `MyStruct` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `MyStruct` instead if you want to specify its type parameters
    |
-LL |     pub fn f(field: &[u32]) -> MyStruct<u32> {
-   |                                ~~~~~~~~
+LL -     pub fn f(field: &[u32]) -> Self<u32> {
+LL +     pub fn f(field: &[u32]) -> MyStruct<u32> {
+   |
 
 error: lifetime may not live long enough
   --> $DIR/unmatched-arg-and-hir-arg-issue-126385.rs:10:9
diff --git a/tests/ui/btreemap/btreemap-index-mut-2.stderr b/tests/ui/btreemap/btreemap-index-mut-2.stderr
index c42462ee1eb..74a8aaf8aee 100644
--- a/tests/ui/btreemap/btreemap-index-mut-2.stderr
+++ b/tests/ui/btreemap/btreemap-index-mut-2.stderr
@@ -7,12 +7,15 @@ LL |         map[&0] = 1;
    = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `BTreeMap<u32, u32>`
 help: use `.insert()` to insert a value into a `BTreeMap<u32, u32>`, `.get_mut()` to modify it, or the entry API for more flexibility
    |
-LL |         map.insert(&0, 1);
-   |            ~~~~~~~~  ~  +
-LL |         if let Some(val) = map.get_mut(&0) { *val = 1; };
-   |         ++++++++++++++++++    ~~~~~~~~~  ~~~~~~~~    +++
-LL |         let val = map.entry(&0).or_insert(1);
-   |         +++++++++    ~~~~~~~  ~~~~~~~~~~~~ +
+LL -         map[&0] = 1;
+LL +         map.insert(&0, 1);
+   |
+LL -         map[&0] = 1;
+LL +         if let Some(val) = map.get_mut(&0) { *val = 1; };
+   |
+LL -         map[&0] = 1;
+LL +         let val = map.entry(&0).or_insert(1);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/btreemap/btreemap-index-mut.stderr b/tests/ui/btreemap/btreemap-index-mut.stderr
index f402f503c15..e8850ed2a17 100644
--- a/tests/ui/btreemap/btreemap-index-mut.stderr
+++ b/tests/ui/btreemap/btreemap-index-mut.stderr
@@ -7,12 +7,15 @@ LL |     map[&0] = 1;
    = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `BTreeMap<u32, u32>`
 help: use `.insert()` to insert a value into a `BTreeMap<u32, u32>`, `.get_mut()` to modify it, or the entry API for more flexibility
    |
-LL |     map.insert(&0, 1);
-   |        ~~~~~~~~  ~  +
-LL |     if let Some(val) = map.get_mut(&0) { *val = 1; };
-   |     ++++++++++++++++++    ~~~~~~~~~  ~~~~~~~~    +++
-LL |     let val = map.entry(&0).or_insert(1);
-   |     +++++++++    ~~~~~~~  ~~~~~~~~~~~~ +
+LL -     map[&0] = 1;
+LL +     map.insert(&0, 1);
+   |
+LL -     map[&0] = 1;
+LL +     if let Some(val) = map.get_mut(&0) { *val = 1; };
+   |
+LL -     map[&0] = 1;
+LL +     let val = map.entry(&0).or_insert(1);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/c-variadic/issue-86053-1.stderr b/tests/ui/c-variadic/issue-86053-1.stderr
index 67a619e46d5..4ad3b73fd66 100644
--- a/tests/ui/c-variadic/issue-86053-1.stderr
+++ b/tests/ui/c-variadic/issue-86053-1.stderr
@@ -63,8 +63,9 @@ LL |     self , ... ,   self ,   self , ... ) where F : FnOnce ( & 'a & 'b usize
    |
 help: a trait with a similar name exists
    |
-LL |     self , ... ,   self ,   self , ... ) where Fn : FnOnce ( & 'a & 'b usize ) {
-   |                                                ~~
+LL -     self , ... ,   self ,   self , ... ) where F : FnOnce ( & 'a & 'b usize ) {
+LL +     self , ... ,   self ,   self , ... ) where Fn : FnOnce ( & 'a & 'b usize ) {
+   |
 help: you might be missing a type parameter
    |
 LL | fn ordering4 < 'a , 'b, F     > ( a :            ,   self , self ,   self ,
diff --git a/tests/ui/c-variadic/variadic-ffi-1.stderr b/tests/ui/c-variadic/variadic-ffi-1.stderr
index 7eca4cb61bc..061eae9729e 100644
--- a/tests/ui/c-variadic/variadic-ffi-1.stderr
+++ b/tests/ui/c-variadic/variadic-ffi-1.stderr
@@ -17,8 +17,9 @@ LL |     fn foo(f: isize, x: u8, ...);
    |        ^^^ -         -
 help: provide the arguments
    |
-LL |         foo(/* isize */, /* u8 */);
-   |            ~~~~~~~~~~~~~~~~~~~~~~~
+LL -         foo();
+LL +         foo(/* isize */, /* u8 */);
+   |
 
 error[E0060]: this function takes at least 2 arguments but 1 argument was supplied
   --> $DIR/variadic-ffi-1.rs:23:9
@@ -33,8 +34,9 @@ LL |     fn foo(f: isize, x: u8, ...);
    |        ^^^           -
 help: provide the argument
    |
-LL |         foo(1, /* u8 */);
-   |            ~~~~~~~~~~~~~
+LL -         foo(1);
+LL +         foo(1, /* u8 */);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/variadic-ffi-1.rs:25:56
diff --git a/tests/ui/cast/cast-as-bool.stderr b/tests/ui/cast/cast-as-bool.stderr
index 4ff56a95e49..b2c9ae5c6ad 100644
--- a/tests/ui/cast/cast-as-bool.stderr
+++ b/tests/ui/cast/cast-as-bool.stderr
@@ -6,8 +6,9 @@ LL |     let u = 5 as bool;
    |
 help: compare with zero instead
    |
-LL |     let u = 5 != 0;
-   |               ~~~~
+LL -     let u = 5 as bool;
+LL +     let u = 5 != 0;
+   |
 
 error[E0054]: cannot cast `i32` as `bool`
   --> $DIR/cast-as-bool.rs:6:13
@@ -17,8 +18,9 @@ LL |     let t = (1 + 2) as bool;
    |
 help: compare with zero instead
    |
-LL |     let t = (1 + 2) != 0;
-   |                     ~~~~
+LL -     let t = (1 + 2) as bool;
+LL +     let t = (1 + 2) != 0;
+   |
 
 error[E0054]: cannot cast `u32` as `bool`
   --> $DIR/cast-as-bool.rs:10:13
@@ -28,8 +30,9 @@ LL |     let _ = 5_u32 as bool;
    |
 help: compare with zero instead
    |
-LL |     let _ = 5_u32 != 0;
-   |                   ~~~~
+LL -     let _ = 5_u32 as bool;
+LL +     let _ = 5_u32 != 0;
+   |
 
 error[E0054]: cannot cast `f64` as `bool`
   --> $DIR/cast-as-bool.rs:13:13
@@ -39,8 +42,9 @@ LL |     let _ = 64.0_f64 as bool;
    |
 help: compare with zero instead
    |
-LL |     let _ = 64.0_f64 != 0;
-   |                      ~~~~
+LL -     let _ = 64.0_f64 as bool;
+LL +     let _ = 64.0_f64 != 0;
+   |
 
 error[E0054]: cannot cast `IntEnum` as `bool`
   --> $DIR/cast-as-bool.rs:24:13
@@ -86,8 +90,9 @@ LL |     let v = "hello" as bool;
    |
 help: consider using the `is_empty` method on `&'static str` to determine if it contains anything
    |
-LL |     let v = !"hello".is_empty();
-   |             +       ~~~~~~~~~~~
+LL -     let v = "hello" as bool;
+LL +     let v = !"hello".is_empty();
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/cast/cast-rfc0401-2.stderr b/tests/ui/cast/cast-rfc0401-2.stderr
index b7fb420533e..f2956cdfa33 100644
--- a/tests/ui/cast/cast-rfc0401-2.stderr
+++ b/tests/ui/cast/cast-rfc0401-2.stderr
@@ -6,8 +6,9 @@ LL |     let _ = 3 as bool;
    |
 help: compare with zero instead
    |
-LL |     let _ = 3 != 0;
-   |               ~~~~
+LL -     let _ = 3 as bool;
+LL +     let _ = 3 != 0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/cast/ice-cast-type-with-error-124848.stderr b/tests/ui/cast/ice-cast-type-with-error-124848.stderr
index 1e2adcc7d9e..402ee27386d 100644
--- a/tests/ui/cast/ice-cast-type-with-error-124848.stderr
+++ b/tests/ui/cast/ice-cast-type-with-error-124848.stderr
@@ -48,8 +48,9 @@ LL | struct MyType<'a>(Cell<Option<&'unpinned mut MyType<'a>>>, Pin);
    |        ^^^^^^
 help: provide the argument
    |
-LL |     let mut unpinned = MyType(Cell::new(None), /* value */);
-   |                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let mut unpinned = MyType(Cell::new(None));
+LL +     let mut unpinned = MyType(Cell::new(None), /* value */);
+   |
 
 error[E0606]: casting `&MyType<'_>` as `*const Cell<Option<&mut MyType<'_>>>` is invalid
   --> $DIR/ice-cast-type-with-error-124848.rs:14:20
diff --git a/tests/ui/cast/issue-106883-is-empty.stderr b/tests/ui/cast/issue-106883-is-empty.stderr
index 7115c7704ca..5ebabc9ed83 100644
--- a/tests/ui/cast/issue-106883-is-empty.stderr
+++ b/tests/ui/cast/issue-106883-is-empty.stderr
@@ -6,8 +6,9 @@ LL |     let _ = "foo" as bool;
    |
 help: consider using the `is_empty` method on `&'static str` to determine if it contains anything
    |
-LL |     let _ = !"foo".is_empty();
-   |             +     ~~~~~~~~~~~
+LL -     let _ = "foo" as bool;
+LL +     let _ = !"foo".is_empty();
+   |
 
 error[E0605]: non-primitive cast: `String` as `bool`
   --> $DIR/issue-106883-is-empty.rs:17:13
@@ -22,8 +23,9 @@ LL |     let _ = String::from("foo") as bool;
    |             ^^^^^^^^^^^^^^^^^^^
 help: consider using the `is_empty` method on `String` to determine if it contains anything
    |
-LL |     let _ = !String::from("foo").is_empty();
-   |             +                   ~~~~~~~~~~~
+LL -     let _ = String::from("foo") as bool;
+LL +     let _ = !String::from("foo").is_empty();
+   |
 
 error[E0605]: non-primitive cast: `Foo` as `bool`
   --> $DIR/issue-106883-is-empty.rs:20:13
@@ -38,8 +40,9 @@ LL |     let _ = Foo as bool;
    |             ^^^
 help: consider using the `is_empty` method on `Foo` to determine if it contains anything
    |
-LL |     let _ = !Foo.is_empty();
-   |             +   ~~~~~~~~~~~
+LL -     let _ = Foo as bool;
+LL +     let _ = !Foo.is_empty();
+   |
 
 error[E0606]: casting `&[i32]` as `bool` is invalid
   --> $DIR/issue-106883-is-empty.rs:25:5
@@ -49,8 +52,9 @@ LL |     bar as bool
    |
 help: consider using the `is_empty` method on `&[i32]` to determine if it contains anything
    |
-LL |     !bar.is_empty()
-   |     +   ~~~~~~~~~~~
+LL -     bar as bool
+LL +     !bar.is_empty()
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/cfg/cfg-method-receiver.stderr b/tests/ui/cfg/cfg-method-receiver.stderr
index 5767a7c1b4b..639413b90fa 100644
--- a/tests/ui/cfg/cfg-method-receiver.stderr
+++ b/tests/ui/cfg/cfg-method-receiver.stderr
@@ -16,8 +16,9 @@ LL |     cbor_map! { #[cfg(test)] 4};
    = note: this error originates in the macro `cbor_map` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: you must specify a concrete type for this numeric value, like `i32`
    |
-LL |     cbor_map! { #[cfg(test)] 4_i32};
-   |                              ~~~~~
+LL -     cbor_map! { #[cfg(test)] 4};
+LL +     cbor_map! { #[cfg(test)] 4_i32};
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/check-cfg/cfg-value-for-cfg-name-multiple.stderr b/tests/ui/check-cfg/cfg-value-for-cfg-name-multiple.stderr
index 138c7fc7584..5279f3b0901 100644
--- a/tests/ui/check-cfg/cfg-value-for-cfg-name-multiple.stderr
+++ b/tests/ui/check-cfg/cfg-value-for-cfg-name-multiple.stderr
@@ -10,12 +10,14 @@ LL | #[cfg(my_value)]
    = note: `#[warn(unexpected_cfgs)]` on by default
 help: found config with similar value
    |
-LL | #[cfg(foo = "my_value")]
-   |       ~~~~~~~~~~~~~~~~
+LL - #[cfg(my_value)]
+LL + #[cfg(foo = "my_value")]
+   |
 help: found config with similar value
    |
-LL | #[cfg(bar = "my_value")]
-   |       ~~~~~~~~~~~~~~~~
+LL - #[cfg(my_value)]
+LL + #[cfg(bar = "my_value")]
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/check-cfg/diagnotics.cargo.stderr b/tests/ui/check-cfg/diagnotics.cargo.stderr
index a440ccaaf58..ab7111eca24 100644
--- a/tests/ui/check-cfg/diagnotics.cargo.stderr
+++ b/tests/ui/check-cfg/diagnotics.cargo.stderr
@@ -17,8 +17,9 @@ LL | #[cfg(featur = "foo")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
 help: there is a config with a similar name and value
    |
-LL | #[cfg(feature = "foo")]
-   |       ~~~~~~~
+LL - #[cfg(featur = "foo")]
+LL + #[cfg(feature = "foo")]
+   |
 
 warning: unexpected `cfg` condition name: `featur`
   --> $DIR/diagnotics.rs:17:7
@@ -30,8 +31,9 @@ LL | #[cfg(featur = "fo")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
 help: there is a config with a similar name and different values
    |
-LL | #[cfg(feature = "foo")]
-   |       ~~~~~~~~~~~~~~~
+LL - #[cfg(featur = "fo")]
+LL + #[cfg(feature = "foo")]
+   |
 
 warning: unexpected `cfg` condition name: `no_value`
   --> $DIR/diagnotics.rs:24:7
@@ -60,8 +62,9 @@ LL | #[cfg(no_value = "foo")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
 help: there is a config with a similar name and no value
    |
-LL | #[cfg(no_values)]
-   |       ~~~~~~~~~
+LL - #[cfg(no_value = "foo")]
+LL + #[cfg(no_values)]
+   |
 
 warning: unexpected `cfg` condition value: `bar`
   --> $DIR/diagnotics.rs:32:7
diff --git a/tests/ui/check-cfg/diagnotics.rustc.stderr b/tests/ui/check-cfg/diagnotics.rustc.stderr
index 6868be482d8..4aae1f00e70 100644
--- a/tests/ui/check-cfg/diagnotics.rustc.stderr
+++ b/tests/ui/check-cfg/diagnotics.rustc.stderr
@@ -19,8 +19,9 @@ LL | #[cfg(featur = "foo")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
 help: there is a config with a similar name and value
    |
-LL | #[cfg(feature = "foo")]
-   |       ~~~~~~~
+LL - #[cfg(featur = "foo")]
+LL + #[cfg(feature = "foo")]
+   |
 
 warning: unexpected `cfg` condition name: `featur`
   --> $DIR/diagnotics.rs:17:7
@@ -33,8 +34,9 @@ LL | #[cfg(featur = "fo")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
 help: there is a config with a similar name and different values
    |
-LL | #[cfg(feature = "foo")]
-   |       ~~~~~~~~~~~~~~~
+LL - #[cfg(featur = "fo")]
+LL + #[cfg(feature = "foo")]
+   |
 
 warning: unexpected `cfg` condition name: `no_value`
   --> $DIR/diagnotics.rs:24:7
@@ -55,8 +57,9 @@ LL | #[cfg(no_value = "foo")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
 help: there is a config with a similar name and no value
    |
-LL | #[cfg(no_values)]
-   |       ~~~~~~~~~
+LL - #[cfg(no_value = "foo")]
+LL + #[cfg(no_values)]
+   |
 
 warning: unexpected `cfg` condition value: `bar`
   --> $DIR/diagnotics.rs:32:7
diff --git a/tests/ui/check-cfg/well-known-names.stderr b/tests/ui/check-cfg/well-known-names.stderr
index 000315443f8..4edf608589d 100644
--- a/tests/ui/check-cfg/well-known-names.stderr
+++ b/tests/ui/check-cfg/well-known-names.stderr
@@ -48,8 +48,9 @@ LL | #[cfg(target_oz = "linux")]
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
 help: there is a config with a similar name and value
    |
-LL | #[cfg(target_os = "linux")]
-   |       ~~~~~~~~~
+LL - #[cfg(target_oz = "linux")]
+LL + #[cfg(target_os = "linux")]
+   |
 
 warning: unexpected `cfg` condition name: `features`
   --> $DIR/well-known-names.rs:19:7
diff --git a/tests/ui/closures/2229_closure_analysis/bad-pattern.stderr b/tests/ui/closures/2229_closure_analysis/bad-pattern.stderr
index b5ad8eb790f..f5cbecc5704 100644
--- a/tests/ui/closures/2229_closure_analysis/bad-pattern.stderr
+++ b/tests/ui/closures/2229_closure_analysis/bad-pattern.stderr
@@ -108,8 +108,9 @@ LL |         let PAT = v1;
    = note: the matched value is of type `u32`
 help: introduce a variable instead
    |
-LL |         let PAT_var = v1;
-   |             ~~~~~~~
+LL -         let PAT = v1;
+LL +         let PAT_var = v1;
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/closures/2229_closure_analysis/issue-118144.stderr b/tests/ui/closures/2229_closure_analysis/issue-118144.stderr
index 87084e60237..f717343122e 100644
--- a/tests/ui/closures/2229_closure_analysis/issue-118144.stderr
+++ b/tests/ui/closures/2229_closure_analysis/issue-118144.stderr
@@ -8,8 +8,9 @@ LL |         V(x) = func_arg;
    |
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |         V(x) = &*func_arg;
-   |                ~~~~~~~~~~
+LL -         V(x) = func_arg;
+LL +         V(x) = &*func_arg;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/closures/issue-78720.stderr b/tests/ui/closures/issue-78720.stderr
index 5d65c87b0fd..acce1dc191a 100644
--- a/tests/ui/closures/issue-78720.stderr
+++ b/tests/ui/closures/issue-78720.stderr
@@ -15,8 +15,9 @@ LL |     _func: F,
    |
 help: a trait with a similar name exists
    |
-LL |     _func: Fn,
-   |            ~~
+LL -     _func: F,
+LL +     _func: Fn,
+   |
 help: you might be missing a type parameter
    |
 LL | struct Map2<Segment2, F> {
diff --git a/tests/ui/closures/multiple-fn-bounds.stderr b/tests/ui/closures/multiple-fn-bounds.stderr
index 861b39b4d07..9b824fa0eef 100644
--- a/tests/ui/closures/multiple-fn-bounds.stderr
+++ b/tests/ui/closures/multiple-fn-bounds.stderr
@@ -21,8 +21,9 @@ LL | fn foo<F: Fn(&char) -> bool + Fn(char) -> bool>(f: F) {
    |                               ^^^^^^^^^^^^^^^^ required by this bound in `foo`
 help: consider adjusting the signature so it does not borrow its argument
    |
-LL |     foo(move |char| v);
-   |               ~~~~
+LL -     foo(move |x| v);
+LL +     foo(move |char| v);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr
index 120d5cc5293..63260b5c78f 100644
--- a/tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr
+++ b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr
@@ -1,4 +1,4 @@
-error[E0658]: C-cmse-nonsecure-call ABI is experimental and subject to change
+error[E0658]: the extern "C-cmse-nonsecure-call" ABI is experimental and subject to change
   --> $DIR/gate_test.rs:5:46
    |
 LL |         core::mem::transmute::<usize, extern "C-cmse-nonsecure-call" fn(i32, i32, i32, i32) -> i32>(
diff --git a/tests/ui/cmse-nonsecure/cmse-nonsecure-call/generics.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/generics.stderr
index f20e67e3d94..0560f0eec1c 100644
--- a/tests/ui/cmse-nonsecure/cmse-nonsecure-call/generics.stderr
+++ b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/generics.stderr
@@ -14,8 +14,9 @@ LL |     f1: extern "C-cmse-nonsecure-call" fn<U: Copy>(U, u32, u32, u32) -> u64
    |
 help: a type parameter with a similar name exists
    |
-LL |     f1: extern "C-cmse-nonsecure-call" fn<U: Copy>(T, u32, u32, u32) -> u64,
-   |                                                    ~
+LL -     f1: extern "C-cmse-nonsecure-call" fn<U: Copy>(U, u32, u32, u32) -> u64,
+LL +     f1: extern "C-cmse-nonsecure-call" fn<U: Copy>(T, u32, u32, u32) -> u64,
+   |
 help: you might be missing a type parameter
    |
 LL | struct Test<T: Copy, U> {
diff --git a/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr
index dabf16cab30..0afbbe647af 100644
--- a/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr
+++ b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr
@@ -1,4 +1,4 @@
-error[E0658]: C-cmse-nonsecure-entry ABI is experimental and subject to change
+error[E0658]: the extern "C-cmse-nonsecure-entry" ABI is experimental and subject to change
   --> $DIR/gate_test.rs:4:12
    |
 LL | pub extern "C-cmse-nonsecure-entry" fn entry_function(input: u32) -> u32 {
diff --git a/tests/ui/codemap_tests/two_files.stderr b/tests/ui/codemap_tests/two_files.stderr
index d833d4944bf..3b542fdbd33 100644
--- a/tests/ui/codemap_tests/two_files.stderr
+++ b/tests/ui/codemap_tests/two_files.stderr
@@ -7,7 +7,8 @@ LL | impl Bar for Baz { }
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
   --> $DIR/two_files_data.rs:5:1
    |
-LL | trait Bar = dyn Foo;
+LL - type Bar = dyn Foo;
+LL + trait Bar = dyn Foo;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/compare-method/bad-self-type.stderr b/tests/ui/compare-method/bad-self-type.stderr
index a3a31f43447..f662b5a11cb 100644
--- a/tests/ui/compare-method/bad-self-type.stderr
+++ b/tests/ui/compare-method/bad-self-type.stderr
@@ -8,8 +8,9 @@ LL |     fn poll(self, _: &mut Context<'_>) -> Poll<()> {
               found signature `fn(MyFuture, &mut Context<'_>) -> Poll<_>`
 help: change the self-receiver type to match the trait
    |
-LL |     fn poll(self: Pin<&mut MyFuture>, _: &mut Context<'_>) -> Poll<()> {
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn poll(self, _: &mut Context<'_>) -> Poll<()> {
+LL +     fn poll(self: Pin<&mut MyFuture>, _: &mut Context<'_>) -> Poll<()> {
+   |
 
 error[E0053]: method `foo` has an incompatible type for trait
   --> $DIR/bad-self-type.rs:22:18
@@ -26,8 +27,9 @@ LL |     fn foo(self);
               found signature `fn(Box<MyFuture>)`
 help: change the self-receiver type to match the trait
    |
-LL |     fn foo(self) {}
-   |            ~~~~
+LL -     fn foo(self: Box<Self>) {}
+LL +     fn foo(self) {}
+   |
 
 error[E0053]: method `bar` has an incompatible type for trait
   --> $DIR/bad-self-type.rs:24:17
diff --git a/tests/ui/compare-method/issue-90444.stderr b/tests/ui/compare-method/issue-90444.stderr
index f05c9939c00..c69d63b3e30 100644
--- a/tests/ui/compare-method/issue-90444.stderr
+++ b/tests/ui/compare-method/issue-90444.stderr
@@ -8,8 +8,9 @@ LL |     fn from(_: fn((), (), &mut ())) -> Self {
               found signature `fn(for<'a> fn((), (), &'a mut ())) -> A`
 help: change the parameter type to match the trait
    |
-LL |     fn from(_: for<'a> fn((), (), &'a ())) -> Self {
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn from(_: fn((), (), &mut ())) -> Self {
+LL +     fn from(_: for<'a> fn((), (), &'a ())) -> Self {
+   |
 
 error[E0053]: method `from` has an incompatible type for trait
   --> $DIR/issue-90444.rs:11:16
@@ -21,8 +22,9 @@ LL |     fn from(_: fn((), (), u64)) -> Self {
               found signature `fn(fn((), (), u64)) -> B`
 help: change the parameter type to match the trait
    |
-LL |     fn from(_: fn((), (), u32)) -> Self {
-   |                ~~~~~~~~~~~~~~~
+LL -     fn from(_: fn((), (), u64)) -> Self {
+LL +     fn from(_: fn((), (), u32)) -> Self {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/compare-method/region-extra-2.stderr b/tests/ui/compare-method/region-extra-2.stderr
index 3f55f673117..d19d4f28f12 100644
--- a/tests/ui/compare-method/region-extra-2.stderr
+++ b/tests/ui/compare-method/region-extra-2.stderr
@@ -9,8 +9,9 @@ LL |     fn renew<'b: 'a>(self) -> &'b mut [T] where 'a: 'b {
    |
 help: copy the `where` clause predicates from the trait
    |
-LL |     fn renew<'b: 'a>(self) -> &'b mut [T] where 'b: 'a {
-   |                                           ~~~~~~~~~~~~
+LL -     fn renew<'b: 'a>(self) -> &'b mut [T] where 'a: 'b {
+LL +     fn renew<'b: 'a>(self) -> &'b mut [T] where 'b: 'a {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/compare-method/reordered-type-param.stderr b/tests/ui/compare-method/reordered-type-param.stderr
index 1e8266e213d..536364871a3 100644
--- a/tests/ui/compare-method/reordered-type-param.stderr
+++ b/tests/ui/compare-method/reordered-type-param.stderr
@@ -18,8 +18,9 @@ LL |   fn b<C:Clone,D>(&self, x: C) -> C;
    = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
 help: change the parameter type to match the trait
    |
-LL |   fn b<F:Clone,G>(&self, _x: F) -> G { panic!() }
-   |                              ~
+LL -   fn b<F:Clone,G>(&self, _x: G) -> G { panic!() }
+LL +   fn b<F:Clone,G>(&self, _x: F) -> G { panic!() }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/conditional-compilation/cfg-attr-parse.stderr b/tests/ui/conditional-compilation/cfg-attr-parse.stderr
index 759df3c90c6..1605761e591 100644
--- a/tests/ui/conditional-compilation/cfg-attr-parse.stderr
+++ b/tests/ui/conditional-compilation/cfg-attr-parse.stderr
@@ -7,8 +7,9 @@ LL | #[cfg_attr()]
    = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>
 help: missing condition and attribute
    |
-LL | #[cfg_attr(condition, attribute, other_attribute, ...)]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - #[cfg_attr()]
+LL + #[cfg_attr(condition, attribute, other_attribute, ...)]
+   |
 
 error: expected `,`, found end of `cfg_attr` input
   --> $DIR/cfg-attr-parse.rs:8:17
@@ -54,8 +55,9 @@ LL | #[cfg_attr[all(),,]]
    |
 help: the delimiters should be `(` and `)`
    |
-LL | #[cfg_attr(all(),,)]
-   |           ~       ~
+LL - #[cfg_attr[all(),,]]
+LL + #[cfg_attr(all(),,)]
+   |
 
 error: expected identifier, found `,`
   --> $DIR/cfg-attr-parse.rs:44:18
@@ -74,8 +76,9 @@ LL | #[cfg_attr{all(),,}]
    |
 help: the delimiters should be `(` and `)`
    |
-LL | #[cfg_attr(all(),,)]
-   |           ~       ~
+LL - #[cfg_attr{all(),,}]
+LL + #[cfg_attr(all(),,)]
+   |
 
 error: expected identifier, found `,`
   --> $DIR/cfg-attr-parse.rs:50:18
diff --git a/tests/ui/confuse-field-and-method/issue-33784.stderr b/tests/ui/confuse-field-and-method/issue-33784.stderr
index 59a6f4fccd8..69f569e09a4 100644
--- a/tests/ui/confuse-field-and-method/issue-33784.stderr
+++ b/tests/ui/confuse-field-and-method/issue-33784.stderr
@@ -10,8 +10,9 @@ LL |     (p.closure)();
    |     +         +
 help: there is a method `clone` with a similar name
    |
-LL |     p.clone();
-   |       ~~~~~
+LL -     p.closure();
+LL +     p.clone();
+   |
 
 error[E0599]: no method named `fn_ptr` found for reference `&&Obj<{closure@$DIR/issue-33784.rs:25:43: 25:45}>` in the current scope
   --> $DIR/issue-33784.rs:29:7
diff --git a/tests/ui/const-generics/adt_const_params/const_param_ty_dyn_compatibility.stderr b/tests/ui/const-generics/adt_const_params/const_param_ty_dyn_compatibility.stderr
index 6fa9b591ad2..c71ec24dda3 100644
--- a/tests/ui/const-generics/adt_const_params/const_param_ty_dyn_compatibility.stderr
+++ b/tests/ui/const-generics/adt_const_params/const_param_ty_dyn_compatibility.stderr
@@ -11,8 +11,9 @@ note: for a trait to be dyn compatible it needs to allow building a vtable
    = note: the trait is not dyn compatible because it uses `Self` as a type parameter
 help: consider using an opaque type instead
    |
-LL | fn foo(a: &impl ConstParamTy_) {}
-   |            ~~~~
+LL - fn foo(a: &dyn ConstParamTy_) {}
+LL + fn foo(a: &impl ConstParamTy_) {}
+   |
 
 error[E0038]: the trait `UnsizedConstParamTy` is not dyn compatible
   --> $DIR/const_param_ty_dyn_compatibility.rs:9:16
@@ -27,8 +28,9 @@ note: for a trait to be dyn compatible it needs to allow building a vtable
    = note: the trait is not dyn compatible because it uses `Self` as a type parameter
 help: consider using an opaque type instead
    |
-LL | fn bar(a: &impl UnsizedConstParamTy) {}
-   |            ~~~~
+LL - fn bar(a: &dyn UnsizedConstParamTy) {}
+LL + fn bar(a: &impl UnsizedConstParamTy) {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/const-generics/early/invalid-const-arguments.stderr b/tests/ui/const-generics/early/invalid-const-arguments.stderr
index cee34e3b715..86b4d006454 100644
--- a/tests/ui/const-generics/early/invalid-const-arguments.stderr
+++ b/tests/ui/const-generics/early/invalid-const-arguments.stderr
@@ -9,8 +9,9 @@ LL | impl Foo for A<N> {}
    |
 help: a struct with a similar name exists
    |
-LL | impl Foo for A<A> {}
-   |                ~
+LL - impl Foo for A<N> {}
+LL + impl Foo for A<A> {}
+   |
 help: you might be missing a type parameter
    |
 LL | impl<N> Foo for A<N> {}
@@ -27,8 +28,9 @@ LL | impl<const N: u8> Foo for C<N, T> {}
    |
 help: a struct with a similar name exists
    |
-LL | impl<const N: u8> Foo for C<N, A> {}
-   |                                ~
+LL - impl<const N: u8> Foo for C<N, T> {}
+LL + impl<const N: u8> Foo for C<N, A> {}
+   |
 help: you might be missing a type parameter
    |
 LL | impl<const N: u8, T> Foo for C<N, T> {}
diff --git a/tests/ui/const-generics/ensure_is_evaluatable.stderr b/tests/ui/const-generics/ensure_is_evaluatable.stderr
index 62f8bc34f2e..397902846ec 100644
--- a/tests/ui/const-generics/ensure_is_evaluatable.stderr
+++ b/tests/ui/const-generics/ensure_is_evaluatable.stderr
@@ -14,8 +14,9 @@ LL |     [(); N + 1]:,
    |          ^^^^^ required by this bound in `bar`
 help: try adding a `where` bound
    |
-LL |     [(); M + 1]:, [(); N + 1]:
-   |                 ~~~~~~~~~~~~~~
+LL -     [(); M + 1]:,
+LL +     [(); M + 1]:, [(); N + 1]:
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/const-generics/fn_with_two_const_inputs.stderr b/tests/ui/const-generics/fn_with_two_const_inputs.stderr
index c0a913a21fd..147a2c91fd0 100644
--- a/tests/ui/const-generics/fn_with_two_const_inputs.stderr
+++ b/tests/ui/const-generics/fn_with_two_const_inputs.stderr
@@ -14,8 +14,9 @@ LL |     [(); N + 1]:,
    |          ^^^^^ required by this bound in `bar`
 help: try adding a `where` bound
    |
-LL |     [(); both(N + 1, M + 1)]:, [(); N + 1]:
-   |                              ~~~~~~~~~~~~~~
+LL -     [(); both(N + 1, M + 1)]:,
+LL +     [(); both(N + 1, M + 1)]:, [(); N + 1]:
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/const-generics/forbid-non-structural_match-types.stderr b/tests/ui/const-generics/forbid-non-structural_match-types.stderr
index 94afded9469..8ef629329f1 100644
--- a/tests/ui/const-generics/forbid-non-structural_match-types.stderr
+++ b/tests/ui/const-generics/forbid-non-structural_match-types.stderr
@@ -6,8 +6,8 @@ LL | struct D<const X: C>;
    |
 help: add `#[derive(ConstParamTy, PartialEq, Eq)]` to the struct
    |
+LL - struct C;
 LL + #[derive(ConstParamTy, PartialEq, Eq)]
-LL | struct C;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/const-generics/generic_arg_infer/in-signature.stderr b/tests/ui/const-generics/generic_arg_infer/in-signature.stderr
index 5999bc18204..12d84268f95 100644
--- a/tests/ui/const-generics/generic_arg_infer/in-signature.stderr
+++ b/tests/ui/const-generics/generic_arg_infer/in-signature.stderr
@@ -34,8 +34,9 @@ LL | const ARR_CT: [u8; _] = [0; 3];
    |
 help: replace this with a fully-specified type
    |
-LL | const ARR_CT: [u8; 3] = [0; 3];
-   |               ~~~~~~~
+LL - const ARR_CT: [u8; _] = [0; 3];
+LL + const ARR_CT: [u8; 3] = [0; 3];
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/in-signature.rs:24:25
@@ -45,8 +46,9 @@ LL | static ARR_STATIC: [u8; _] = [0; 3];
    |
 help: replace this with a fully-specified type
    |
-LL | static ARR_STATIC: [u8; 3] = [0; 3];
-   |                    ~~~~~~~
+LL - static ARR_STATIC: [u8; _] = [0; 3];
+LL + static ARR_STATIC: [u8; 3] = [0; 3];
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
   --> $DIR/in-signature.rs:26:23
@@ -56,8 +58,9 @@ LL | const TY_CT: Bar<i32, _> = Bar::<i32, 3>(0);
    |
 help: replace this with a fully-specified type
    |
-LL | const TY_CT: Bar<i32, 3> = Bar::<i32, 3>(0);
-   |              ~~~~~~~~~~~
+LL - const TY_CT: Bar<i32, _> = Bar::<i32, 3>(0);
+LL + const TY_CT: Bar<i32, 3> = Bar::<i32, 3>(0);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/in-signature.rs:28:28
@@ -67,8 +70,9 @@ LL | static TY_STATIC: Bar<i32, _> = Bar::<i32, 3>(0);
    |
 help: replace this with a fully-specified type
    |
-LL | static TY_STATIC: Bar<i32, 3> = Bar::<i32, 3>(0);
-   |                   ~~~~~~~~~~~
+LL - static TY_STATIC: Bar<i32, _> = Bar::<i32, 3>(0);
+LL + static TY_STATIC: Bar<i32, 3> = Bar::<i32, 3>(0);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
   --> $DIR/in-signature.rs:30:24
@@ -80,8 +84,9 @@ LL | const TY_CT_MIXED: Bar<_, _> = Bar::<i32, 3>(0);
    |
 help: replace this with a fully-specified type
    |
-LL | const TY_CT_MIXED: Bar<i32, 3> = Bar::<i32, 3>(0);
-   |                    ~~~~~~~~~~~
+LL - const TY_CT_MIXED: Bar<_, _> = Bar::<i32, 3>(0);
+LL + const TY_CT_MIXED: Bar<i32, 3> = Bar::<i32, 3>(0);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/in-signature.rs:32:29
@@ -93,8 +98,9 @@ LL | static TY_STATIC_MIXED: Bar<_, _> = Bar::<i32, 3>(0);
    |
 help: replace this with a fully-specified type
    |
-LL | static TY_STATIC_MIXED: Bar<i32, 3> = Bar::<i32, 3>(0);
-   |                         ~~~~~~~~~~~
+LL - static TY_STATIC_MIXED: Bar<_, _> = Bar::<i32, 3>(0);
+LL + static TY_STATIC_MIXED: Bar<i32, 3> = Bar::<i32, 3>(0);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated types
   --> $DIR/in-signature.rs:51:23
diff --git a/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr
index 3622ef16a96..9cb71ad8a09 100644
--- a/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr
@@ -16,8 +16,9 @@ LL |     fn assert_impl<T: Trait>() {}
    |                       ^^^^^ required by this bound in `assert_impl`
 help: try adding a `where` bound
    |
-LL |     EvaluatableU128<{N as u128}>:, [(); { O as u128 } as usize]: {
-   |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     EvaluatableU128<{N as u128}>:, {
+LL +     EvaluatableU128<{N as u128}>:, [(); { O as u128 } as usize]: {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/abstract-const-as-cast-3.rs:17:5
@@ -51,8 +52,9 @@ LL |     fn assert_impl<T: Trait>() {}
    |                       ^^^^^ required by this bound in `assert_impl`
 help: try adding a `where` bound
    |
-LL |     EvaluatableU128<{N as u128}>:, [(); { O as u128 } as usize]: {
-   |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     EvaluatableU128<{N as u128}>:, {
+LL +     EvaluatableU128<{N as u128}>:, [(); { O as u128 } as usize]: {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/abstract-const-as-cast-3.rs:20:5
@@ -114,8 +116,9 @@ LL |     fn assert_impl<T: Trait>() {}
    |                       ^^^^^ required by this bound in `assert_impl`
 help: try adding a `where` bound
    |
-LL |     EvaluatableU128<{N as _}>:, [(); { O as u128 } as usize]: {
-   |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     EvaluatableU128<{N as _}>:, {
+LL +     EvaluatableU128<{N as _}>:, [(); { O as u128 } as usize]: {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/abstract-const-as-cast-3.rs:35:5
@@ -149,8 +152,9 @@ LL |     fn assert_impl<T: Trait>() {}
    |                       ^^^^^ required by this bound in `assert_impl`
 help: try adding a `where` bound
    |
-LL |     EvaluatableU128<{N as _}>:, [(); { O as u128 } as usize]: {
-   |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     EvaluatableU128<{N as _}>:, {
+LL +     EvaluatableU128<{N as _}>:, [(); { O as u128 } as usize]: {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/abstract-const-as-cast-3.rs:38:5
diff --git a/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr
index f3a38fcc005..b43ce5eca43 100644
--- a/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr
@@ -6,8 +6,9 @@ LL |     bar::<{ T::ASSOC }>();
    |
 help: try adding a `where` bound
    |
-LL | fn foo<T: Trait, U: Trait>() where [(); U::ASSOC]:, [(); { T::ASSOC }]: {
-   |                                                   ~~~~~~~~~~~~~~~~~~~~~
+LL - fn foo<T: Trait, U: Trait>() where [(); U::ASSOC]:, {
+LL + fn foo<T: Trait, U: Trait>() where [(); U::ASSOC]:, [(); { T::ASSOC }]: {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/const-generics/generic_const_exprs/const_kind_expr/issue_114151.stderr b/tests/ui/const-generics/generic_const_exprs/const_kind_expr/issue_114151.stderr
index 4d1fb02b59e..86e35e17a07 100644
--- a/tests/ui/const-generics/generic_const_exprs/const_kind_expr/issue_114151.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/const_kind_expr/issue_114151.stderr
@@ -26,8 +26,9 @@ LL |     foo::<_, L>([(); L + 1 + L]);
    |
 help: try adding a `where` bound
    |
-LL |     [(); (L - 1) + 1 + L]:, [(); L + 1 + L]:
-   |                           ~~~~~~~~~~~~~~~~~~
+LL -     [(); (L - 1) + 1 + L]:,
+LL +     [(); (L - 1) + 1 + L]:, [(); L + 1 + L]:
+   |
 
 error: unconstrained generic constant
   --> $DIR/issue_114151.rs:17:17
diff --git a/tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr b/tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr
index 99eab935a09..c63a79e64ed 100644
--- a/tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr
@@ -15,8 +15,9 @@ LL |     foo::<_, L>([(); L + 1 + L]);
    |
 help: try adding a `where` bound
    |
-LL |     [(); (L - 1) + 1 + L]:, [(); L + 1 + L]:
-   |                           ~~~~~~~~~~~~~~~~~~
+LL -     [(); (L - 1) + 1 + L]:,
+LL +     [(); (L - 1) + 1 + L]:, [(); L + 1 + L]:
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/const-generics/generic_const_exprs/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.stderr b/tests/ui/const-generics/generic_const_exprs/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.stderr
index 80d711ca844..c63beeac367 100644
--- a/tests/ui/const-generics/generic_const_exprs/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.stderr
@@ -9,8 +9,9 @@ LL |          let f: F = async { 1 };
    |
 help: a trait with a similar name exists
    |
-LL |          let f: Fn = async { 1 };
-   |                 ~~
+LL -          let f: F = async { 1 };
+LL +          let f: Fn = async { 1 };
+   |
 help: you might be missing a type parameter
    |
 LL | fn f<T, F>(
@@ -28,8 +29,9 @@ LL | ) -> impl Iterator<Item = dyn SubAssign> {
    |                           +++
 help: you might have meant to write a bound here
    |
-LL | ) -> impl Iterator<Item: SubAssign> {
-   |                        ~
+LL - ) -> impl Iterator<Item = SubAssign> {
+LL + ) -> impl Iterator<Item: SubAssign> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.rs:16:27
@@ -44,8 +46,9 @@ LL | ) -> impl Iterator<Item = dyn SubAssign> {
    |                           +++
 help: you might have meant to write a bound here
    |
-LL | ) -> impl Iterator<Item: SubAssign> {
-   |                        ~
+LL - ) -> impl Iterator<Item = SubAssign> {
+LL + ) -> impl Iterator<Item: SubAssign> {
+   |
 
 error[E0277]: `()` is not an iterator
   --> $DIR/expected-type-of-closure-body-to-be-a-closure-or-coroutine-ice-113776.rs:16:6
diff --git a/tests/ui/const-generics/invalid-const-arg-for-type-param.stderr b/tests/ui/const-generics/invalid-const-arg-for-type-param.stderr
index 4004ad19032..2b4c7f4bcff 100644
--- a/tests/ui/const-generics/invalid-const-arg-for-type-param.stderr
+++ b/tests/ui/const-generics/invalid-const-arg-for-type-param.stderr
@@ -6,8 +6,9 @@ LL |     let _: u32 = 5i32.try_into::<32>().unwrap();
    |
 help: consider moving this generic argument to the `TryInto` trait, which takes up to 1 argument
    |
-LL |     let _: u32 = TryInto::<32>::try_into(5i32).unwrap();
-   |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: u32 = 5i32.try_into::<32>().unwrap();
+LL +     let _: u32 = TryInto::<32>::try_into(5i32).unwrap();
+   |
 help: remove the unnecessary generics
    |
 LL -     let _: u32 = 5i32.try_into::<32>().unwrap();
diff --git a/tests/ui/const-generics/issue-80471.stderr b/tests/ui/const-generics/issue-80471.stderr
index a8514c5cc07..8cf3d68e5d6 100644
--- a/tests/ui/const-generics/issue-80471.stderr
+++ b/tests/ui/const-generics/issue-80471.stderr
@@ -6,8 +6,8 @@ LL | fn foo<const N: Nat>() {}
    |
 help: add `#[derive(ConstParamTy)]` to the struct
    |
+LL - enum Nat {
 LL + #[derive(ConstParamTy)]
-LL | enum Nat {
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/const-generics/issues/issue-87493.stderr b/tests/ui/const-generics/issues/issue-87493.stderr
index 73bd6ed73e6..42d32a0ee05 100644
--- a/tests/ui/const-generics/issues/issue-87493.stderr
+++ b/tests/ui/const-generics/issues/issue-87493.stderr
@@ -6,8 +6,9 @@ LL |     T: MyTrait<Assoc == S::Assoc>,
    |
 help: if you meant to use an associated type binding, replace `==` with `=`
    |
-LL |     T: MyTrait<Assoc = S::Assoc>,
-   |                      ~
+LL -     T: MyTrait<Assoc == S::Assoc>,
+LL +     T: MyTrait<Assoc = S::Assoc>,
+   |
 
 error[E0107]: trait takes 0 generic arguments but 1 generic argument was supplied
   --> $DIR/issue-87493.rs:8:8
diff --git a/tests/ui/const-generics/issues/issue-97278.stderr b/tests/ui/const-generics/issues/issue-97278.stderr
index 47e6bf1df4d..4894ddb7b8d 100644
--- a/tests/ui/const-generics/issues/issue-97278.stderr
+++ b/tests/ui/const-generics/issues/issue-97278.stderr
@@ -6,8 +6,8 @@ LL | fn test<const BAR: Bar>() {}
    |
 help: add `#[derive(ConstParamTy)]` to the struct
    |
+LL - enum Bar {
 LL + #[derive(ConstParamTy)]
-LL | enum Bar {
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/const-generics/legacy-const-generics-bad.stderr b/tests/ui/const-generics/legacy-const-generics-bad.stderr
index e9ea22e472c..3a5fa417075 100644
--- a/tests/ui/const-generics/legacy-const-generics-bad.stderr
+++ b/tests/ui/const-generics/legacy-const-generics-bad.stderr
@@ -6,8 +6,9 @@ LL |     legacy_const_generics::foo(0, a, 2);
    |
 help: consider using `const` instead of `let`
    |
-LL |     const a: /* Type */ = 1;
-   |     ~~~~~  ++++++++++++
+LL -     let a = 1;
+LL +     const a: /* Type */ = 1;
+   |
 
 error: generic parameters may not be used in const operations
   --> $DIR/legacy-const-generics-bad.rs:12:35
diff --git a/tests/ui/const-generics/mgca/unexpected-fn-item-in-array.rs b/tests/ui/const-generics/mgca/unexpected-fn-item-in-array.rs
new file mode 100644
index 00000000000..1c3274f6a37
--- /dev/null
+++ b/tests/ui/const-generics/mgca/unexpected-fn-item-in-array.rs
@@ -0,0 +1,13 @@
+// Make sure we don't ICE when encountering an fn item during lowering in mGCA.
+
+#![feature(min_generic_const_args)]
+//~^ WARN the feature `min_generic_const_args` is incomplete
+
+trait A<T> {}
+
+impl A<[usize; fn_item]> for () {}
+//~^ ERROR the constant `fn_item` is not of type `usize`
+
+fn fn_item() {}
+
+fn main() {}
diff --git a/tests/ui/const-generics/mgca/unexpected-fn-item-in-array.stderr b/tests/ui/const-generics/mgca/unexpected-fn-item-in-array.stderr
new file mode 100644
index 00000000000..89fc8270e3e
--- /dev/null
+++ b/tests/ui/const-generics/mgca/unexpected-fn-item-in-array.stderr
@@ -0,0 +1,19 @@
+warning: the feature `min_generic_const_args` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/unexpected-fn-item-in-array.rs:3:12
+   |
+LL | #![feature(min_generic_const_args)]
+   |            ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #132980 <https://github.com/rust-lang/rust/issues/132980> for more information
+   = note: `#[warn(incomplete_features)]` on by default
+
+error: the constant `fn_item` is not of type `usize`
+  --> $DIR/unexpected-fn-item-in-array.rs:8:6
+   |
+LL | impl A<[usize; fn_item]> for () {}
+   |      ^^^^^^^^^^^^^^^^^^^ expected `usize`, found fn item
+   |
+   = note: the length of array `[usize; fn_item]` must be type `usize`
+
+error: aborting due to 1 previous error; 1 warning emitted
+
diff --git a/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
index 78cddcc234c..d435af07db2 100644
--- a/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
+++ b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
@@ -16,8 +16,9 @@ LL | impl Foo<N = 3> for Bar {
    |
 help: to use `3` as a generic argument specify it directly
    |
-LL | impl Foo<3> for Bar {
-   |          ~
+LL - impl Foo<N = 3> for Bar {
+LL + impl Foo<3> for Bar {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr
index 387eb226e70..f852c14b178 100644
--- a/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr
+++ b/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr
@@ -28,8 +28,9 @@ LL | impl Foo<N = const 3> for Bar {
    |
 help: to use `3` as a generic argument specify it directly
    |
-LL | impl Foo<3> for Bar {
-   |          ~
+LL - impl Foo<N = const 3> for Bar {
+LL + impl Foo<3> for Bar {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr b/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr
index 4fce1aede95..95d20de1b43 100644
--- a/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr
+++ b/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr
@@ -6,8 +6,9 @@ LL |     assert_eq!(R.method::<1u16>(), 1);
    |
 help: change the type of the numeric literal from `u16` to `u8`
    |
-LL |     assert_eq!(R.method::<1u8>(), 1);
-   |                            ~~
+LL -     assert_eq!(R.method::<1u16>(), 1);
+LL +     assert_eq!(R.method::<1u8>(), 1);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr b/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr
index 4fce1aede95..95d20de1b43 100644
--- a/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr
+++ b/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr
@@ -6,8 +6,9 @@ LL |     assert_eq!(R.method::<1u16>(), 1);
    |
 help: change the type of the numeric literal from `u16` to `u8`
    |
-LL |     assert_eq!(R.method::<1u8>(), 1);
-   |                            ~~
+LL -     assert_eq!(R.method::<1u16>(), 1);
+LL +     assert_eq!(R.method::<1u8>(), 1);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/consts/assoc-const-elided-lifetime.stderr b/tests/ui/consts/assoc-const-elided-lifetime.stderr
index 3e847298c35..0c3e455eb2d 100644
--- a/tests/ui/consts/assoc-const-elided-lifetime.stderr
+++ b/tests/ui/consts/assoc-const-elided-lifetime.stderr
@@ -18,8 +18,9 @@ LL | #![deny(elided_lifetimes_in_associated_constant)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: use the `'static` lifetime
    |
-LL |     const FOO: Foo<'static> = Foo { x: PhantomData::<&()> };
-   |                    ~~~~~~~
+LL -     const FOO: Foo<'_> = Foo { x: PhantomData::<&()> };
+LL +     const FOO: Foo<'static> = Foo { x: PhantomData::<&()> };
+   |
 
 error: `&` without an explicit lifetime name cannot be used here
   --> $DIR/assoc-const-elided-lifetime.rs:14:16
diff --git a/tests/ui/consts/const-blocks/fn-call-in-non-const.stderr b/tests/ui/consts/const-blocks/fn-call-in-non-const.stderr
index 272c2f045e1..a3d5054ced3 100644
--- a/tests/ui/consts/const-blocks/fn-call-in-non-const.stderr
+++ b/tests/ui/consts/const-blocks/fn-call-in-non-const.stderr
@@ -13,8 +13,9 @@ LL | struct Bar;
    |
 help: create an inline `const` block
    |
-LL |     let _: [Option<Bar>; 2] = [const { no_copy() }; 2];
-   |                                ~~~~~~~~~~~~~~~~~~~
+LL -     let _: [Option<Bar>; 2] = [no_copy(); 2];
+LL +     let _: [Option<Bar>; 2] = [const { no_copy() }; 2];
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/consts/const-pattern-irrefutable.stderr b/tests/ui/consts/const-pattern-irrefutable.stderr
index 646426c9426..a97e35e385f 100644
--- a/tests/ui/consts/const-pattern-irrefutable.stderr
+++ b/tests/ui/consts/const-pattern-irrefutable.stderr
@@ -12,8 +12,9 @@ LL |     let a = 4;
    = note: the matched value is of type `u8`
 help: introduce a variable instead
    |
-LL |     let a_var = 4;
-   |         ~~~~~
+LL -     let a = 4;
+LL +     let a_var = 4;
+   |
 
 error[E0005]: refutable pattern in local binding
   --> $DIR/const-pattern-irrefutable.rs:28:9
@@ -29,8 +30,9 @@ LL |     let c = 4;
    = note: the matched value is of type `u8`
 help: introduce a variable instead
    |
-LL |     let b_var = 4;
-   |         ~~~~~
+LL -     let c = 4;
+LL +     let b_var = 4;
+   |
 
 error[E0005]: refutable pattern in local binding
   --> $DIR/const-pattern-irrefutable.rs:32:9
@@ -46,8 +48,9 @@ LL |     let d = (4, 4);
    = note: the matched value is of type `(u8, u8)`
 help: introduce a variable instead
    |
-LL |     let d_var = (4, 4);
-   |         ~~~~~
+LL -     let d = (4, 4);
+LL +     let d_var = (4, 4);
+   |
 
 error[E0005]: refutable pattern in local binding
   --> $DIR/const-pattern-irrefutable.rs:36:9
@@ -68,8 +71,9 @@ LL | struct S {
    = note: the matched value is of type `S`
 help: introduce a variable instead
    |
-LL |     let e_var = S {
-   |         ~~~~~
+LL -     let e = S {
+LL +     let e_var = S {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/consts/const_let_assign2.stderr b/tests/ui/consts/const_let_assign2.stderr
index 9a1b84dbf09..be0ffefc80d 100644
--- a/tests/ui/consts/const_let_assign2.stderr
+++ b/tests/ui/consts/const_let_assign2.stderr
@@ -9,8 +9,9 @@ LL |     let ptr = unsafe { &mut BB };
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |     let ptr = unsafe { &raw mut BB };
-   |                        ~~~~~~~~
+LL -     let ptr = unsafe { &mut BB };
+LL +     let ptr = unsafe { &raw mut BB };
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/consts/ice-bad-input-type-for-cast-83056.stderr b/tests/ui/consts/ice-bad-input-type-for-cast-83056.stderr
index 115f1688520..4fc5972051c 100644
--- a/tests/ui/consts/ice-bad-input-type-for-cast-83056.stderr
+++ b/tests/ui/consts/ice-bad-input-type-for-cast-83056.stderr
@@ -8,8 +8,9 @@ LL | fn f() -> T {}
    |
 help: a struct with a similar name exists
    |
-LL | fn f() -> S {}
-   |           ~
+LL - fn f() -> T {}
+LL + fn f() -> S {}
+   |
 help: you might be missing a type parameter
    |
 LL | fn f<T>() -> T {}
diff --git a/tests/ui/consts/issue-104768.stderr b/tests/ui/consts/issue-104768.stderr
index 41a9bab0961..bd4a54de0ae 100644
--- a/tests/ui/consts/issue-104768.stderr
+++ b/tests/ui/consts/issue-104768.stderr
@@ -19,8 +19,9 @@ LL | const A: &_ = 0_u32;
    |
 help: replace this with a fully-specified type
    |
-LL | const A: u32 = 0_u32;
-   |          ~~~
+LL - const A: &_ = 0_u32;
+LL + const A: u32 = 0_u32;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/consts/issue-3521.stderr b/tests/ui/consts/issue-3521.stderr
index c0e4cdc5a94..bddab2ebc05 100644
--- a/tests/ui/consts/issue-3521.stderr
+++ b/tests/ui/consts/issue-3521.stderr
@@ -6,8 +6,9 @@ LL |         Bar = foo
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: isize = 100;
-   |     ~~~~~
+LL -     let foo: isize = 100;
+LL +     const foo: isize = 100;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/consts/issue-91560.stderr b/tests/ui/consts/issue-91560.stderr
index 37c8f50d494..9b06f3775d9 100644
--- a/tests/ui/consts/issue-91560.stderr
+++ b/tests/ui/consts/issue-91560.stderr
@@ -6,8 +6,9 @@ LL |     let arr = [0; length];
    |
 help: consider using `const` instead of `let`
    |
-LL |     const length: usize = 2;
-   |     ~~~~~
+LL -     let mut length: usize = 2;
+LL +     const length: usize = 2;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/issue-91560.rs:17:19
@@ -17,8 +18,9 @@ LL |     let arr = [0; length];
    |
 help: consider using `const` instead of `let`
    |
-LL |     const length: usize = 2;
-   |     ~~~~~
+LL -     let   length: usize = 2;
+LL +     const length: usize = 2;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/consts/non-const-value-in-const.stderr b/tests/ui/consts/non-const-value-in-const.stderr
index 654b573544c..201c310843b 100644
--- a/tests/ui/consts/non-const-value-in-const.stderr
+++ b/tests/ui/consts/non-const-value-in-const.stderr
@@ -6,8 +6,9 @@ LL |     const Y: i32 = x;
    |
 help: consider using `let` instead of `const`
    |
-LL |     let Y: i32 = x;
-   |     ~~~
+LL -     const Y: i32 = x;
+LL +     let Y: i32 = x;
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/non-const-value-in-const.rs:6:17
@@ -17,8 +18,9 @@ LL |     let _ = [0; x];
    |
 help: consider using `const` instead of `let`
    |
-LL |     const x: /* Type */ = 5;
-   |     ~~~~~  ++++++++++++
+LL -     let x = 5;
+LL +     const x: /* Type */ = 5;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/consts/refs_check_const_eq-issue-88384.stderr b/tests/ui/consts/refs_check_const_eq-issue-88384.stderr
index 62c5c527641..65e4dc22c28 100644
--- a/tests/ui/consts/refs_check_const_eq-issue-88384.stderr
+++ b/tests/ui/consts/refs_check_const_eq-issue-88384.stderr
@@ -15,8 +15,8 @@ LL | struct Foo<const T: CompileTimeSettings>;
    |
 help: add `#[derive(ConstParamTy)]` to the struct
    |
+LL - struct CompileTimeSettings {
 LL + #[derive(ConstParamTy)]
-LL | struct CompileTimeSettings {
    |
 
 error[E0741]: `CompileTimeSettings` must implement `ConstParamTy` to be used as the type of a const generic parameter
@@ -27,8 +27,8 @@ LL | impl<const T: CompileTimeSettings> Foo<T> {
    |
 help: add `#[derive(ConstParamTy)]` to the struct
    |
+LL - struct CompileTimeSettings {
 LL + #[derive(ConstParamTy)]
-LL | struct CompileTimeSettings {
    |
 
 error: aborting due to 2 previous errors; 1 warning emitted
diff --git a/tests/ui/contracts/associated-item.rs b/tests/ui/contracts/associated-item.rs
new file mode 100644
index 00000000000..4a2d05abbc5
--- /dev/null
+++ b/tests/ui/contracts/associated-item.rs
@@ -0,0 +1,18 @@
+// Ensure we don't ICE when lowering contracts on an associated item.
+
+//@ compile-flags: --crate-type=lib
+//@ check-pass
+
+#![feature(contracts)]
+//~^ WARN the feature `contracts` is incomplete and may not be safe to use
+
+extern crate core;
+
+use core::contracts::requires;
+
+struct Foo;
+
+impl Foo {
+    #[requires(align > 0 && (align & (align - 1)) == 0)]
+    pub fn foo(align: i32) {}
+}
diff --git a/tests/ui/contracts/associated-item.stderr b/tests/ui/contracts/associated-item.stderr
new file mode 100644
index 00000000000..20651026b87
--- /dev/null
+++ b/tests/ui/contracts/associated-item.stderr
@@ -0,0 +1,11 @@
+warning: the feature `contracts` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/associated-item.rs:6:12
+   |
+LL | #![feature(contracts)]
+   |            ^^^^^^^^^
+   |
+   = note: see issue #128044 <https://github.com/rust-lang/rust/issues/128044> for more information
+   = note: `#[warn(incomplete_features)]` on by default
+
+warning: 1 warning emitted
+
diff --git a/tests/ui/contracts/internal_machinery/internal-feature-gating.stderr b/tests/ui/contracts/internal_machinery/internal-feature-gating.stderr
index c0e1522f54c..7302694a787 100644
--- a/tests/ui/contracts/internal_machinery/internal-feature-gating.stderr
+++ b/tests/ui/contracts/internal_machinery/internal-feature-gating.stderr
@@ -1,18 +1,18 @@
 error[E0658]: contract internal machinery is for internal use only
-  --> $DIR/internal-feature-gating.rs:16:45
+  --> $DIR/internal-feature-gating.rs:16:28
    |
 LL |     fn identity_1() -> i32 contract_requires(|| true) { 10 }
-   |                                             ^^^^^^^^^
+   |                            ^^^^^^^^^^^^^^^^^
    |
    = note: see issue #128044 <https://github.com/rust-lang/rust/issues/128044> for more information
    = help: add `#![feature(contracts_internals)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
 error[E0658]: contract internal machinery is for internal use only
-  --> $DIR/internal-feature-gating.rs:18:44
+  --> $DIR/internal-feature-gating.rs:18:28
    |
 LL |     fn identity_2() -> i32 contract_ensures(|_| true) { 10 }
-   |                                            ^^^^^^^^^^
+   |                            ^^^^^^^^^^^^^^^^
    |
    = note: see issue #128044 <https://github.com/rust-lang/rust/issues/128044> for more information
    = help: add `#![feature(contracts_internals)]` to the crate attributes to enable
diff --git a/tests/ui/coroutine/issue-102645.stderr b/tests/ui/coroutine/issue-102645.stderr
index 1ef37d3f7d1..bec0518d8c6 100644
--- a/tests/ui/coroutine/issue-102645.stderr
+++ b/tests/ui/coroutine/issue-102645.stderr
@@ -8,8 +8,9 @@ note: method defined here
   --> $SRC_DIR/core/src/ops/coroutine.rs:LL:COL
 help: provide the argument
    |
-LL |     Pin::new(&mut b).resume(());
-   |                            ~~~~
+LL -     Pin::new(&mut b).resume();
+LL +     Pin::new(&mut b).resume(());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/coroutine/resume-arg-outlives.stderr b/tests/ui/coroutine/resume-arg-outlives.stderr
index 2a6337b4945..0150009c8fa 100644
--- a/tests/ui/coroutine/resume-arg-outlives.stderr
+++ b/tests/ui/coroutine/resume-arg-outlives.stderr
@@ -9,12 +9,14 @@ LL |     generator
    |
 help: consider changing `impl Coroutine<&'not_static str> + 'static`'s explicit `'static` bound to the lifetime of argument `s`
    |
-LL | fn demo<'not_static>(s: &'not_static str) -> Pin<Box<impl Coroutine<&'not_static str> + 'not_static>> {
-   |                                                                                         ~~~~~~~~~~~
+LL - fn demo<'not_static>(s: &'not_static str) -> Pin<Box<impl Coroutine<&'not_static str> + 'static>> {
+LL + fn demo<'not_static>(s: &'not_static str) -> Pin<Box<impl Coroutine<&'not_static str> + 'not_static>> {
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn demo<'not_static>(s: &'static str) -> Pin<Box<impl Coroutine<&'not_static str> + 'static>> {
-   |                         ~~~~~~~~~~~~
+LL - fn demo<'not_static>(s: &'not_static str) -> Pin<Box<impl Coroutine<&'not_static str> + 'static>> {
+LL + fn demo<'not_static>(s: &'static str) -> Pin<Box<impl Coroutine<&'not_static str> + 'static>> {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/coverage-attr/bad-attr-ice.feat.stderr b/tests/ui/coverage-attr/bad-attr-ice.feat.stderr
index 50e1c39d4f8..a8a70e363b7 100644
--- a/tests/ui/coverage-attr/bad-attr-ice.feat.stderr
+++ b/tests/ui/coverage-attr/bad-attr-ice.feat.stderr
@@ -6,9 +6,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/coverage-attr/bad-attr-ice.nofeat.stderr b/tests/ui/coverage-attr/bad-attr-ice.nofeat.stderr
index e8bdd99c9b9..6443fafef3e 100644
--- a/tests/ui/coverage-attr/bad-attr-ice.nofeat.stderr
+++ b/tests/ui/coverage-attr/bad-attr-ice.nofeat.stderr
@@ -6,9 +6,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error[E0658]: the `#[coverage]` attribute is an experimental feature
diff --git a/tests/ui/coverage-attr/bad-syntax.stderr b/tests/ui/coverage-attr/bad-syntax.stderr
index 5592e89070d..3123066e7bf 100644
--- a/tests/ui/coverage-attr/bad-syntax.stderr
+++ b/tests/ui/coverage-attr/bad-syntax.stderr
@@ -6,10 +6,12 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage]
+LL + #[coverage(off)]
+   |
+LL - #[coverage]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:20:1
@@ -19,10 +21,12 @@ LL | #[coverage = true]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage = true]
+LL + #[coverage(off)]
+   |
+LL - #[coverage = true]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:23:1
@@ -32,10 +36,12 @@ LL | #[coverage()]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage()]
+LL + #[coverage(off)]
+   |
+LL - #[coverage()]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:26:1
@@ -45,10 +51,12 @@ LL | #[coverage(off, off)]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(off, off)]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(off, off)]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:29:1
@@ -58,10 +66,12 @@ LL | #[coverage(off, on)]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(off, on)]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(off, on)]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:32:1
@@ -71,10 +81,12 @@ LL | #[coverage(bogus)]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(bogus)]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(bogus)]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:35:1
@@ -84,10 +96,12 @@ LL | #[coverage(bogus, off)]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(bogus, off)]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(bogus, off)]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/bad-syntax.rs:38:1
@@ -97,10 +111,12 @@ LL | #[coverage(off, bogus)]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(off, bogus)]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(off, bogus)]
+LL + #[coverage(on)]
+   |
 
 error: expected identifier, found `,`
   --> $DIR/bad-syntax.rs:44:12
diff --git a/tests/ui/coverage-attr/name-value.stderr b/tests/ui/coverage-attr/name-value.stderr
index bfd22ed5451..31a635b57e5 100644
--- a/tests/ui/coverage-attr/name-value.stderr
+++ b/tests/ui/coverage-attr/name-value.stderr
@@ -6,9 +6,11 @@ LL | #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage = "off"]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage = "off"]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -19,9 +21,11 @@ LL |     #![coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL |     #![coverage(off)]
+LL -     #![coverage = "off"]
+LL +     #![coverage(off)]
    |
-LL |     #![coverage(on)]
+LL -     #![coverage = "off"]
+LL +     #![coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -32,9 +36,11 @@ LL | #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage = "off"]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage = "off"]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -45,9 +51,11 @@ LL |     #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -58,9 +66,11 @@ LL | #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage = "off"]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage = "off"]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -71,9 +81,11 @@ LL |     #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -84,9 +96,11 @@ LL |     #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -97,9 +111,11 @@ LL | #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage = "off"]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage = "off"]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -110,9 +126,11 @@ LL |     #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -123,9 +141,11 @@ LL |     #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage = "off"]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -136,9 +156,11 @@ LL | #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage = "off"]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage = "off"]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -149,9 +171,11 @@ LL | #[coverage = "off"]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage = "off"]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage = "off"]
+LL + #[coverage(on)]
    |
 
 error[E0788]: coverage attribute not allowed here
diff --git a/tests/ui/coverage-attr/subword.stderr b/tests/ui/coverage-attr/subword.stderr
index a672ff4ac41..a5d1a492181 100644
--- a/tests/ui/coverage-attr/subword.stderr
+++ b/tests/ui/coverage-attr/subword.stderr
@@ -6,10 +6,12 @@ LL | #[coverage(yes(milord))]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(yes(milord))]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(yes(milord))]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/subword.rs:11:1
@@ -19,10 +21,12 @@ LL | #[coverage(no(milord))]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(no(milord))]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(no(milord))]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/subword.rs:14:1
@@ -32,10 +36,12 @@ LL | #[coverage(yes = "milord")]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(yes = "milord")]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(yes = "milord")]
+LL + #[coverage(on)]
+   |
 
 error: malformed `coverage` attribute input
   --> $DIR/subword.rs:17:1
@@ -45,10 +51,12 @@ LL | #[coverage(no = "milord")]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
-   | ~~~~~~~~~~~~~~~~
-LL | #[coverage(on)]
-   | ~~~~~~~~~~~~~~~
+LL - #[coverage(no = "milord")]
+LL + #[coverage(off)]
+   |
+LL - #[coverage(no = "milord")]
+LL + #[coverage(on)]
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/coverage-attr/word-only.stderr b/tests/ui/coverage-attr/word-only.stderr
index bad50b0c961..c034149d8ec 100644
--- a/tests/ui/coverage-attr/word-only.stderr
+++ b/tests/ui/coverage-attr/word-only.stderr
@@ -6,9 +6,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -19,9 +21,11 @@ LL |     #![coverage]
    |
 help: the following are the possible correct uses
    |
-LL |     #![coverage(off)]
+LL -     #![coverage]
+LL +     #![coverage(off)]
    |
-LL |     #![coverage(on)]
+LL -     #![coverage]
+LL +     #![coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -32,9 +36,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -45,9 +51,11 @@ LL |     #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -58,9 +66,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -71,9 +81,11 @@ LL |     #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -84,9 +96,11 @@ LL |     #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -97,9 +111,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -110,9 +126,11 @@ LL |     #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -123,9 +141,11 @@ LL |     #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL |     #[coverage(off)]
+LL -     #[coverage]
+LL +     #[coverage(off)]
    |
-LL |     #[coverage(on)]
+LL -     #[coverage]
+LL +     #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -136,9 +156,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error: malformed `coverage` attribute input
@@ -149,9 +171,11 @@ LL | #[coverage]
    |
 help: the following are the possible correct uses
    |
-LL | #[coverage(off)]
+LL - #[coverage]
+LL + #[coverage(off)]
    |
-LL | #[coverage(on)]
+LL - #[coverage]
+LL + #[coverage(on)]
    |
 
 error[E0788]: coverage attribute not allowed here
diff --git a/tests/ui/deprecation/atomic_initializers.stderr b/tests/ui/deprecation/atomic_initializers.stderr
index 30fcc9de618..3a2e6613818 100644
--- a/tests/ui/deprecation/atomic_initializers.stderr
+++ b/tests/ui/deprecation/atomic_initializers.stderr
@@ -7,8 +7,9 @@ LL | static FOO: AtomicIsize = ATOMIC_ISIZE_INIT;
    = note: `#[warn(deprecated)]` on by default
 help: replace the use of the deprecated constant
    |
-LL | static FOO: AtomicIsize = AtomicIsize::new(0);
-   |                           ~~~~~~~~~~~~~~~~~~~
+LL - static FOO: AtomicIsize = ATOMIC_ISIZE_INIT;
+LL + static FOO: AtomicIsize = AtomicIsize::new(0);
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/deprecation/invalid-literal.stderr b/tests/ui/deprecation/invalid-literal.stderr
index ca827beda05..cbe1fcca023 100644
--- a/tests/ui/deprecation/invalid-literal.stderr
+++ b/tests/ui/deprecation/invalid-literal.stderr
@@ -6,12 +6,15 @@ LL | #[deprecated = b"test"]
    |
 help: the following are the possible correct uses
    |
-LL | #[deprecated = "reason"]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~
-LL | #[deprecated(/*opt*/ since = "version", /*opt*/ note = "reason")]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | #[deprecated]
-   | ~~~~~~~~~~~~~
+LL - #[deprecated = b"test"]
+LL + #[deprecated = "reason"]
+   |
+LL - #[deprecated = b"test"]
+LL + #[deprecated(/*opt*/ since = "version", /*opt*/ note = "reason")]
+   |
+LL - #[deprecated = b"test"]
+LL + #[deprecated]
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr b/tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr
index d1f5ea3602a..a81143640a0 100644
--- a/tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr
+++ b/tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr
@@ -11,8 +11,9 @@ LL | #![deny(deprecated)]
    |         ^^^^^^^^^^
 help: replace the use of the deprecated method
    |
-LL |     let _foo = str::trim_start("   aoeu");
-   |                     ~~~~~~~~~~
+LL -     let _foo = str::trim_left("   aoeu");
+LL +     let _foo = str::trim_start("   aoeu");
+   |
 
 error: use of deprecated method `core::str::<impl str>::trim_left`: superseded by `trim_start`
   --> $DIR/issue-84637-deprecated-associated-function.rs:8:26
@@ -22,8 +23,9 @@ LL |     let _bar = "   aoeu".trim_left();
    |
 help: replace the use of the deprecated method
    |
-LL |     let _bar = "   aoeu".trim_start();
-   |                          ~~~~~~~~~~
+LL -     let _bar = "   aoeu".trim_left();
+LL +     let _bar = "   aoeu".trim_start();
+   |
 
 error: use of deprecated method `std::slice::<impl [T]>::connect`: renamed to join
   --> $DIR/issue-84637-deprecated-associated-function.rs:10:27
@@ -33,8 +35,9 @@ LL |     let _baz = ["a", "b"].connect(" ");
    |
 help: replace the use of the deprecated method
    |
-LL |     let _baz = ["a", "b"].join(" ");
-   |                           ~~~~
+LL -     let _baz = ["a", "b"].connect(" ");
+LL +     let _baz = ["a", "b"].join(" ");
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/deprecation/suggestion.stderr b/tests/ui/deprecation/suggestion.stderr
index 5584b6d2f8f..58e4219d37b 100644
--- a/tests/ui/deprecation/suggestion.stderr
+++ b/tests/ui/deprecation/suggestion.stderr
@@ -11,8 +11,9 @@ LL | #![deny(deprecated)]
    |         ^^^^^^^^^^
 help: replace the use of the deprecated function
    |
-LL |     bar::replacement();
-   |          ~~~~~~~~~~~
+LL -     bar::deprecated();
+LL +     bar::replacement();
+   |
 
 error: use of deprecated method `Foo::deprecated`: replaced by `replacement`
   --> $DIR/suggestion.rs:40:9
@@ -22,8 +23,9 @@ LL |     foo.deprecated();
    |
 help: replace the use of the deprecated method
    |
-LL |     foo.replacement();
-   |         ~~~~~~~~~~~
+LL -     foo.deprecated();
+LL +     foo.replacement();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/deref-patterns/issue-71676-1.stderr b/tests/ui/deref-patterns/issue-71676-1.stderr
index 164641ff775..348a2c12ec4 100644
--- a/tests/ui/deref-patterns/issue-71676-1.stderr
+++ b/tests/ui/deref-patterns/issue-71676-1.stderr
@@ -40,8 +40,9 @@ LL |     let _: *const u8 = &mut a;
            found mutable reference `&mut Emm`
 help: consider dereferencing
    |
-LL |     let _: *const u8 = &***a;
-   |                         ~~~
+LL -     let _: *const u8 = &mut a;
+LL +     let _: *const u8 = &***a;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-71676-1.rs:52:22
diff --git a/tests/ui/derived-errors/issue-30580.stderr b/tests/ui/derived-errors/issue-30580.stderr
index 05b55591729..e8659ea931d 100644
--- a/tests/ui/derived-errors/issue-30580.stderr
+++ b/tests/ui/derived-errors/issue-30580.stderr
@@ -6,8 +6,9 @@ LL |         b.c;
    |
 help: a field with a similar name exists
    |
-LL |         b.a;
-   |           ~
+LL -         b.c;
+LL +         b.a;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/deriving/auxiliary/malicious-macro.rs b/tests/ui/deriving/auxiliary/malicious-macro.rs
new file mode 100644
index 00000000000..6665b40a14f
--- /dev/null
+++ b/tests/ui/deriving/auxiliary/malicious-macro.rs
@@ -0,0 +1,31 @@
+#![feature(let_chains)]
+
+extern crate proc_macro;
+
+use proc_macro::{Delimiter, TokenStream, TokenTree};
+
+#[proc_macro_attribute]
+pub fn norepr(_: TokenStream, input: TokenStream) -> TokenStream {
+    let mut tokens = vec![];
+    let mut tts = input.into_iter().fuse().peekable();
+    loop {
+        let Some(token) = tts.next() else { break };
+        if let TokenTree::Punct(punct) = &token
+            && punct.as_char() == '#'
+        {
+            if let Some(TokenTree::Group(group)) = tts.peek()
+                && let Delimiter::Bracket = group.delimiter()
+                && let Some(TokenTree::Ident(ident)) = group.stream().into_iter().next()
+                && ident.to_string() == "repr"
+            {
+                let _ = tts.next();
+                // skip '#' and '[repr(..)]
+            } else {
+                tokens.push(token);
+            }
+        } else {
+            tokens.push(token);
+        }
+    }
+    tokens.into_iter().collect()
+}
diff --git a/tests/ui/deriving/built-in-proc-macro-scope.stdout b/tests/ui/deriving/built-in-proc-macro-scope.stdout
index db97c7145ea..fa4e50968f4 100644
--- a/tests/ui/deriving/built-in-proc-macro-scope.stdout
+++ b/tests/ui/deriving/built-in-proc-macro-scope.stdout
@@ -20,6 +20,8 @@ pub struct Ptr<'a, #[pointee] T: ?Sized> {
     data: &'a mut T,
 }
 #[automatically_derived]
+impl<'a, T: ?Sized> ::core::marker::CoercePointeeValidated for Ptr<'a, T> { }
+#[automatically_derived]
 impl<'a, T: ?Sized + ::core::marker::Unsize<__S>, __S: ?Sized>
     ::core::ops::DispatchFromDyn<Ptr<'a, __S>> for Ptr<'a, T> {
 }
diff --git a/tests/ui/deriving/deriving-coerce-pointee-expanded.stdout b/tests/ui/deriving/deriving-coerce-pointee-expanded.stdout
index d6eaca5cba1..a774efbbe35 100644
--- a/tests/ui/deriving/deriving-coerce-pointee-expanded.stdout
+++ b/tests/ui/deriving/deriving-coerce-pointee-expanded.stdout
@@ -16,6 +16,10 @@ struct MyPointer<'a, #[pointee] T: ?Sized> {
     ptr: &'a T,
 }
 #[automatically_derived]
+impl<'a, T: ?Sized> ::core::marker::CoercePointeeValidated for
+    MyPointer<'a, T> {
+}
+#[automatically_derived]
 impl<'a, T: ?Sized + ::core::marker::Unsize<__S>, __S: ?Sized>
     ::core::ops::DispatchFromDyn<MyPointer<'a, __S>> for MyPointer<'a, T> {
 }
@@ -31,6 +35,11 @@ pub struct MyPointer2<'a, Y, Z: MyTrait<T>, #[pointee] T: ?Sized + MyTrait<T>,
     x: core::marker::PhantomData<X>,
 }
 #[automatically_derived]
+impl<'a, Y, Z: MyTrait<T>, T: ?Sized + MyTrait<T>, X: MyTrait<T>>
+    ::core::marker::CoercePointeeValidated for MyPointer2<'a, Y, Z, T, X>
+    where Y: MyTrait<T> {
+}
+#[automatically_derived]
 impl<'a, Y, Z: MyTrait<T> + MyTrait<__S>, T: ?Sized + MyTrait<T> +
     ::core::marker::Unsize<__S>, __S: ?Sized + MyTrait<__S>, X: MyTrait<T> +
     MyTrait<__S>> ::core::ops::DispatchFromDyn<MyPointer2<'a, Y, Z, __S, X>>
@@ -48,6 +57,10 @@ struct MyPointerWithoutPointee<'a, T: ?Sized> {
     ptr: &'a T,
 }
 #[automatically_derived]
+impl<'a, T: ?Sized> ::core::marker::CoercePointeeValidated for
+    MyPointerWithoutPointee<'a, T> {
+}
+#[automatically_derived]
 impl<'a, T: ?Sized + ::core::marker::Unsize<__S>, __S: ?Sized>
     ::core::ops::DispatchFromDyn<MyPointerWithoutPointee<'a, __S>> for
     MyPointerWithoutPointee<'a, T> {
diff --git a/tests/ui/deriving/deriving-coerce-pointee-neg.rs b/tests/ui/deriving/deriving-coerce-pointee-neg.rs
index da25c854c54..6577500d8eb 100644
--- a/tests/ui/deriving/deriving-coerce-pointee-neg.rs
+++ b/tests/ui/deriving/deriving-coerce-pointee-neg.rs
@@ -1,6 +1,9 @@
+//@ proc-macro: malicious-macro.rs
 #![feature(derive_coerce_pointee, arbitrary_self_types)]
 
 extern crate core;
+extern crate malicious_macro;
+
 use std::marker::CoercePointee;
 
 #[derive(CoercePointee)]
@@ -41,8 +44,8 @@ struct TooManyPointees<'a, #[pointee] A: ?Sized, #[pointee] B: ?Sized>((&'a A, &
 //~^ ERROR: only one type parameter can be marked as `#[pointee]` when deriving `CoercePointee` traits
 
 #[derive(CoercePointee)]
-//~^ ERROR: `CoercePointee` can only be derived on `struct`s with `#[repr(transparent)]`
 struct NotTransparent<'a, #[pointee] T: ?Sized> {
+    //~^ ERROR: `derive(CoercePointee)` is only applicable to `struct` with `repr(transparent)` layout
     ptr: &'a T,
 }
 
@@ -131,4 +134,12 @@ struct GlobalCoreSized<'a, #[pointee] T: ?::core::marker::Sized> {
     ptr: &'a T,
 }
 
+#[derive(CoercePointee)]
+#[malicious_macro::norepr]
+#[repr(transparent)]
+struct TryToWipeRepr<'a, #[pointee] T: ?Sized> {
+    //~^ ERROR: `derive(CoercePointee)` is only applicable to `struct` with `repr(transparent)` layout [E0802]
+    ptr: &'a T,
+}
+
 fn main() {}
diff --git a/tests/ui/deriving/deriving-coerce-pointee-neg.stderr b/tests/ui/deriving/deriving-coerce-pointee-neg.stderr
index c1e8be49d37..999214bfa9f 100644
--- a/tests/ui/deriving/deriving-coerce-pointee-neg.stderr
+++ b/tests/ui/deriving/deriving-coerce-pointee-neg.stderr
@@ -1,89 +1,81 @@
-error: `CoercePointee` can only be derived on `struct`s with `#[repr(transparent)]`
-  --> $DIR/deriving-coerce-pointee-neg.rs:6:10
+error[E0802]: `CoercePointee` can only be derived on `struct`s with `#[repr(transparent)]`
+  --> $DIR/deriving-coerce-pointee-neg.rs:9:10
    |
 LL | #[derive(CoercePointee)]
    |          ^^^^^^^^^^^^^
    |
    = note: this error originates in the derive macro `CoercePointee` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: `CoercePointee` can only be derived on `struct`s with at least one field
-  --> $DIR/deriving-coerce-pointee-neg.rs:12:10
+error[E0802]: `CoercePointee` can only be derived on `struct`s with at least one field
+  --> $DIR/deriving-coerce-pointee-neg.rs:15:10
    |
 LL | #[derive(CoercePointee)]
    |          ^^^^^^^^^^^^^
    |
    = note: this error originates in the derive macro `CoercePointee` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: `CoercePointee` can only be derived on `struct`s with at least one field
-  --> $DIR/deriving-coerce-pointee-neg.rs:19:10
+error[E0802]: `CoercePointee` can only be derived on `struct`s with at least one field
+  --> $DIR/deriving-coerce-pointee-neg.rs:22:10
    |
 LL | #[derive(CoercePointee)]
    |          ^^^^^^^^^^^^^
    |
    = note: this error originates in the derive macro `CoercePointee` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: `CoercePointee` can only be derived on `struct`s that are generic over at least one type
-  --> $DIR/deriving-coerce-pointee-neg.rs:26:10
+error[E0802]: `CoercePointee` can only be derived on `struct`s that are generic over at least one type
+  --> $DIR/deriving-coerce-pointee-neg.rs:29:10
    |
 LL | #[derive(CoercePointee)]
    |          ^^^^^^^^^^^^^
    |
    = note: this error originates in the derive macro `CoercePointee` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: exactly one generic type parameter must be marked as `#[pointee]` to derive `CoercePointee` traits
-  --> $DIR/deriving-coerce-pointee-neg.rs:31:10
+error[E0802]: exactly one generic type parameter must be marked as `#[pointee]` to derive `CoercePointee` traits
+  --> $DIR/deriving-coerce-pointee-neg.rs:34:10
    |
 LL | #[derive(CoercePointee)]
    |          ^^^^^^^^^^^^^
    |
    = note: this error originates in the derive macro `CoercePointee` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: only one type parameter can be marked as `#[pointee]` when deriving `CoercePointee` traits
-  --> $DIR/deriving-coerce-pointee-neg.rs:40:39
+error[E0802]: only one type parameter can be marked as `#[pointee]` when deriving `CoercePointee` traits
+  --> $DIR/deriving-coerce-pointee-neg.rs:43:39
    |
 LL | struct TooManyPointees<'a, #[pointee] A: ?Sized, #[pointee] B: ?Sized>((&'a A, &'a B));
    |                                       ^                     - here another type parameter is marked as `#[pointee]`
 
-error: `CoercePointee` can only be derived on `struct`s with `#[repr(transparent)]`
-  --> $DIR/deriving-coerce-pointee-neg.rs:43:10
-   |
-LL | #[derive(CoercePointee)]
-   |          ^^^^^^^^^^^^^
-   |
-   = note: this error originates in the derive macro `CoercePointee` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: `derive(CoercePointee)` requires `T` to be marked `?Sized`
-  --> $DIR/deriving-coerce-pointee-neg.rs:51:36
+error[E0802]: `derive(CoercePointee)` requires `T` to be marked `?Sized`
+  --> $DIR/deriving-coerce-pointee-neg.rs:54:36
    |
 LL | struct NoMaybeSized<'a, #[pointee] T> {
    |                                    ^
 
 error: the `#[pointee]` attribute may only be used on generic parameters
-  --> $DIR/deriving-coerce-pointee-neg.rs:59:5
+  --> $DIR/deriving-coerce-pointee-neg.rs:62:5
    |
 LL |     #[pointee]
    |     ^^^^^^^^^^
 
 error: the `#[pointee]` attribute may only be used on generic parameters
-  --> $DIR/deriving-coerce-pointee-neg.rs:69:33
+  --> $DIR/deriving-coerce-pointee-neg.rs:72:33
    |
 LL |                     struct UhOh<#[pointee] T>(T);
    |                                 ^^^^^^^^^^
 
 error: the `#[pointee]` attribute may only be used on generic parameters
-  --> $DIR/deriving-coerce-pointee-neg.rs:83:21
+  --> $DIR/deriving-coerce-pointee-neg.rs:86:21
    |
 LL |         struct UhOh<#[pointee] T>(T);
    |                     ^^^^^^^^^^
 
 error: the `#[pointee]` attribute may only be used on generic parameters
-  --> $DIR/deriving-coerce-pointee-neg.rs:98:25
+  --> $DIR/deriving-coerce-pointee-neg.rs:101:25
    |
 LL |             struct UhOh<#[pointee] T>(T);
    |                         ^^^^^^^^^^
 
 error[E0392]: lifetime parameter `'a` is never used
-  --> $DIR/deriving-coerce-pointee-neg.rs:15:16
+  --> $DIR/deriving-coerce-pointee-neg.rs:18:16
    |
 LL | struct NoField<'a, #[pointee] T: ?Sized> {}
    |                ^^ unused lifetime parameter
@@ -91,7 +83,7 @@ LL | struct NoField<'a, #[pointee] T: ?Sized> {}
    = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`
 
 error[E0392]: type parameter `T` is never used
-  --> $DIR/deriving-coerce-pointee-neg.rs:15:31
+  --> $DIR/deriving-coerce-pointee-neg.rs:18:31
    |
 LL | struct NoField<'a, #[pointee] T: ?Sized> {}
    |                               ^ unused type parameter
@@ -99,7 +91,7 @@ LL | struct NoField<'a, #[pointee] T: ?Sized> {}
    = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
 
 error[E0392]: lifetime parameter `'a` is never used
-  --> $DIR/deriving-coerce-pointee-neg.rs:22:20
+  --> $DIR/deriving-coerce-pointee-neg.rs:25:20
    |
 LL | struct NoFieldUnit<'a, #[pointee] T: ?Sized>();
    |                    ^^ unused lifetime parameter
@@ -107,13 +99,26 @@ LL | struct NoFieldUnit<'a, #[pointee] T: ?Sized>();
    = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`
 
 error[E0392]: type parameter `T` is never used
-  --> $DIR/deriving-coerce-pointee-neg.rs:22:35
+  --> $DIR/deriving-coerce-pointee-neg.rs:25:35
    |
 LL | struct NoFieldUnit<'a, #[pointee] T: ?Sized>();
    |                                   ^ unused type parameter
    |
    = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
 
-error: aborting due to 16 previous errors
+error[E0802]: `derive(CoercePointee)` is only applicable to `struct` with `repr(transparent)` layout
+  --> $DIR/deriving-coerce-pointee-neg.rs:47:1
+   |
+LL | struct NotTransparent<'a, #[pointee] T: ?Sized> {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0802]: `derive(CoercePointee)` is only applicable to `struct` with `repr(transparent)` layout
+  --> $DIR/deriving-coerce-pointee-neg.rs:140:1
+   |
+LL | struct TryToWipeRepr<'a, #[pointee] T: ?Sized> {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 17 previous errors
 
-For more information about this error, try `rustc --explain E0392`.
+Some errors have detailed explanations: E0392, E0802.
+For more information about an error, try `rustc --explain E0392`.
diff --git a/tests/ui/destructuring-assignment/struct_destructure_fail.stderr b/tests/ui/destructuring-assignment/struct_destructure_fail.stderr
index 58f8e97dea0..7efc0b20e54 100644
--- a/tests/ui/destructuring-assignment/struct_destructure_fail.stderr
+++ b/tests/ui/destructuring-assignment/struct_destructure_fail.stderr
@@ -26,16 +26,19 @@ LL |     Struct { a, _ } = Struct { a: 1, b: 2 };
    |
 help: include the missing field in the pattern
    |
-LL |     Struct { a, b } = Struct { a: 1, b: 2 };
-   |               ~~~~~
+LL -     Struct { a, _ } = Struct { a: 1, b: 2 };
+LL +     Struct { a, b } = Struct { a: 1, b: 2 };
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     Struct { a, b: _ } = Struct { a: 1, b: 2 };
-   |               ~~~~~~~~
+LL -     Struct { a, _ } = Struct { a: 1, b: 2 };
+LL +     Struct { a, b: _ } = Struct { a: 1, b: 2 };
+   |
 help: or always ignore missing fields here
    |
-LL |     Struct { a, .. } = Struct { a: 1, b: 2 };
-   |               ~~~~~~
+LL -     Struct { a, _ } = Struct { a: 1, b: 2 };
+LL +     Struct { a, .. } = Struct { a: 1, b: 2 };
+   |
 
 error[E0797]: base expression required after `..`
   --> $DIR/struct_destructure_fail.rs:15:19
diff --git a/tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr b/tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr
index 5cc7acba3f3..515d4cc7621 100644
--- a/tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr
+++ b/tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr
@@ -38,8 +38,9 @@ LL |     TupleStruct(_, _) = TupleStruct(1, 2);
    |                  +++
 help: use `..` to ignore all fields
    |
-LL |     TupleStruct(..) = TupleStruct(1, 2);
-   |                 ~~
+LL -     TupleStruct(_) = TupleStruct(1, 2);
+LL +     TupleStruct(..) = TupleStruct(1, 2);
+   |
 
 error[E0023]: this pattern has 3 fields, but the corresponding tuple variant has 2 fields
   --> $DIR/tuple_struct_destructure_fail.rs:32:25
@@ -65,8 +66,9 @@ LL |     Enum::SingleVariant(_, _) = Enum::SingleVariant(1, 2);
    |                          +++
 help: use `..` to ignore all fields
    |
-LL |     Enum::SingleVariant(..) = Enum::SingleVariant(1, 2);
-   |                         ~~
+LL -     Enum::SingleVariant(_) = Enum::SingleVariant(1, 2);
+LL +     Enum::SingleVariant(..) = Enum::SingleVariant(1, 2);
+   |
 
 error[E0070]: invalid left-hand side of assignment
   --> $DIR/tuple_struct_destructure_fail.rs:38:12
diff --git a/tests/ui/diagnostic_namespace/suggest_typos.stderr b/tests/ui/diagnostic_namespace/suggest_typos.stderr
index ff4ee9717d4..f41e2f65556 100644
--- a/tests/ui/diagnostic_namespace/suggest_typos.stderr
+++ b/tests/ui/diagnostic_namespace/suggest_typos.stderr
@@ -11,8 +11,9 @@ LL | #![deny(unknown_or_malformed_diagnostic_attributes)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: an attribute with a similar name exists
    |
-LL | #[diagnostic::on_unimplemented]
-   |               ~~~~~~~~~~~~~~~~
+LL - #[diagnostic::onunimplemented]
+LL + #[diagnostic::on_unimplemented]
+   |
 
 error: unknown diagnostic attribute
   --> $DIR/suggest_typos.rs:9:15
@@ -22,8 +23,9 @@ LL | #[diagnostic::un_onimplemented]
    |
 help: an attribute with a similar name exists
    |
-LL | #[diagnostic::on_unimplemented]
-   |               ~~~~~~~~~~~~~~~~
+LL - #[diagnostic::un_onimplemented]
+LL + #[diagnostic::on_unimplemented]
+   |
 
 error: unknown diagnostic attribute
   --> $DIR/suggest_typos.rs:14:15
@@ -33,8 +35,9 @@ LL | #[diagnostic::on_implemented]
    |
 help: an attribute with a similar name exists
    |
-LL | #[diagnostic::on_unimplemented]
-   |               ~~~~~~~~~~~~~~~~
+LL - #[diagnostic::on_implemented]
+LL + #[diagnostic::on_unimplemented]
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/did_you_mean/bad-assoc-ty.stderr b/tests/ui/did_you_mean/bad-assoc-ty.stderr
index 5fc2f7c1fe6..7e34f4d35b4 100644
--- a/tests/ui/did_you_mean/bad-assoc-ty.stderr
+++ b/tests/ui/did_you_mean/bad-assoc-ty.stderr
@@ -109,8 +109,9 @@ LL | type A = [u8; 4]::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `[u8; 4]`, you could use the fully-qualified path
    |
-LL | type A = <[u8; 4] as Example>::AssocTy;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type A = [u8; 4]::AssocTy;
+LL + type A = <[u8; 4] as Example>::AssocTy;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/bad-assoc-ty.rs:5:10
@@ -120,8 +121,9 @@ LL | type B = [u8]::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `[u8]`, you could use the fully-qualified path
    |
-LL | type B = <[u8] as Example>::AssocTy;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type B = [u8]::AssocTy;
+LL + type B = <[u8] as Example>::AssocTy;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/bad-assoc-ty.rs:9:10
@@ -131,8 +133,9 @@ LL | type C = (u8)::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `u8`, you could use the fully-qualified path
    |
-LL | type C = <u8 as Example>::AssocTy;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type C = (u8)::AssocTy;
+LL + type C = <u8 as Example>::AssocTy;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/bad-assoc-ty.rs:13:10
@@ -142,8 +145,9 @@ LL | type D = (u8, u8)::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `(u8, u8)`, you could use the fully-qualified path
    |
-LL | type D = <(u8, u8) as Example>::AssocTy;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type D = (u8, u8)::AssocTy;
+LL + type D = <(u8, u8) as Example>::AssocTy;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for type aliases
   --> $DIR/bad-assoc-ty.rs:17:10
@@ -159,8 +163,9 @@ LL | type F = &'static (u8)::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `u8`, you could use the fully-qualified path
    |
-LL | type F = &'static <u8 as Example>::AssocTy;
-   |                   ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type F = &'static (u8)::AssocTy;
+LL + type F = &'static <u8 as Example>::AssocTy;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/bad-assoc-ty.rs:27:10
@@ -170,8 +175,9 @@ LL | type G = dyn 'static + (Send)::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `(dyn Send + 'static)`, you could use the fully-qualified path
    |
-LL | type G = <(dyn Send + 'static) as Example>::AssocTy;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type G = dyn 'static + (Send)::AssocTy;
+LL + type G = <(dyn Send + 'static) as Example>::AssocTy;
+   |
 
 warning: trait objects without an explicit `dyn` are deprecated
   --> $DIR/bad-assoc-ty.rs:33:10
@@ -195,10 +201,12 @@ LL | type H = Fn(u8) -> (u8)::Output;
    |
 help: use fully-qualified syntax
    |
-LL | type H = <(dyn Fn(u8) -> u8 + 'static) as BitOr>::Output;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | type H = <(dyn Fn(u8) -> u8 + 'static) as IntoFuture>::Output;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type H = Fn(u8) -> (u8)::Output;
+LL + type H = <(dyn Fn(u8) -> u8 + 'static) as BitOr>::Output;
+   |
+LL - type H = Fn(u8) -> (u8)::Output;
+LL + type H = <(dyn Fn(u8) -> u8 + 'static) as IntoFuture>::Output;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/bad-assoc-ty.rs:39:19
@@ -212,8 +220,9 @@ LL | type J = ty!(u8);
    = note: this error originates in the macro `ty` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `u8`, you could use the fully-qualified path
    |
-LL |     ($ty: ty) => (<u8 as Example>::AssocTy);
-   |                   ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     ($ty: ty) => ($ty::AssocTy);
+LL +     ($ty: ty) => (<u8 as Example>::AssocTy);
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/bad-assoc-ty.rs:46:10
@@ -223,8 +232,9 @@ LL | type I = ty!()::AssocTy;
    |
 help: if there were a trait named `Example` with associated type `AssocTy` implemented for `u8`, you could use the fully-qualified path
    |
-LL | type I = <u8 as Example>::AssocTy;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type I = ty!()::AssocTy;
+LL + type I = <u8 as Example>::AssocTy;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/bad-assoc-ty.rs:51:13
@@ -242,8 +252,9 @@ LL | fn bar<F>(_: F) where F: Fn() -> _ {}
    |
 help: use type parameters instead
    |
-LL | fn bar<F, T>(_: F) where F: Fn() -> T {}
-   |         +++                         ~
+LL - fn bar<F>(_: F) where F: Fn() -> _ {}
+LL + fn bar<F, T>(_: F) where F: Fn() -> T {}
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/bad-assoc-ty.rs:57:19
@@ -253,8 +264,9 @@ LL | fn baz<F: Fn() -> _>(_: F) {}
    |
 help: use type parameters instead
    |
-LL | fn baz<F: Fn() -> T, T>(_: F) {}
-   |                   ~+++
+LL - fn baz<F: Fn() -> _>(_: F) {}
+LL + fn baz<F: Fn() -> T, T>(_: F) {}
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
   --> $DIR/bad-assoc-ty.rs:60:33
@@ -264,8 +276,9 @@ LL | struct L<F>(F) where F: Fn() -> _;
    |
 help: use type parameters instead
    |
-LL | struct L<F, T>(F) where F: Fn() -> T;
-   |           +++                      ~
+LL - struct L<F>(F) where F: Fn() -> _;
+LL + struct L<F, T>(F) where F: Fn() -> T;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/bad-assoc-ty.rs:82:38
@@ -275,8 +288,9 @@ LL |     fn foo<F>(_: F) where F: Fn() -> _ {}
    |
 help: use type parameters instead
    |
-LL |     fn foo<F, T>(_: F) where F: Fn() -> T {}
-   |             +++                         ~
+LL -     fn foo<F>(_: F) where F: Fn() -> _ {}
+LL +     fn foo<F, T>(_: F) where F: Fn() -> T {}
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
   --> $DIR/bad-assoc-ty.rs:62:30
@@ -286,8 +300,9 @@ LL | struct M<F> where F: Fn() -> _ {
    |
 help: use type parameters instead
    |
-LL | struct M<F, T> where F: Fn() -> T {
-   |           +++                   ~
+LL - struct M<F> where F: Fn() -> _ {
+LL + struct M<F, T> where F: Fn() -> T {
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for enums
   --> $DIR/bad-assoc-ty.rs:66:28
@@ -297,8 +312,9 @@ LL | enum N<F> where F: Fn() -> _ {
    |
 help: use type parameters instead
    |
-LL | enum N<F, T> where F: Fn() -> T {
-   |         +++                   ~
+LL - enum N<F> where F: Fn() -> _ {
+LL + enum N<F, T> where F: Fn() -> T {
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for unions
   --> $DIR/bad-assoc-ty.rs:71:29
@@ -308,8 +324,9 @@ LL | union O<F> where F: Fn() -> _ {
    |
 help: use type parameters instead
    |
-LL | union O<F, T> where F: Fn() -> T {
-   |          +++                   ~
+LL - union O<F> where F: Fn() -> _ {
+LL + union O<F, T> where F: Fn() -> T {
+   |
 
 error[E0740]: field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be used in a union
   --> $DIR/bad-assoc-ty.rs:73:5
@@ -331,8 +348,9 @@ LL | trait P<F> where F: Fn() -> _ {
    |
 help: use type parameters instead
    |
-LL | trait P<F, T> where F: Fn() -> T {
-   |          +++                   ~
+LL - trait P<F> where F: Fn() -> _ {
+LL + trait P<F, T> where F: Fn() -> T {
+   |
 
 error: aborting due to 29 previous errors; 1 warning emitted
 
diff --git a/tests/ui/did_you_mean/brackets-to-braces-single-element.stderr b/tests/ui/did_you_mean/brackets-to-braces-single-element.stderr
index a7ec192592e..d4aeb1eee96 100644
--- a/tests/ui/did_you_mean/brackets-to-braces-single-element.stderr
+++ b/tests/ui/did_you_mean/brackets-to-braces-single-element.stderr
@@ -6,8 +6,9 @@ LL | const A: [&str; 1] = { "hello" };
    |
 help: to create an array, use square brackets instead of curly braces
    |
-LL | const A: [&str; 1] = [ "hello" ];
-   |                      ~         ~
+LL - const A: [&str; 1] = { "hello" };
+LL + const A: [&str; 1] = [ "hello" ];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/brackets-to-braces-single-element.rs:4:19
@@ -19,8 +20,9 @@ LL | const B: &[u32] = &{ 1 };
               found reference `&{integer}`
 help: to create an array, use square brackets instead of curly braces
    |
-LL | const B: &[u32] = &[ 1 ];
-   |                    ~   ~
+LL - const B: &[u32] = &{ 1 };
+LL + const B: &[u32] = &[ 1 ];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/brackets-to-braces-single-element.rs:7:27
@@ -30,8 +32,9 @@ LL | const C: &&[u32; 1] = &&{ 1 };
    |
 help: to create an array, use square brackets instead of curly braces
    |
-LL | const C: &&[u32; 1] = &&[ 1 ];
-   |                         ~   ~
+LL - const C: &&[u32; 1] = &&{ 1 };
+LL + const C: &&[u32; 1] = &&[ 1 ];
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/did_you_mean/compatible-variants-in-pat.stderr b/tests/ui/did_you_mean/compatible-variants-in-pat.stderr
index 5e48871bb01..09cf094e6bd 100644
--- a/tests/ui/did_you_mean/compatible-variants-in-pat.stderr
+++ b/tests/ui/did_you_mean/compatible-variants-in-pat.stderr
@@ -33,8 +33,9 @@ LL |         Some(S) => {
    |         +++++ +
 help: introduce a new binding instead
    |
-LL |         other_s => {
-   |         ~~~~~~~
+LL -         S => {
+LL +         other_s => {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/compatible-variants-in-pat.rs:32:9
@@ -60,8 +61,9 @@ LL |         Err(S) => {
    |         ++++ +
 help: introduce a new binding instead
    |
-LL |         other_s => {
-   |         ~~~~~~~
+LL -         S => {
+LL +         other_s => {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/did_you_mean/dont-suggest-hygienic-fields.stderr b/tests/ui/did_you_mean/dont-suggest-hygienic-fields.stderr
index 473c9a339fc..72b65006a3f 100644
--- a/tests/ui/did_you_mean/dont-suggest-hygienic-fields.stderr
+++ b/tests/ui/did_you_mean/dont-suggest-hygienic-fields.stderr
@@ -10,8 +10,9 @@ LL |     const CRATE: Crate = Crate { fiel: () };
    = note: this error originates in the macro `environment` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: a field with a similar name exists
    |
-LL |     const CRATE: Crate = Crate { field: () };
-   |                                  ~~~~~
+LL -     const CRATE: Crate = Crate { fiel: () };
+LL +     const CRATE: Crate = Crate { field: () };
+   |
 
 error[E0609]: no field `field` on type `Compound`
   --> $DIR/dont-suggest-hygienic-fields.rs:24:16
diff --git a/tests/ui/did_you_mean/issue-36798.stderr b/tests/ui/did_you_mean/issue-36798.stderr
index 70aa3c32bfb..233cb1e3248 100644
--- a/tests/ui/did_you_mean/issue-36798.stderr
+++ b/tests/ui/did_you_mean/issue-36798.stderr
@@ -6,8 +6,9 @@ LL |     f.baz;
    |
 help: a field with a similar name exists
    |
-LL |     f.bar;
-   |       ~~~
+LL -     f.baz;
+LL +     f.bar;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr b/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr
index 952ac76a003..9893aad7486 100644
--- a/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr
+++ b/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr
@@ -6,8 +6,9 @@ LL |     let _x = ~1;
    |
 help: use `!` to perform bitwise not
    |
-LL |     let _x = !1;
-   |              ~
+LL -     let _x = ~1;
+LL +     let _x = !1;
+   |
 
 error: unexpected `1` after identifier
   --> $DIR/issue-41679-tilde-bitwise-negation-attempt.rs:5:18
@@ -17,8 +18,9 @@ LL |     let _y = not 1;
    |
 help: use `!` to perform bitwise not
    |
-LL |     let _y = !1;
-   |              ~
+LL -     let _y = not 1;
+LL +     let _y = !1;
+   |
 
 error: unexpected keyword `false` after identifier
   --> $DIR/issue-41679-tilde-bitwise-negation-attempt.rs:6:18
@@ -28,8 +30,9 @@ LL |     let _z = not false;
    |
 help: use `!` to perform logical negation
    |
-LL |     let _z = !false;
-   |              ~
+LL -     let _z = not false;
+LL +     let _z = !false;
+   |
 
 error: unexpected keyword `true` after identifier
   --> $DIR/issue-41679-tilde-bitwise-negation-attempt.rs:7:18
@@ -39,8 +42,9 @@ LL |     let _a = not true;
    |
 help: use `!` to perform logical negation
    |
-LL |     let _a = !true;
-   |              ~
+LL -     let _a = not true;
+LL +     let _a = !true;
+   |
 
 error: unexpected `v` after identifier
   --> $DIR/issue-41679-tilde-bitwise-negation-attempt.rs:9:18
@@ -50,8 +54,9 @@ LL |     let _v = not v;
    |
 help: use `!` to perform logical negation or bitwise not
    |
-LL |     let _v = !v;
-   |              ~
+LL -     let _v = not v;
+LL +     let _v = !v;
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/did_you_mean/issue-42599_available_fields_note.stderr b/tests/ui/did_you_mean/issue-42599_available_fields_note.stderr
index d60db01a465..8fe46eb7ee1 100644
--- a/tests/ui/did_you_mean/issue-42599_available_fields_note.stderr
+++ b/tests/ui/did_you_mean/issue-42599_available_fields_note.stderr
@@ -6,8 +6,9 @@ LL |             Self { secret_integer: 2, inocently_mispellable: () }
    |
 help: a field with a similar name exists
    |
-LL |             Self { secret_integer: 2, innocently_misspellable: () }
-   |                                       ~~~~~~~~~~~~~~~~~~~~~~~
+LL -             Self { secret_integer: 2, inocently_mispellable: () }
+LL +             Self { secret_integer: 2, innocently_misspellable: () }
+   |
 
 error[E0560]: struct `Demo` has no field named `egregiously_nonexistent_field`
   --> $DIR/issue-42599_available_fields_note.rs:21:39
@@ -25,8 +26,9 @@ LL |     let innocent_field_misaccess = demo.inocently_mispellable;
    |
 help: a field with a similar name exists
    |
-LL |     let innocent_field_misaccess = demo.innocently_misspellable;
-   |                                         ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let innocent_field_misaccess = demo.inocently_mispellable;
+LL +     let innocent_field_misaccess = demo.innocently_misspellable;
+   |
 
 error[E0609]: no field `egregiously_nonexistent_field` on type `Demo`
   --> $DIR/issue-42599_available_fields_note.rs:35:42
diff --git a/tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr b/tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr
index 92cbc03e0dd..633f331a13a 100644
--- a/tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr
+++ b/tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr
@@ -6,8 +6,9 @@ LL |             PersonalityInventory { expressivity: exp, ... } => exp
    |
 help: to omit remaining fields, use `..`
    |
-LL |             PersonalityInventory { expressivity: exp, .. } => exp
-   |                                                       ~~
+LL -             PersonalityInventory { expressivity: exp, ... } => exp
+LL +             PersonalityInventory { expressivity: exp, .. } => exp
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr b/tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr
index 6dea6a4fac8..3a25181d29c 100644
--- a/tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr
+++ b/tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr
@@ -6,8 +6,9 @@ LL |     if not for_you {
    |
 help: use `!` to perform logical negation or bitwise not
    |
-LL |     if !for_you {
-   |        ~
+LL -     if not for_you {
+LL +     if !for_you {
+   |
 
 error: unexpected `the_worst` after identifier
   --> $DIR/issue-46836-identifier-not-instead-of-negation.rs:11:15
@@ -17,8 +18,9 @@ LL |     while not the_worst {
    |
 help: use `!` to perform logical negation or bitwise not
    |
-LL |     while !the_worst {
-   |           ~
+LL -     while not the_worst {
+LL +     while !the_worst {
+   |
 
 error: unexpected `println` after identifier
   --> $DIR/issue-46836-identifier-not-instead-of-negation.rs:20:9
@@ -28,8 +30,9 @@ LL |         println!("Then when?");
    |
 help: use `!` to perform logical negation or bitwise not
    |
-LL |     if !// lack of braces is [sic]
-   |        ~
+LL -     if not  // lack of braces is [sic]
+LL +     if !// lack of braces is [sic]
+   |
 
 error: expected `{`, found `;`
   --> $DIR/issue-46836-identifier-not-instead-of-negation.rs:20:31
@@ -53,8 +56,9 @@ LL |     let resource = not 2;
    |
 help: use `!` to perform bitwise not
    |
-LL |     let resource = !2;
-   |                    ~
+LL -     let resource = not 2;
+LL +     let resource = !2;
+   |
 
 error: unexpected `be_smothered_out_before` after identifier
   --> $DIR/issue-46836-identifier-not-instead-of-negation.rs:32:27
@@ -64,8 +68,9 @@ LL |     let young_souls = not be_smothered_out_before;
    |
 help: use `!` to perform logical negation or bitwise not
    |
-LL |     let young_souls = !be_smothered_out_before;
-   |                       ~
+LL -     let young_souls = not be_smothered_out_before;
+LL +     let young_souls = !be_smothered_out_before;
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr b/tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr
index 6d92fa5e14e..d4812d4831b 100644
--- a/tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr
+++ b/tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr
@@ -34,8 +34,9 @@ LL |         (Nucleotide::Adenine, Nucleotide::Cytosine, _) => true
    |         +                                            +
 help: ...or a vertical bar to match on multiple alternatives
    |
-LL |         Nucleotide::Adenine | Nucleotide::Cytosine | _ => true
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         Nucleotide::Adenine, Nucleotide::Cytosine, _ => true
+LL +         Nucleotide::Adenine | Nucleotide::Cytosine | _ => true
+   |
 
 error: unexpected `,` in pattern
   --> $DIR/issue-48492-tuple-destructure-missing-parens.rs:67:10
diff --git a/tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr b/tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr
index 4b3d429c750..664bf69b9eb 100644
--- a/tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr
+++ b/tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr
@@ -12,8 +12,9 @@ LL | const UNIVERSAL_GRAVITATIONAL_CONSTANT: f64 = 6.674e−11; // m³⋅kg⁻¹
    |
 help: Unicode character '−' (Minus Sign) looks like '-' (Minus/Hyphen), but it is not
    |
-LL | const UNIVERSAL_GRAVITATIONAL_CONSTANT: f64 = 6.674e-11; // m³⋅kg⁻¹⋅s⁻²
-   |                                                     ~
+LL - const UNIVERSAL_GRAVITATIONAL_CONSTANT: f64 = 6.674e−11; // m³⋅kg⁻¹⋅s⁻²
+LL + const UNIVERSAL_GRAVITATIONAL_CONSTANT: f64 = 6.674e-11; // m³⋅kg⁻¹⋅s⁻²
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr b/tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr
index c52102e2631..5dad6924dfd 100644
--- a/tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr
+++ b/tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr
@@ -7,8 +7,9 @@ LL |     let _ = a and b;
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     let _ = a && b;
-   |               ~~
+LL -     let _ = a and b;
+LL +     let _ = a && b;
+   |
 
 error: `and` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:9:10
@@ -19,8 +20,9 @@ LL |     if a and b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     if a && b {
-   |          ~~
+LL -     if a and b {
+LL +     if a && b {
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:20:15
@@ -31,8 +33,9 @@ LL |     let _ = a or b;
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     let _ = a || b;
-   |               ~~
+LL -     let _ = a or b;
+LL +     let _ = a || b;
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:22:10
@@ -43,8 +46,9 @@ LL |     if a or b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     if a || b {
-   |          ~~
+LL -     if a or b {
+LL +     if a || b {
+   |
 
 error: `and` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:30:11
@@ -55,8 +59,9 @@ LL |     if (a and b) {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     if (a && b) {
-   |           ~~
+LL -     if (a and b) {
+LL +     if (a && b) {
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:38:11
@@ -67,8 +72,9 @@ LL |     if (a or b) {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     if (a || b) {
-   |           ~~
+LL -     if (a or b) {
+LL +     if (a || b) {
+   |
 
 error: `and` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:46:13
@@ -79,8 +85,9 @@ LL |     while a and b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     while a && b {
-   |             ~~
+LL -     while a and b {
+LL +     while a && b {
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:54:13
@@ -91,8 +98,9 @@ LL |     while a or b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     while a || b {
-   |             ~~
+LL -     while a or b {
+LL +     while a || b {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-54109-and_instead_of_ampersands.rs:13:33
diff --git a/tests/ui/did_you_mean/issue-54109-without-witness.stderr b/tests/ui/did_you_mean/issue-54109-without-witness.stderr
index ee6d9901fcf..1ad88f0084c 100644
--- a/tests/ui/did_you_mean/issue-54109-without-witness.stderr
+++ b/tests/ui/did_you_mean/issue-54109-without-witness.stderr
@@ -7,8 +7,9 @@ LL |     let _ = a and b;
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     let _ = a && b;
-   |               ~~
+LL -     let _ = a and b;
+LL +     let _ = a && b;
+   |
 
 error: `and` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:15:10
@@ -19,8 +20,9 @@ LL |     if a and b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     if a && b {
-   |          ~~
+LL -     if a and b {
+LL +     if a && b {
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:24:15
@@ -31,8 +33,9 @@ LL |     let _ = a or b;
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     let _ = a || b;
-   |               ~~
+LL -     let _ = a or b;
+LL +     let _ = a || b;
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:26:10
@@ -43,8 +46,9 @@ LL |     if a or b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     if a || b {
-   |          ~~
+LL -     if a or b {
+LL +     if a || b {
+   |
 
 error: `and` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:34:11
@@ -55,8 +59,9 @@ LL |     if (a and b) {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     if (a && b) {
-   |           ~~
+LL -     if (a and b) {
+LL +     if (a && b) {
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:42:11
@@ -67,8 +72,9 @@ LL |     if (a or b) {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     if (a || b) {
-   |           ~~
+LL -     if (a or b) {
+LL +     if (a || b) {
+   |
 
 error: `and` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:50:13
@@ -79,8 +85,9 @@ LL |     while a and b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `&&` to perform logical conjunction
    |
-LL |     while a && b {
-   |             ~~
+LL -     while a and b {
+LL +     while a && b {
+   |
 
 error: `or` is not a logical operator
   --> $DIR/issue-54109-without-witness.rs:58:13
@@ -91,8 +98,9 @@ LL |     while a or b {
    = note: unlike in e.g., Python and PHP, `&&` and `||` are used for logical operators
 help: use `||` to perform logical disjunction
    |
-LL |     while a || b {
-   |             ~~
+LL -     while a or b {
+LL +     while a || b {
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr b/tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr
index b1a15b8594a..927f9e842e6 100644
--- a/tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr
+++ b/tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr
@@ -6,14 +6,18 @@ LL | fn setup() -> Set { Set }
    |
 help: there is an enum variant `AffixHeart::Set` and 7 others; try using the variant's enum
    |
-LL | fn setup() -> AffixHeart { Set }
-   |               ~~~~~~~~~~
-LL | fn setup() -> CauseToBe { Set }
-   |               ~~~~~~~~~
-LL | fn setup() -> Determine { Set }
-   |               ~~~~~~~~~
-LL | fn setup() -> PutDown { Set }
-   |               ~~~~~~~
+LL - fn setup() -> Set { Set }
+LL + fn setup() -> AffixHeart { Set }
+   |
+LL - fn setup() -> Set { Set }
+LL + fn setup() -> CauseToBe { Set }
+   |
+LL - fn setup() -> Set { Set }
+LL + fn setup() -> Determine { Set }
+   |
+LL - fn setup() -> Set { Set }
+LL + fn setup() -> PutDown { Set }
+   |
      and 3 other candidates
 
 error[E0425]: cannot find value `Set` in this scope
diff --git a/tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr b/tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr
index d5ad1a72b82..58232e2307d 100644
--- a/tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr
+++ b/tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr
@@ -24,8 +24,9 @@ LL | const BAR: [&str; 3] = {"one", "two", "three"};
    |
 help: to make an array, use square brackets instead of curly braces
    |
-LL | const BAR: [&str; 3] = ["one", "two", "three"];
-   |                        ~                     ~
+LL - const BAR: [&str; 3] = {"one", "two", "three"};
+LL + const BAR: [&str; 3] = ["one", "two", "three"];
+   |
 
 error: this is a block expression, not an array
   --> $DIR/issue-87830-try-brackets-for-arrays.rs:12:5
@@ -35,8 +36,9 @@ LL |     {1, 2, 3};
    |
 help: to make an array, use square brackets instead of curly braces
    |
-LL |     [1, 2, 3];
-   |     ~       ~
+LL -     {1, 2, 3};
+LL +     [1, 2, 3];
+   |
 
 error: expected one of `.`, `;`, `?`, `}`, or an operator, found `,`
   --> $DIR/issue-87830-try-brackets-for-arrays.rs:17:6
diff --git a/tests/ui/did_you_mean/pub-macro-rules.stderr b/tests/ui/did_you_mean/pub-macro-rules.stderr
index fb9148748ca..a91d419d96b 100644
--- a/tests/ui/did_you_mean/pub-macro-rules.stderr
+++ b/tests/ui/did_you_mean/pub-macro-rules.stderr
@@ -6,8 +6,9 @@ LL |     pub macro_rules! foo {
    |
 help: try exporting the macro
    |
-LL |     #[macro_export] macro_rules! foo {
-   |     ~~~~~~~~~~~~~~~
+LL -     pub macro_rules! foo {
+LL +     #[macro_export] macro_rules! foo {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr b/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr
index 96742f8bf47..6c24a5899ea 100644
--- a/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr
+++ b/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr
@@ -10,8 +10,9 @@ LL |     fn bar(i: _, t: _, s: _) -> _ {
    |
 help: try replacing `_` with the types in the corresponding trait method signature
    |
-LL |     fn bar(i: i32, t: usize, s: &()) -> (usize, i32) {
-   |               ~~~     ~~~~~     ~~~     ~~~~~~~~~~~~
+LL -     fn bar(i: _, t: _, s: _) -> _ {
+LL +     fn bar(i: i32, t: usize, s: &()) -> (usize, i32) {
+   |
 
 error[E0282]: type annotations needed
   --> $DIR/replace-impl-infer-ty-from-trait.rs:9:15
diff --git a/tests/ui/did_you_mean/use_instead_of_import.stderr b/tests/ui/did_you_mean/use_instead_of_import.stderr
index f8d6de8a117..aadd7524ec6 100644
--- a/tests/ui/did_you_mean/use_instead_of_import.stderr
+++ b/tests/ui/did_you_mean/use_instead_of_import.stderr
@@ -6,8 +6,9 @@ LL | import std::{
    |
 help: items are imported using the `use` keyword
    |
-LL | use std::{
-   | ~~~
+LL - import std::{
+LL + use std::{
+   |
 
 error: expected item, found `require`
   --> $DIR/use_instead_of_import.rs:9:1
@@ -17,8 +18,9 @@ LL | require std::time::Duration;
    |
 help: items are imported using the `use` keyword
    |
-LL | use std::time::Duration;
-   | ~~~
+LL - require std::time::Duration;
+LL + use std::time::Duration;
+   |
 
 error: expected item, found `include`
   --> $DIR/use_instead_of_import.rs:12:1
@@ -28,8 +30,9 @@ LL | include std::time::Instant;
    |
 help: items are imported using the `use` keyword
    |
-LL | use std::time::Instant;
-   | ~~~
+LL - include std::time::Instant;
+LL + use std::time::Instant;
+   |
 
 error: expected item, found `using`
   --> $DIR/use_instead_of_import.rs:15:5
@@ -39,8 +42,9 @@ LL | pub using std::io;
    |
 help: items are imported using the `use` keyword
    |
-LL | pub use std::io;
-   |     ~~~
+LL - pub using std::io;
+LL + pub use std::io;
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/drop/if-let-rescope-borrowck-suggestions.stderr b/tests/ui/drop/if-let-rescope-borrowck-suggestions.stderr
index 3c87e196af6..b418ff4684d 100644
--- a/tests/ui/drop/if-let-rescope-borrowck-suggestions.stderr
+++ b/tests/ui/drop/if-let-rescope-borrowck-suggestions.stderr
@@ -18,8 +18,9 @@ LL ~     do_something(if let Some(value) = binding.get_ref() { value } else { &0
    |
 help: consider rewriting the `if` into `match` which preserves the extended lifetime
    |
-LL |     do_something({ match Droppy.get_ref()  { Some(value) => { value } _ => { &0 }}});
-   |                  ~~~~~~~                   ++++++++++++++++           ~~~~       ++
+LL -     do_something(if let Some(value) = Droppy.get_ref() { value } else { &0 });
+LL +     do_something({ match Droppy.get_ref()  { Some(value) => { value } _ => { &0 }}});
+   |
 
 error[E0716]: temporary value dropped while borrowed
   --> $DIR/if-let-rescope-borrowck-suggestions.rs:23:39
diff --git a/tests/ui/drop/lint-if-let-rescope.stderr b/tests/ui/drop/lint-if-let-rescope.stderr
index f6715dbae05..2b0fcb7a938 100644
--- a/tests/ui/drop/lint-if-let-rescope.stderr
+++ b/tests/ui/drop/lint-if-let-rescope.stderr
@@ -108,8 +108,9 @@ LL |     if let Some(1) = { if let Some(_value) = Droppy.get() { Some(1) } else
    |                                                                     ^
 help: a `match` with a single arm can preserve the drop order up to Edition 2021
    |
-LL |     if let Some(1) = { match Droppy.get() { Some(_value) => { Some(1) } _ => { None }} } {
-   |                        ~~~~~              +++++++++++++++++             ~~~~         +
+LL -     if let Some(1) = { if let Some(_value) = Droppy.get() { Some(1) } else { None } } {
+LL +     if let Some(1) = { match Droppy.get() { Some(_value) => { Some(1) } _ => { None }} } {
+   |
 
 error: `if let` assigns a shorter lifetime since Edition 2024
   --> $DIR/lint-if-let-rescope.rs:72:12
@@ -128,8 +129,9 @@ LL |     if (if let Some(_value) = droppy().get() { true } else { false }) {
    |                                                     ^
 help: a `match` with a single arm can preserve the drop order up to Edition 2021
    |
-LL |     if (match droppy().get() { Some(_value) => { true } _ => { false }}) {
-   |         ~~~~~                +++++++++++++++++          ~~~~          +
+LL -     if (if let Some(_value) = droppy().get() { true } else { false }) {
+LL +     if (match droppy().get() { Some(_value) => { true } _ => { false }}) {
+   |
 
 error: `if let` assigns a shorter lifetime since Edition 2024
   --> $DIR/lint-if-let-rescope.rs:78:21
@@ -148,8 +150,9 @@ LL |     } else if (((if let Some(_value) = droppy().get() { true } else { false
    |                                                              ^
 help: a `match` with a single arm can preserve the drop order up to Edition 2021
    |
-LL |     } else if (((match droppy().get() { Some(_value) => { true } _ => { false }}))) {
-   |                  ~~~~~                +++++++++++++++++          ~~~~          +
+LL -     } else if (((if let Some(_value) = droppy().get() { true } else { false }))) {
+LL +     } else if (((match droppy().get() { Some(_value) => { true } _ => { false }}))) {
+   |
 
 error: `if let` assigns a shorter lifetime since Edition 2024
   --> $DIR/lint-if-let-rescope.rs:90:15
@@ -168,8 +171,9 @@ LL |     while (if let Some(_value) = droppy().get() { false } else { true }) {
    |                                                         ^
 help: a `match` with a single arm can preserve the drop order up to Edition 2021
    |
-LL |     while (match droppy().get() { Some(_value) => { false } _ => { true }}) {
-   |            ~~~~~                +++++++++++++++++           ~~~~         +
+LL -     while (if let Some(_value) = droppy().get() { false } else { true }) {
+LL +     while (match droppy().get() { Some(_value) => { false } _ => { true }}) {
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/dropck/explicit-drop-bounds.bad1.stderr b/tests/ui/dropck/explicit-drop-bounds.bad1.stderr
index 2caa779ffab..650244ac02a 100644
--- a/tests/ui/dropck/explicit-drop-bounds.bad1.stderr
+++ b/tests/ui/dropck/explicit-drop-bounds.bad1.stderr
@@ -11,8 +11,9 @@ LL | struct DropMe<T: Copy>(T);
    |                  ^^^^ required by this bound in `DropMe`
 help: consider further restricting type parameter `T` with trait `Copy`
    |
-LL |     [T; 1]: Copy, T: std::marker::Copy // But `[T; 1]: Copy` does not imply `T: Copy`
-   |                 ~~~~~~~~~~~~~~~~~~~~~~
+LL -     [T; 1]: Copy, // But `[T; 1]: Copy` does not imply `T: Copy`
+LL +     [T; 1]: Copy, T: std::marker::Copy // But `[T; 1]: Copy` does not imply `T: Copy`
+   |
 
 error[E0277]: the trait bound `T: Copy` is not satisfied
   --> $DIR/explicit-drop-bounds.rs:32:18
@@ -27,8 +28,9 @@ LL | struct DropMe<T: Copy>(T);
    |                  ^^^^ required by this bound in `DropMe`
 help: consider further restricting type parameter `T` with trait `Copy`
    |
-LL |     [T; 1]: Copy, T: std::marker::Copy // But `[T; 1]: Copy` does not imply `T: Copy`
-   |                 ~~~~~~~~~~~~~~~~~~~~~~
+LL -     [T; 1]: Copy, // But `[T; 1]: Copy` does not imply `T: Copy`
+LL +     [T; 1]: Copy, T: std::marker::Copy // But `[T; 1]: Copy` does not imply `T: Copy`
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr b/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr
index 774d5ba3c89..c54cc858129 100644
--- a/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr
+++ b/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr
@@ -67,8 +67,9 @@ LL | fn wants_write(_: impl Write) {}
    |                        ^^^^^ required by this bound in `wants_write`
 help: consider changing this borrow's mutability
    |
-LL |     wants_write(&mut [0u8][..]);
-   |                 ~~~~
+LL -     wants_write(&[0u8][..]);
+LL +     wants_write(&mut [0u8][..]);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/dyn-compatibility/avoid-ice-on-warning-2.new.stderr b/tests/ui/dyn-compatibility/avoid-ice-on-warning-2.new.stderr
index 83795f3128e..87207d607e2 100644
--- a/tests/ui/dyn-compatibility/avoid-ice-on-warning-2.new.stderr
+++ b/tests/ui/dyn-compatibility/avoid-ice-on-warning-2.new.stderr
@@ -7,8 +7,9 @@ LL | fn id<F>(f: Copy) -> usize {
    = note: `Copy` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `Copy`
    |
-LL | fn id<F, T: Copy>(f: T) -> usize {
-   |        +++++++++     ~
+LL - fn id<F>(f: Copy) -> usize {
+LL + fn id<F, T: Copy>(f: T) -> usize {
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn id<F>(f: impl Copy) -> usize {
diff --git a/tests/ui/dyn-compatibility/avoid-ice-on-warning-3.new.stderr b/tests/ui/dyn-compatibility/avoid-ice-on-warning-3.new.stderr
index 813b5863738..6075e313f4e 100644
--- a/tests/ui/dyn-compatibility/avoid-ice-on-warning-3.new.stderr
+++ b/tests/ui/dyn-compatibility/avoid-ice-on-warning-3.new.stderr
@@ -7,8 +7,9 @@ LL | trait A { fn g(b: B) -> B; }
    = note: `B` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `B`
    |
-LL | trait A { fn g<T: B>(b: T) -> B; }
-   |               ++++++    ~
+LL - trait A { fn g(b: B) -> B; }
+LL + trait A { fn g<T: B>(b: T) -> B; }
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | trait A { fn g(b: impl B) -> B; }
@@ -34,8 +35,9 @@ LL | trait B { fn f(a: A) -> A; }
    = note: `A` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `A`
    |
-LL | trait B { fn f<T: A>(a: T) -> A; }
-   |               ++++++    ~
+LL - trait B { fn f(a: A) -> A; }
+LL + trait B { fn f<T: A>(a: T) -> A; }
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | trait B { fn f(a: impl A) -> A; }
diff --git a/tests/ui/dyn-compatibility/avoid-ice-on-warning.new.stderr b/tests/ui/dyn-compatibility/avoid-ice-on-warning.new.stderr
index e9eb1cdd0c2..3ba4aa12e6d 100644
--- a/tests/ui/dyn-compatibility/avoid-ice-on-warning.new.stderr
+++ b/tests/ui/dyn-compatibility/avoid-ice-on-warning.new.stderr
@@ -6,8 +6,9 @@ LL | fn call_this<F>(f: F) : Fn(&str) + call_that {}
    |
 help: use `->` instead
    |
-LL | fn call_this<F>(f: F) -> Fn(&str) + call_that {}
-   |                       ~~
+LL - fn call_this<F>(f: F) : Fn(&str) + call_that {}
+LL + fn call_this<F>(f: F) -> Fn(&str) + call_that {}
+   |
 
 error[E0405]: cannot find trait `call_that` in this scope
   --> $DIR/avoid-ice-on-warning.rs:4:36
diff --git a/tests/ui/dyn-compatibility/avoid-ice-on-warning.old.stderr b/tests/ui/dyn-compatibility/avoid-ice-on-warning.old.stderr
index 646fb57af9e..dbfe91e1811 100644
--- a/tests/ui/dyn-compatibility/avoid-ice-on-warning.old.stderr
+++ b/tests/ui/dyn-compatibility/avoid-ice-on-warning.old.stderr
@@ -6,8 +6,9 @@ LL | fn call_this<F>(f: F) : Fn(&str) + call_that {}
    |
 help: use `->` instead
    |
-LL | fn call_this<F>(f: F) -> Fn(&str) + call_that {}
-   |                       ~~
+LL - fn call_this<F>(f: F) : Fn(&str) + call_that {}
+LL + fn call_this<F>(f: F) -> Fn(&str) + call_that {}
+   |
 
 error[E0405]: cannot find trait `call_that` in this scope
   --> $DIR/avoid-ice-on-warning.rs:4:36
diff --git a/tests/ui/dyn-compatibility/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.stderr b/tests/ui/dyn-compatibility/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.stderr
index 4c6d84f0534..832e7ef4dc3 100644
--- a/tests/ui/dyn-compatibility/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.stderr
+++ b/tests/ui/dyn-compatibility/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.stderr
@@ -195,8 +195,9 @@ LL |     fn foo(_: &Trait);
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn foo<T: Trait>(_: &T);
-   |           ++++++++++     ~
+LL -     fn foo(_: &Trait);
+LL +     fn foo<T: Trait>(_: &T);
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn foo(_: &impl Trait);
@@ -214,8 +215,9 @@ LL |     fn bar(_: &'a Trait);
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn bar<T: Trait>(_: &'a T);
-   |           ++++++++++        ~
+LL -     fn bar(_: &'a Trait);
+LL +     fn bar<T: Trait>(_: &'a T);
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn bar(_: &'a impl Trait);
@@ -233,8 +235,9 @@ LL |     fn alice<'a>(_: &Trait);
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn alice<'a, T: Trait>(_: &T);
-   |                ++++++++++      ~
+LL -     fn alice<'a>(_: &Trait);
+LL +     fn alice<'a, T: Trait>(_: &T);
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn alice<'a>(_: &impl Trait);
@@ -252,8 +255,9 @@ LL |     fn bob<'a>(_: &'a Trait);
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn bob<'a, T: Trait>(_: &'a T);
-   |              ++++++++++         ~
+LL -     fn bob<'a>(_: &'a Trait);
+LL +     fn bob<'a, T: Trait>(_: &'a T);
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn bob<'a>(_: &'a impl Trait);
@@ -275,8 +279,9 @@ LL |     fn cat() -> &impl Trait;
    |                  ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn cat() -> Box<dyn Trait>;
-   |                 ~~~~~~~~~~~~~~
+LL -     fn cat() -> &Trait;
+LL +     fn cat() -> Box<dyn Trait>;
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:69:22
@@ -290,8 +295,9 @@ LL |     fn dog<'a>() -> &impl Trait {
    |                      ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn dog<'a>() -> Box<dyn Trait> {
-   |                     ~~~~~~~~~~~~~~
+LL -     fn dog<'a>() -> &Trait {
+LL +     fn dog<'a>() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:75:24
@@ -305,8 +311,9 @@ LL |     fn kitten() -> &'a impl Trait {
    |                        ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn kitten() -> Box<dyn Trait> {
-   |                    ~~~~~~~~~~~~~~
+LL -     fn kitten() -> &'a Trait {
+LL +     fn kitten() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:81:27
@@ -320,8 +327,9 @@ LL |     fn puppy<'a>() -> &'a impl Trait {
    |                           ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn puppy<'a>() -> Box<dyn Trait> {
-   |                       ~~~~~~~~~~~~~~
+LL -     fn puppy<'a>() -> &'a Trait {
+LL +     fn puppy<'a>() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:86:25
@@ -335,8 +343,9 @@ LL |     fn parrot() -> &mut impl Trait {
    |                         ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn parrot() -> Box<dyn Trait> {
-   |                    ~~~~~~~~~~~~~~
+LL -     fn parrot() -> &mut Trait {
+LL +     fn parrot() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:93:12
@@ -346,8 +355,9 @@ LL | fn foo(_: &Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL | fn foo<T: Trait>(_: &T) {}
-   |       ++++++++++     ~
+LL - fn foo(_: &Trait) {}
+LL + fn foo<T: Trait>(_: &T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn foo(_: &impl Trait) {}
@@ -365,8 +375,9 @@ LL | fn bar(_: &'a Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL | fn bar<T: Trait>(_: &'a T) {}
-   |       ++++++++++        ~
+LL - fn bar(_: &'a Trait) {}
+LL + fn bar<T: Trait>(_: &'a T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn bar(_: &'a impl Trait) {}
@@ -384,8 +395,9 @@ LL | fn alice<'a>(_: &Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL | fn alice<'a, T: Trait>(_: &T) {}
-   |            ++++++++++      ~
+LL - fn alice<'a>(_: &Trait) {}
+LL + fn alice<'a, T: Trait>(_: &T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn alice<'a>(_: &impl Trait) {}
@@ -403,8 +415,9 @@ LL | fn bob<'a>(_: &'a Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL | fn bob<'a, T: Trait>(_: &'a T) {}
-   |          ++++++++++         ~
+LL - fn bob<'a>(_: &'a Trait) {}
+LL + fn bob<'a, T: Trait>(_: &'a T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn bob<'a>(_: &'a impl Trait) {}
@@ -426,8 +439,9 @@ LL | fn cat() -> &impl Trait {
    |              ++++
 help: alternatively, you can return an owned trait object
    |
-LL | fn cat() -> Box<dyn Trait> {
-   |             ~~~~~~~~~~~~~~
+LL - fn cat() -> &Trait {
+LL + fn cat() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:116:18
@@ -441,8 +455,9 @@ LL | fn dog<'a>() -> &impl Trait {
    |                  ++++
 help: alternatively, you can return an owned trait object
    |
-LL | fn dog<'a>() -> Box<dyn Trait> {
-   |                 ~~~~~~~~~~~~~~
+LL - fn dog<'a>() -> &Trait {
+LL + fn dog<'a>() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:122:20
@@ -456,8 +471,9 @@ LL | fn kitten() -> &'a impl Trait {
    |                    ++++
 help: alternatively, you can return an owned trait object
    |
-LL | fn kitten() -> Box<dyn Trait> {
-   |                ~~~~~~~~~~~~~~
+LL - fn kitten() -> &'a Trait {
+LL + fn kitten() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:128:23
@@ -471,8 +487,9 @@ LL | fn puppy<'a>() -> &'a impl Trait {
    |                       ++++
 help: alternatively, you can return an owned trait object
    |
-LL | fn puppy<'a>() -> Box<dyn Trait> {
-   |                   ~~~~~~~~~~~~~~
+LL - fn puppy<'a>() -> &'a Trait {
+LL + fn puppy<'a>() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:133:21
@@ -486,8 +503,9 @@ LL | fn parrot() -> &mut impl Trait {
    |                     ++++
 help: alternatively, you can return an owned trait object
    |
-LL | fn parrot() -> Box<dyn Trait> {
-   |                ~~~~~~~~~~~~~~
+LL - fn parrot() -> &mut Trait {
+LL + fn parrot() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:8:16
@@ -497,8 +515,9 @@ LL |     fn foo(_: &Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn foo<T: Trait>(_: &T) {}
-   |           ++++++++++     ~
+LL -     fn foo(_: &Trait) {}
+LL +     fn foo<T: Trait>(_: &T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn foo(_: &impl Trait) {}
@@ -516,8 +535,9 @@ LL |     fn bar(self, _: &'a Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn bar<T: Trait>(self, _: &'a T) {}
-   |           ++++++++++              ~
+LL -     fn bar(self, _: &'a Trait) {}
+LL +     fn bar<T: Trait>(self, _: &'a T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn bar(self, _: &'a impl Trait) {}
@@ -535,8 +555,9 @@ LL |     fn alice<'a>(&self, _: &Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn alice<'a, T: Trait>(&self, _: &T) {}
-   |                ++++++++++             ~
+LL -     fn alice<'a>(&self, _: &Trait) {}
+LL +     fn alice<'a, T: Trait>(&self, _: &T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn alice<'a>(&self, _: &impl Trait) {}
@@ -554,8 +575,9 @@ LL |     fn bob<'a>(_: &'a Trait) {}
    |
 help: use a new generic type parameter, constrained by `Trait`
    |
-LL |     fn bob<'a, T: Trait>(_: &'a T) {}
-   |              ++++++++++         ~
+LL -     fn bob<'a>(_: &'a Trait) {}
+LL +     fn bob<'a, T: Trait>(_: &'a T) {}
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn bob<'a>(_: &'a impl Trait) {}
@@ -577,8 +599,9 @@ LL |     fn cat() -> &impl Trait {
    |                  ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn cat() -> Box<dyn Trait> {
-   |                 ~~~~~~~~~~~~~~
+LL -     fn cat() -> &Trait {
+LL +     fn cat() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:27:22
@@ -592,8 +615,9 @@ LL |     fn dog<'a>() -> &impl Trait {
    |                      ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn dog<'a>() -> Box<dyn Trait> {
-   |                     ~~~~~~~~~~~~~~
+LL -     fn dog<'a>() -> &Trait {
+LL +     fn dog<'a>() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:33:24
@@ -607,8 +631,9 @@ LL |     fn kitten() -> &'a impl Trait {
    |                        ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn kitten() -> Box<dyn Trait> {
-   |                    ~~~~~~~~~~~~~~
+LL -     fn kitten() -> &'a Trait {
+LL +     fn kitten() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:39:27
@@ -622,8 +647,9 @@ LL |     fn puppy<'a>() -> &'a impl Trait {
    |                           ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn puppy<'a>() -> Box<dyn Trait> {
-   |                       ~~~~~~~~~~~~~~
+LL -     fn puppy<'a>() -> &'a Trait {
+LL +     fn puppy<'a>() -> Box<dyn Trait> {
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:44:25
@@ -637,8 +663,9 @@ LL |     fn parrot() -> &mut impl Trait {
    |                         ++++
 help: alternatively, you can return an owned trait object
    |
-LL |     fn parrot() -> Box<dyn Trait> {
-   |                    ~~~~~~~~~~~~~~
+LL -     fn parrot() -> &mut Trait {
+LL +     fn parrot() -> Box<dyn Trait> {
+   |
 
 error: aborting due to 42 previous errors
 
diff --git a/tests/ui/dyn-compatibility/supertrait-mentions-GAT.stderr b/tests/ui/dyn-compatibility/supertrait-mentions-GAT.stderr
index 8e139ee6b48..582cf1af054 100644
--- a/tests/ui/dyn-compatibility/supertrait-mentions-GAT.stderr
+++ b/tests/ui/dyn-compatibility/supertrait-mentions-GAT.stderr
@@ -17,8 +17,9 @@ LL |     fn c(&self) -> dyn SuperTrait<T>;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn c(&self) -> Self;
-   |                    ~~~~
+LL -     fn c(&self) -> dyn SuperTrait<T>;
+LL +     fn c(&self) -> Self;
+   |
 
 error[E0038]: the trait `SuperTrait` is not dyn compatible
   --> $DIR/supertrait-mentions-GAT.rs:10:20
diff --git a/tests/ui/dyn-compatibility/supertrait-mentions-Self.stderr b/tests/ui/dyn-compatibility/supertrait-mentions-Self.stderr
index a763649e9c6..2ba8e4611cb 100644
--- a/tests/ui/dyn-compatibility/supertrait-mentions-Self.stderr
+++ b/tests/ui/dyn-compatibility/supertrait-mentions-Self.stderr
@@ -34,8 +34,9 @@ LL | trait Baz : Bar<Self> {
    |       this trait is not dyn compatible...
 help: consider using an opaque type instead
    |
-LL | fn make_baz<T:Baz>(t: &T) -> &impl Baz {
-   |                               ~~~~
+LL - fn make_baz<T:Baz>(t: &T) -> &dyn Baz {
+LL + fn make_baz<T:Baz>(t: &T) -> &impl Baz {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/dyn-keyword/dyn-2021-edition-error.stderr b/tests/ui/dyn-keyword/dyn-2021-edition-error.stderr
index 6d1a1618ac0..8c4b809e76b 100644
--- a/tests/ui/dyn-keyword/dyn-2021-edition-error.stderr
+++ b/tests/ui/dyn-keyword/dyn-2021-edition-error.stderr
@@ -6,8 +6,9 @@ LL | fn function(x: &SomeTrait, y: Box<SomeTrait>) {
    |
 help: use a new generic type parameter, constrained by `SomeTrait`
    |
-LL | fn function<T: SomeTrait>(x: &T, y: Box<SomeTrait>) {
-   |            ++++++++++++++     ~
+LL - fn function(x: &SomeTrait, y: Box<SomeTrait>) {
+LL + fn function<T: SomeTrait>(x: &T, y: Box<SomeTrait>) {
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn function(x: &impl SomeTrait, y: Box<SomeTrait>) {
diff --git a/tests/ui/dyn-keyword/misspelled-associated-item.stderr b/tests/ui/dyn-keyword/misspelled-associated-item.stderr
index 4211889e524..0880100dc04 100644
--- a/tests/ui/dyn-keyword/misspelled-associated-item.stderr
+++ b/tests/ui/dyn-keyword/misspelled-associated-item.stderr
@@ -10,8 +10,9 @@ LL |     let () = <dyn Trait>::typoe();
    |              ++++      +
 help: you may have misspelled this associated item, causing `Trait` to be interpreted as a type rather than a trait
    |
-LL |     let () = Trait::typo();
-   |                     ~~~~
+LL -     let () = Trait::typoe();
+LL +     let () = Trait::typo();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/empty/empty-struct-braces-expr.stderr b/tests/ui/empty/empty-struct-braces-expr.stderr
index 28c701443de..3411702a12d 100644
--- a/tests/ui/empty/empty-struct-braces-expr.stderr
+++ b/tests/ui/empty/empty-struct-braces-expr.stderr
@@ -14,12 +14,14 @@ LL | pub struct XEmpty2;
    |
 help: use struct literal syntax instead
    |
-LL |     let e1 = Empty1 {};
-   |              ~~~~~~~~~
+LL -     let e1 = Empty1;
+LL +     let e1 = Empty1 {};
+   |
 help: a unit struct with a similar name exists
    |
-LL |     let e1 = XEmpty2;
-   |              ~~~~~~~
+LL -     let e1 = Empty1;
+LL +     let e1 = XEmpty2;
+   |
 
 error[E0423]: expected value, found struct `XEmpty1`
   --> $DIR/empty-struct-braces-expr.rs:22:15
@@ -36,12 +38,14 @@ LL | pub struct XEmpty2;
    |
 help: use struct literal syntax instead
    |
-LL |     let xe1 = XEmpty1 {};
-   |               ~~~~~~~~~~
+LL -     let xe1 = XEmpty1;
+LL +     let xe1 = XEmpty1 {};
+   |
 help: a unit struct with a similar name exists
    |
-LL |     let xe1 = XEmpty2;
-   |               ~~~~~~~
+LL -     let xe1 = XEmpty1;
+LL +     let xe1 = XEmpty2;
+   |
 
 error[E0423]: expected function, tuple struct or tuple variant, found struct `Empty1`
   --> $DIR/empty-struct-braces-expr.rs:16:14
@@ -59,12 +63,14 @@ LL | pub struct XEmpty2;
    |
 help: use struct literal syntax instead
    |
-LL |     let e1 = Empty1 {};
-   |              ~~~~~~~~~
+LL -     let e1 = Empty1();
+LL +     let e1 = Empty1 {};
+   |
 help: a unit struct with a similar name exists
    |
-LL |     let e1 = XEmpty2();
-   |              ~~~~~~~
+LL -     let e1 = Empty1();
+LL +     let e1 = XEmpty2();
+   |
 
 error[E0533]: expected value, found struct variant `E::Empty3`
   --> $DIR/empty-struct-braces-expr.rs:18:14
@@ -85,8 +91,9 @@ LL |     let e3 = E::Empty3();
    |
 help: you might have meant to create a new value of the struct
    |
-LL |     let e3 = E::Empty3 {};
-   |                        ~~
+LL -     let e3 = E::Empty3();
+LL +     let e3 = E::Empty3 {};
+   |
 
 error[E0423]: expected function, tuple struct or tuple variant, found struct `XEmpty1`
   --> $DIR/empty-struct-braces-expr.rs:23:15
@@ -103,12 +110,14 @@ LL | pub struct XEmpty2;
    |
 help: use struct literal syntax instead
    |
-LL |     let xe1 = XEmpty1 {};
-   |               ~~~~~~~~~~
+LL -     let xe1 = XEmpty1();
+LL +     let xe1 = XEmpty1 {};
+   |
 help: a unit struct with a similar name exists
    |
-LL |     let xe1 = XEmpty2();
-   |               ~~~~~~~
+LL -     let xe1 = XEmpty1();
+LL +     let xe1 = XEmpty2();
+   |
 
 error[E0599]: no variant or associated item named `Empty3` found for enum `empty_struct::XE` in the current scope
   --> $DIR/empty-struct-braces-expr.rs:25:19
@@ -118,8 +127,9 @@ LL |     let xe3 = XE::Empty3;
    |
 help: there is a variant with a similar name
    |
-LL |     let xe3 = XE::XEmpty3;
-   |                   ~~~~~~~
+LL -     let xe3 = XE::Empty3;
+LL +     let xe3 = XE::XEmpty3;
+   |
 
 error[E0599]: no variant or associated item named `Empty3` found for enum `empty_struct::XE` in the current scope
   --> $DIR/empty-struct-braces-expr.rs:26:19
@@ -129,8 +139,9 @@ LL |     let xe3 = XE::Empty3();
    |
 help: there is a variant with a similar name
    |
-LL |     let xe3 = XE::XEmpty3 {};
-   |                   ~~~~~~~~~~
+LL -     let xe3 = XE::Empty3();
+LL +     let xe3 = XE::XEmpty3 {};
+   |
 
 error[E0599]: no variant named `Empty1` found for enum `empty_struct::XE`
   --> $DIR/empty-struct-braces-expr.rs:28:9
@@ -140,8 +151,9 @@ LL |     XE::Empty1 {};
    |
 help: there is a variant with a similar name
    |
-LL |     XE::XEmpty3 {};
-   |         ~~~~~~~~~~
+LL -     XE::Empty1 {};
+LL +     XE::XEmpty3 {};
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/empty/empty-struct-braces-pat-2.stderr b/tests/ui/empty/empty-struct-braces-pat-2.stderr
index 7fb5cb2034a..497dc9601a7 100644
--- a/tests/ui/empty/empty-struct-braces-pat-2.stderr
+++ b/tests/ui/empty/empty-struct-braces-pat-2.stderr
@@ -14,12 +14,14 @@ LL | pub struct XEmpty6();
    |
 help: use struct pattern syntax instead
    |
-LL |         Empty1 {} => ()
-   |         ~~~~~~~~~
+LL -         Empty1() => ()
+LL +         Empty1 {} => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6() => ()
-   |         ~~~~~~~
+LL -         Empty1() => ()
+LL +         XEmpty6() => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found struct `XEmpty1`
   --> $DIR/empty-struct-braces-pat-2.rs:18:9
@@ -37,12 +39,14 @@ LL | pub struct XEmpty6();
    |
 help: use struct pattern syntax instead
    |
-LL |         XEmpty1 {} => ()
-   |         ~~~~~~~~~~
+LL -         XEmpty1() => ()
+LL +         XEmpty1 {} => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6() => ()
-   |         ~~~~~~~
+LL -         XEmpty1() => ()
+LL +         XEmpty6() => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found struct `Empty1`
   --> $DIR/empty-struct-braces-pat-2.rs:21:9
@@ -60,12 +64,14 @@ LL | pub struct XEmpty6();
    |
 help: use struct pattern syntax instead
    |
-LL |         Empty1 {} => ()
-   |         ~~~~~~~~~
+LL -         Empty1(..) => ()
+LL +         Empty1 {} => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6(..) => ()
-   |         ~~~~~~~
+LL -         Empty1(..) => ()
+LL +         XEmpty6(..) => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found struct `XEmpty1`
   --> $DIR/empty-struct-braces-pat-2.rs:24:9
@@ -83,12 +89,14 @@ LL | pub struct XEmpty6();
    |
 help: use struct pattern syntax instead
    |
-LL |         XEmpty1 {} => ()
-   |         ~~~~~~~~~~
+LL -         XEmpty1(..) => ()
+LL +         XEmpty1 {} => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6(..) => ()
-   |         ~~~~~~~
+LL -         XEmpty1(..) => ()
+LL +         XEmpty6(..) => ()
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/empty/empty-struct-braces-pat-3.stderr b/tests/ui/empty/empty-struct-braces-pat-3.stderr
index b2ab7113347..6e9618da99d 100644
--- a/tests/ui/empty/empty-struct-braces-pat-3.stderr
+++ b/tests/ui/empty/empty-struct-braces-pat-3.stderr
@@ -6,8 +6,9 @@ LL |         E::Empty3() => ()
    |
 help: use the struct variant pattern syntax
    |
-LL |         E::Empty3 {} => ()
-   |                   ~~
+LL -         E::Empty3() => ()
+LL +         E::Empty3 {} => ()
+   |
 
 error[E0164]: expected tuple struct or tuple variant, found struct variant `XE::XEmpty3`
   --> $DIR/empty-struct-braces-pat-3.rs:21:9
@@ -17,8 +18,9 @@ LL |         XE::XEmpty3() => ()
    |
 help: use the struct variant pattern syntax
    |
-LL |         XE::XEmpty3 {} => ()
-   |                     ~~
+LL -         XE::XEmpty3() => ()
+LL +         XE::XEmpty3 {} => ()
+   |
 
 error[E0164]: expected tuple struct or tuple variant, found struct variant `E::Empty3`
   --> $DIR/empty-struct-braces-pat-3.rs:25:9
@@ -28,8 +30,9 @@ LL |         E::Empty3(..) => ()
    |
 help: use the struct variant pattern syntax
    |
-LL |         E::Empty3 {} => ()
-   |                   ~~
+LL -         E::Empty3(..) => ()
+LL +         E::Empty3 {} => ()
+   |
 
 error[E0164]: expected tuple struct or tuple variant, found struct variant `XE::XEmpty3`
   --> $DIR/empty-struct-braces-pat-3.rs:29:9
@@ -39,8 +42,9 @@ LL |         XE::XEmpty3(..) => ()
    |
 help: use the struct variant pattern syntax
    |
-LL |         XE::XEmpty3 {} => ()
-   |                     ~~
+LL -         XE::XEmpty3(..) => ()
+LL +         XE::XEmpty3 {} => ()
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/empty/empty-struct-tuple-pat.stderr b/tests/ui/empty/empty-struct-tuple-pat.stderr
index 45001c79753..3906a0e2060 100644
--- a/tests/ui/empty/empty-struct-tuple-pat.stderr
+++ b/tests/ui/empty/empty-struct-tuple-pat.stderr
@@ -46,12 +46,14 @@ LL |     XEmpty5(),
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         XE::XEmpty5() => (),
-   |         ~~~~~~~~~~~~~
+LL -         XE::XEmpty5 => (),
+LL +         XE::XEmpty5() => (),
+   |
 help: a unit variant with a similar name exists
    |
-LL |         XE::XEmpty4 => (),
-   |             ~~~~~~~
+LL -         XE::XEmpty5 => (),
+LL +         XE::XEmpty4 => (),
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/empty/empty-struct-unit-pat.stderr b/tests/ui/empty/empty-struct-unit-pat.stderr
index 5c0b4cffa94..09a476423c8 100644
--- a/tests/ui/empty/empty-struct-unit-pat.stderr
+++ b/tests/ui/empty/empty-struct-unit-pat.stderr
@@ -14,12 +14,14 @@ LL | pub struct XEmpty6();
    |
 help: use this syntax instead
    |
-LL |         Empty2 => ()
-   |         ~~~~~~
+LL -         Empty2() => ()
+LL +         Empty2 => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6() => ()
-   |         ~~~~~~~
+LL -         Empty2() => ()
+LL +         XEmpty6() => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `XEmpty2`
   --> $DIR/empty-struct-unit-pat.rs:24:9
@@ -36,12 +38,14 @@ LL | pub struct XEmpty6();
    |
 help: use this syntax instead
    |
-LL |         XEmpty2 => ()
-   |         ~~~~~~~
+LL -         XEmpty2() => ()
+LL +         XEmpty2 => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6() => ()
-   |         ~~~~~~~
+LL -         XEmpty2() => ()
+LL +         XEmpty6() => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `Empty2`
   --> $DIR/empty-struct-unit-pat.rs:28:9
@@ -59,12 +63,14 @@ LL | pub struct XEmpty6();
    |
 help: use this syntax instead
    |
-LL |         Empty2 => ()
-   |         ~~~~~~
+LL -         Empty2(..) => ()
+LL +         Empty2 => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6(..) => ()
-   |         ~~~~~~~
+LL -         Empty2(..) => ()
+LL +         XEmpty6(..) => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `XEmpty2`
   --> $DIR/empty-struct-unit-pat.rs:32:9
@@ -81,12 +87,14 @@ LL | pub struct XEmpty6();
    |
 help: use this syntax instead
    |
-LL |         XEmpty2 => ()
-   |         ~~~~~~~
+LL -         XEmpty2(..) => ()
+LL +         XEmpty2 => ()
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         XEmpty6(..) => ()
-   |         ~~~~~~~
+LL -         XEmpty2(..) => ()
+LL +         XEmpty6(..) => ()
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E::Empty4`
   --> $DIR/empty-struct-unit-pat.rs:37:9
@@ -112,12 +120,14 @@ LL |     XEmpty5(),
    |
 help: use this syntax instead
    |
-LL |         XE::XEmpty4 => (),
-   |         ~~~~~~~~~~~
+LL -         XE::XEmpty4() => (),
+LL +         XE::XEmpty4 => (),
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         XE::XEmpty5() => (),
-   |             ~~~~~~~
+LL -         XE::XEmpty4() => (),
+LL +         XE::XEmpty5() => (),
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E::Empty4`
   --> $DIR/empty-struct-unit-pat.rs:46:9
@@ -143,12 +153,14 @@ LL |     XEmpty5(),
    |
 help: use this syntax instead
    |
-LL |         XE::XEmpty4 => (),
-   |         ~~~~~~~~~~~
+LL -         XE::XEmpty4(..) => (),
+LL +         XE::XEmpty4 => (),
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         XE::XEmpty5(..) => (),
-   |             ~~~~~~~
+LL -         XE::XEmpty4(..) => (),
+LL +         XE::XEmpty5(..) => (),
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/enum-discriminant/discriminant-ill-typed.stderr b/tests/ui/enum-discriminant/discriminant-ill-typed.stderr
index 2757145285c..e9508b7fe96 100644
--- a/tests/ui/enum-discriminant/discriminant-ill-typed.stderr
+++ b/tests/ui/enum-discriminant/discriminant-ill-typed.stderr
@@ -6,8 +6,9 @@ LL |         OhNo = 0_u8,
    |
 help: change the type of the numeric literal from `u8` to `i8`
    |
-LL |         OhNo = 0_i8,
-   |                  ~~
+LL -         OhNo = 0_u8,
+LL +         OhNo = 0_i8,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:28:16
@@ -17,8 +18,9 @@ LL |         OhNo = 0_i8,
    |
 help: change the type of the numeric literal from `i8` to `u8`
    |
-LL |         OhNo = 0_u8,
-   |                  ~~
+LL -         OhNo = 0_i8,
+LL +         OhNo = 0_u8,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:41:16
@@ -28,8 +30,9 @@ LL |         OhNo = 0_u16,
    |
 help: change the type of the numeric literal from `u16` to `i16`
    |
-LL |         OhNo = 0_i16,
-   |                  ~~~
+LL -         OhNo = 0_u16,
+LL +         OhNo = 0_i16,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:54:16
@@ -39,8 +42,9 @@ LL |         OhNo = 0_i16,
    |
 help: change the type of the numeric literal from `i16` to `u16`
    |
-LL |         OhNo = 0_u16,
-   |                  ~~~
+LL -         OhNo = 0_i16,
+LL +         OhNo = 0_u16,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:67:16
@@ -50,8 +54,9 @@ LL |         OhNo = 0_u32,
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |         OhNo = 0_i32,
-   |                  ~~~
+LL -         OhNo = 0_u32,
+LL +         OhNo = 0_i32,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:80:16
@@ -61,8 +66,9 @@ LL |         OhNo = 0_i32,
    |
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |         OhNo = 0_u32,
-   |                  ~~~
+LL -         OhNo = 0_i32,
+LL +         OhNo = 0_u32,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:93:16
@@ -72,8 +78,9 @@ LL |         OhNo = 0_u64,
    |
 help: change the type of the numeric literal from `u64` to `i64`
    |
-LL |         OhNo = 0_i64,
-   |                  ~~~
+LL -         OhNo = 0_u64,
+LL +         OhNo = 0_i64,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/discriminant-ill-typed.rs:106:16
@@ -83,8 +90,9 @@ LL |         OhNo = 0_i64,
    |
 help: change the type of the numeric literal from `i64` to `u64`
    |
-LL |         OhNo = 0_u64,
-   |                  ~~~
+LL -         OhNo = 0_i64,
+LL +         OhNo = 0_u64,
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/enum/assoc-fn-call-on-variant.stderr b/tests/ui/enum/assoc-fn-call-on-variant.stderr
index 47fc630c923..5318025f554 100644
--- a/tests/ui/enum/assoc-fn-call-on-variant.stderr
+++ b/tests/ui/enum/assoc-fn-call-on-variant.stderr
@@ -6,8 +6,9 @@ LL |     E::A::f();
    |
 help: there is an enum variant `E::A`; try using the variant's enum
    |
-LL |     E::f();
-   |     ~
+LL -     E::A::f();
+LL +     E::f();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/env-macro/error-recovery-issue-55897.stderr b/tests/ui/env-macro/error-recovery-issue-55897.stderr
index 5a20bf8b168..cda9aa330d2 100644
--- a/tests/ui/env-macro/error-recovery-issue-55897.stderr
+++ b/tests/ui/env-macro/error-recovery-issue-55897.stderr
@@ -30,8 +30,9 @@ LL |     use env;
    |
 help: consider importing this module instead
    |
-LL |     use std::env;
-   |         ~~~~~~~~
+LL -     use env;
+LL +     use std::env;
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/error-codes/E0027.stderr b/tests/ui/error-codes/E0027.stderr
index 7bbafcf0a27..701e636dc58 100644
--- a/tests/ui/error-codes/E0027.stderr
+++ b/tests/ui/error-codes/E0027.stderr
@@ -6,16 +6,19 @@ LL |         Dog { age: x } => {}
    |
 help: include the missing field in the pattern
    |
-LL |         Dog { age: x, name } => {}
-   |                     ~~~~~~~~
+LL -         Dog { age: x } => {}
+LL +         Dog { age: x, name } => {}
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Dog { age: x, name: _ } => {}
-   |                     ~~~~~~~~~~~
+LL -         Dog { age: x } => {}
+LL +         Dog { age: x, name: _ } => {}
+   |
 help: or always ignore missing fields here
    |
-LL |         Dog { age: x, .. } => {}
-   |                     ~~~~~~
+LL -         Dog { age: x } => {}
+LL +         Dog { age: x, .. } => {}
+   |
 
 error[E0027]: pattern does not mention field `age`
   --> $DIR/E0027.rs:15:9
@@ -25,16 +28,19 @@ LL |         Dog { name: x, } => {}
    |
 help: include the missing field in the pattern
    |
-LL |         Dog { name: x, age } => {}
-   |                      ~~~~~~~
+LL -         Dog { name: x, } => {}
+LL +         Dog { name: x, age } => {}
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Dog { name: x, age: _ } => {}
-   |                      ~~~~~~~~~~
+LL -         Dog { name: x, } => {}
+LL +         Dog { name: x, age: _ } => {}
+   |
 help: or always ignore missing fields here
    |
-LL |         Dog { name: x, .. } => {}
-   |                      ~~~~~~
+LL -         Dog { name: x, } => {}
+LL +         Dog { name: x, .. } => {}
+   |
 
 error[E0027]: pattern does not mention field `age`
   --> $DIR/E0027.rs:19:9
@@ -44,16 +50,19 @@ LL |         Dog { name: x  , } => {}
    |
 help: include the missing field in the pattern
    |
-LL |         Dog { name: x, age } => {}
-   |                      ~~~~~~~
+LL -         Dog { name: x  , } => {}
+LL +         Dog { name: x, age } => {}
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Dog { name: x, age: _ } => {}
-   |                      ~~~~~~~~~~
+LL -         Dog { name: x  , } => {}
+LL +         Dog { name: x, age: _ } => {}
+   |
 help: or always ignore missing fields here
    |
-LL |         Dog { name: x, .. } => {}
-   |                      ~~~~~~
+LL -         Dog { name: x  , } => {}
+LL +         Dog { name: x, .. } => {}
+   |
 
 error[E0027]: pattern does not mention fields `name`, `age`
   --> $DIR/E0027.rs:22:9
@@ -63,16 +72,19 @@ LL |         Dog {} => {}
    |
 help: include the missing fields in the pattern
    |
-LL |         Dog { name, age } => {}
-   |             ~~~~~~~~~~~~~
+LL -         Dog {} => {}
+LL +         Dog { name, age } => {}
+   |
 help: if you don't care about these missing fields, you can explicitly ignore them
    |
-LL |         Dog { name: _, age: _ } => {}
-   |             ~~~~~~~~~~~~~~~~~~~
+LL -         Dog {} => {}
+LL +         Dog { name: _, age: _ } => {}
+   |
 help: or always ignore missing fields here
    |
-LL |         Dog { .. } => {}
-   |             ~~~~~~
+LL -         Dog {} => {}
+LL +         Dog { .. } => {}
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/error-codes/E0034.stderr b/tests/ui/error-codes/E0034.stderr
index 48b8efcf8a2..434518741fc 100644
--- a/tests/ui/error-codes/E0034.stderr
+++ b/tests/ui/error-codes/E0034.stderr
@@ -16,10 +16,12 @@ LL |     fn foo() {}
    |     ^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <Test as Trait1>::foo()
-   |     ~~~~~~~~~~~~~~~~~~
-LL |     <Test as Trait2>::foo()
-   |     ~~~~~~~~~~~~~~~~~~
+LL -     Test::foo()
+LL +     <Test as Trait1>::foo()
+   |
+LL -     Test::foo()
+LL +     <Test as Trait2>::foo()
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0040.stderr b/tests/ui/error-codes/E0040.stderr
index 00cccb07c0f..674c2b70b03 100644
--- a/tests/ui/error-codes/E0040.stderr
+++ b/tests/ui/error-codes/E0040.stderr
@@ -6,8 +6,9 @@ LL |     x.drop();
    |
 help: consider using `drop` function
    |
-LL |     drop(x);
-   |     +++++ ~
+LL -     x.drop();
+LL +     drop(x);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0054.stderr b/tests/ui/error-codes/E0054.stderr
index be35242ad72..a2e618d9b06 100644
--- a/tests/ui/error-codes/E0054.stderr
+++ b/tests/ui/error-codes/E0054.stderr
@@ -6,8 +6,9 @@ LL |     let x_is_nonzero = x as bool;
    |
 help: compare with zero instead
    |
-LL |     let x_is_nonzero = x != 0;
-   |                          ~~~~
+LL -     let x_is_nonzero = x as bool;
+LL +     let x_is_nonzero = x != 0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0057.stderr b/tests/ui/error-codes/E0057.stderr
index ef6e2908b93..35bd842b2cf 100644
--- a/tests/ui/error-codes/E0057.stderr
+++ b/tests/ui/error-codes/E0057.stderr
@@ -11,8 +11,9 @@ LL |     let f = |x| x * 3;
    |             ^^^
 help: provide the argument
    |
-LL |     let a = f(/* x */);
-   |              ~~~~~~~~~
+LL -     let a = f();
+LL +     let a = f(/* x */);
+   |
 
 error[E0057]: this function takes 1 argument but 2 arguments were supplied
   --> $DIR/E0057.rs:5:13
diff --git a/tests/ui/error-codes/E0060.stderr b/tests/ui/error-codes/E0060.stderr
index aadf1ea93cb..fc52c6fc5ea 100644
--- a/tests/ui/error-codes/E0060.stderr
+++ b/tests/ui/error-codes/E0060.stderr
@@ -11,8 +11,9 @@ LL |     fn printf(_: *const u8, ...) -> u32;
    |        ^^^^^^ -
 help: provide the argument
    |
-LL |     unsafe { printf(/* *const u8 */); }
-   |                    ~~~~~~~~~~~~~~~~~
+LL -     unsafe { printf(); }
+LL +     unsafe { printf(/* *const u8 */); }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0061.stderr b/tests/ui/error-codes/E0061.stderr
index 4a420cd118a..b70d607ebeb 100644
--- a/tests/ui/error-codes/E0061.stderr
+++ b/tests/ui/error-codes/E0061.stderr
@@ -11,8 +11,9 @@ LL | fn f(a: u16, b: &str) {}
    |    ^         -------
 help: provide the argument
    |
-LL |     f(0, /* &str */);
-   |      ~~~~~~~~~~~~~~~
+LL -     f(0);
+LL +     f(0, /* &str */);
+   |
 
 error[E0061]: this function takes 1 argument but 0 arguments were supplied
   --> $DIR/E0061.rs:9:5
@@ -27,8 +28,9 @@ LL | fn f2(a: u16) {}
    |    ^^ ------
 help: provide the argument
    |
-LL |     f2(/* u16 */);
-   |       ~~~~~~~~~~~
+LL -     f2();
+LL +     f2(/* u16 */);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/error-codes/E0121.stderr b/tests/ui/error-codes/E0121.stderr
index 5f5df0fd0ae..b169373f643 100644
--- a/tests/ui/error-codes/E0121.stderr
+++ b/tests/ui/error-codes/E0121.stderr
@@ -15,8 +15,9 @@ LL | static BAR: _ = "test";
    |
 help: replace this with a fully-specified type
    |
-LL | static BAR: &str = "test";
-   |             ~~~~
+LL - static BAR: _ = "test";
+LL + static BAR: &str = "test";
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/error-codes/E0214.stderr b/tests/ui/error-codes/E0214.stderr
index 76b11f30996..71ae62d64e3 100644
--- a/tests/ui/error-codes/E0214.stderr
+++ b/tests/ui/error-codes/E0214.stderr
@@ -6,8 +6,9 @@ LL |     let v: Vec(&str) = vec!["foo"];
    |
 help: use angle brackets instead
    |
-LL |     let v: Vec<&str> = vec!["foo"];
-   |               ~    ~
+LL -     let v: Vec(&str) = vec!["foo"];
+LL +     let v: Vec<&str> = vec!["foo"];
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0221.stderr b/tests/ui/error-codes/E0221.stderr
index 07e7485b67e..a18e91806d7 100644
--- a/tests/ui/error-codes/E0221.stderr
+++ b/tests/ui/error-codes/E0221.stderr
@@ -12,12 +12,14 @@ LL |         let _: Self::A;
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |         let _: <Self as Foo>::A;
-   |                ~~~~~~~~~~~~~~~
+LL -         let _: Self::A;
+LL +         let _: <Self as Foo>::A;
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |         let _: <Self as Bar>::A;
-   |                ~~~~~~~~~~~~~~~
+LL -         let _: Self::A;
+LL +         let _: <Self as Bar>::A;
+   |
 
 error[E0221]: ambiguous associated type `Err` in bounds of `Self`
   --> $DIR/E0221.rs:21:16
@@ -31,8 +33,9 @@ LL |         let _: Self::Err;
    = note: associated type `Err` could derive from `FromStr`
 help: use fully-qualified syntax to disambiguate
    |
-LL |         let _: <Self as My>::Err;
-   |                ~~~~~~~~~~~~~~
+LL -         let _: Self::Err;
+LL +         let _: <Self as My>::Err;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/error-codes/E0259.stderr b/tests/ui/error-codes/E0259.stderr
index 975d1a161a0..08d3deb68d2 100644
--- a/tests/ui/error-codes/E0259.stderr
+++ b/tests/ui/error-codes/E0259.stderr
@@ -10,7 +10,8 @@ LL | extern crate test as alloc;
    = note: `alloc` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate test as other_alloc;
+LL - extern crate test as alloc;
+LL + extern crate test as other_alloc;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/error-codes/E0260.stderr b/tests/ui/error-codes/E0260.stderr
index 35698c65359..cb47b77904a 100644
--- a/tests/ui/error-codes/E0260.stderr
+++ b/tests/ui/error-codes/E0260.stderr
@@ -10,7 +10,8 @@ LL | mod alloc {
    = note: `alloc` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate alloc as other_alloc;
+LL - extern crate alloc;
+LL + extern crate alloc as other_alloc;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/error-codes/E0283.stderr b/tests/ui/error-codes/E0283.stderr
index 381eca5f2a4..29baae5f133 100644
--- a/tests/ui/error-codes/E0283.stderr
+++ b/tests/ui/error-codes/E0283.stderr
@@ -30,8 +30,9 @@ LL | impl Into<u32> for Impl {
              where U: From<T>;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     let bar = <Impl as Into<T>>::into(foo_impl) * 1u32;
-   |               ++++++++++++++++++++++++        ~
+LL -     let bar = foo_impl.into() * 1u32;
+LL +     let bar = <Impl as Into<T>>::into(foo_impl) * 1u32;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/error-codes/E0423.stderr b/tests/ui/error-codes/E0423.stderr
index dd7a5b034c5..e50b8bd820c 100644
--- a/tests/ui/error-codes/E0423.stderr
+++ b/tests/ui/error-codes/E0423.stderr
@@ -51,12 +51,14 @@ LL | fn foo() {
    |
 help: use struct literal syntax instead
    |
-LL |     let f = Foo { a: val };
-   |             ~~~~~~~~~~~~~~
+LL -     let f = Foo();
+LL +     let f = Foo { a: val };
+   |
 help: a function with a similar name exists (notice the capitalization difference)
    |
-LL |     let f = foo();
-   |             ~~~
+LL -     let f = Foo();
+LL +     let f = foo();
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/error-codes/E0435.stderr b/tests/ui/error-codes/E0435.stderr
index 1ebb9976394..13187472e60 100644
--- a/tests/ui/error-codes/E0435.stderr
+++ b/tests/ui/error-codes/E0435.stderr
@@ -6,8 +6,9 @@ LL |     let _: [u8; foo];
    |
 help: consider using `const` instead of `let`
    |
-LL |     const foo: usize = 42;
-   |     ~~~~~
+LL -     let foo: usize = 42;
+LL +     const foo: usize = 42;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0516.stderr b/tests/ui/error-codes/E0516.stderr
index 62e70a4668d..f4127678d5b 100644
--- a/tests/ui/error-codes/E0516.stderr
+++ b/tests/ui/error-codes/E0516.stderr
@@ -6,8 +6,9 @@ LL |     let x: typeof(92) = 92;
    |
 help: consider replacing `typeof(...)` with an actual type
    |
-LL |     let x: i32 = 92;
-   |            ~~~
+LL -     let x: typeof(92) = 92;
+LL +     let x: i32 = 92;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-codes/E0637.stderr b/tests/ui/error-codes/E0637.stderr
index d9db89ddb0c..95a5a58ab85 100644
--- a/tests/ui/error-codes/E0637.stderr
+++ b/tests/ui/error-codes/E0637.stderr
@@ -13,8 +13,9 @@ LL | fn underscore_lifetime<'_>(str1: &'_ str, str2: &'_ str) -> &'_ str {
    = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `str1` or `str2`
 help: consider introducing a named lifetime parameter
    |
-LL | fn underscore_lifetime<'a, '_>(str1: &'a str, str2: &'a str) -> &'a str {
-   |                        +++            ~~             ~~          ~~
+LL - fn underscore_lifetime<'_>(str1: &'_ str, str2: &'_ str) -> &'_ str {
+LL + fn underscore_lifetime<'a, '_>(str1: &'a str, str2: &'a str) -> &'a str {
+   |
 
 error[E0637]: `&` without an explicit lifetime name cannot be used here
   --> $DIR/E0637.rs:13:13
diff --git a/tests/ui/error-codes/E0642.stderr b/tests/ui/error-codes/E0642.stderr
index dd9e28ad492..97309e95b6b 100644
--- a/tests/ui/error-codes/E0642.stderr
+++ b/tests/ui/error-codes/E0642.stderr
@@ -6,8 +6,9 @@ LL |     fn foo((x, y): (i32, i32));
    |
 help: give this argument a name or use an underscore to ignore it
    |
-LL |     fn foo(_: (i32, i32));
-   |            ~
+LL -     fn foo((x, y): (i32, i32));
+LL +     fn foo(_: (i32, i32));
+   |
 
 error[E0642]: patterns aren't allowed in methods without bodies
   --> $DIR/E0642.rs:11:12
@@ -17,8 +18,9 @@ LL |     fn bar((x, y): (i32, i32)) {}
    |
 help: give this argument a name or use an underscore to ignore it
    |
-LL |     fn bar(_: (i32, i32)) {}
-   |            ~
+LL -     fn bar((x, y): (i32, i32)) {}
+LL +     fn bar(_: (i32, i32)) {}
+   |
 
 error[E0642]: patterns aren't allowed in methods without bodies
   --> $DIR/E0642.rs:13:15
@@ -28,8 +30,9 @@ LL |     fn method(S { .. }: S) {}
    |
 help: give this argument a name or use an underscore to ignore it
    |
-LL |     fn method(_: S) {}
-   |               ~
+LL -     fn method(S { .. }: S) {}
+LL +     fn method(_: S) {}
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/error-codes/E0746.stderr b/tests/ui/error-codes/E0746.stderr
index ec785561415..07d6b285f76 100644
--- a/tests/ui/error-codes/E0746.stderr
+++ b/tests/ui/error-codes/E0746.stderr
@@ -6,8 +6,9 @@ LL | fn foo() -> dyn Trait { Struct }
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn foo() -> impl Trait { Struct }
-   |             ~~~~
+LL - fn foo() -> dyn Trait { Struct }
+LL + fn foo() -> impl Trait { Struct }
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL | fn foo() -> Box<dyn Trait> { Box::new(Struct) }
@@ -21,8 +22,9 @@ LL | fn bar() -> dyn Trait {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn bar() -> impl Trait {
-   |             ~~~~
+LL - fn bar() -> dyn Trait {
+LL + fn bar() -> impl Trait {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn bar() -> Box<dyn Trait> {
diff --git a/tests/ui/error-codes/ex-E0612.stderr b/tests/ui/error-codes/ex-E0612.stderr
index 23c1697b9b2..54451d3d452 100644
--- a/tests/ui/error-codes/ex-E0612.stderr
+++ b/tests/ui/error-codes/ex-E0612.stderr
@@ -6,8 +6,9 @@ LL |    y.1;
    |
 help: a field with a similar name exists
    |
-LL |    y.0;
-   |      ~
+LL -    y.1;
+LL +    y.0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/error-festival.stderr b/tests/ui/error-festival.stderr
index f71fa7e685c..9db95363791 100644
--- a/tests/ui/error-festival.stderr
+++ b/tests/ui/error-festival.stderr
@@ -6,8 +6,9 @@ LL |     y = 2;
    |
 help: a local variable with a similar name exists
    |
-LL |     x = 2;
-   |     ~
+LL -     y = 2;
+LL +     x = 2;
+   |
 help: you might have meant to introduce a new binding
    |
 LL |     let y = 2;
@@ -76,8 +77,9 @@ LL |     let x_is_nonzero = x as bool;
    |
 help: compare with zero instead
    |
-LL |     let x_is_nonzero = x != 0;
-   |                          ~~~~
+LL -     let x_is_nonzero = x as bool;
+LL +     let x_is_nonzero = x != 0;
+   |
 
 error[E0606]: casting `&u8` as `u32` is invalid
   --> $DIR/error-festival.rs:37:18
diff --git a/tests/ui/explicit-tail-calls/become-operator.stderr b/tests/ui/explicit-tail-calls/become-operator.stderr
index 26e4343faae..9741fbfca6d 100644
--- a/tests/ui/explicit-tail-calls/become-operator.stderr
+++ b/tests/ui/explicit-tail-calls/become-operator.stderr
@@ -16,8 +16,9 @@ LL |     become a + b;
    |
 help: try using the method directly
    |
-LL |     become (a).add(b);
-   |            + ~~~~~~ +
+LL -     become a + b;
+LL +     become (a).add(b);
+   |
 
 error: `become` does not support operators
   --> $DIR/become-operator.rs:19:12
@@ -37,8 +38,9 @@ LL |     become !x;
    |
 help: try using the method directly
    |
-LL |     become (x).not();
-   |            ~ +++++++
+LL -     become !x;
+LL +     become (x).not();
+   |
 
 error: `become` does not support operators
   --> $DIR/become-operator.rs:27:12
@@ -68,8 +70,9 @@ LL |     become *b ^= 1;
    |
 help: try using the method directly
    |
-LL |     become (*b).bitxor_assign(1);
-   |            +  ~~~~~~~~~~~~~~~~ +
+LL -     become *b ^= 1;
+LL +     become (*b).bitxor_assign(1);
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/explicit/explicit-call-to-dtor.stderr b/tests/ui/explicit/explicit-call-to-dtor.stderr
index 6f40f3998a9..47d2823c82d 100644
--- a/tests/ui/explicit/explicit-call-to-dtor.stderr
+++ b/tests/ui/explicit/explicit-call-to-dtor.stderr
@@ -6,8 +6,9 @@ LL |     x.drop();
    |
 help: consider using `drop` function
    |
-LL |     drop(x);
-   |     +++++ ~
+LL -     x.drop();
+LL +     drop(x);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr b/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr
index 13b6ee9987e..9f98fb5f26c 100644
--- a/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr
+++ b/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr
@@ -6,8 +6,9 @@ LL |         self.drop();
    |
 help: consider using `drop` function
    |
-LL |         drop(self);
-   |         +++++    ~
+LL -         self.drop();
+LL +         drop(self);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/expr/if/if-branch-types.stderr b/tests/ui/expr/if/if-branch-types.stderr
index 0e86a24f31b..587d2f10a8c 100644
--- a/tests/ui/expr/if/if-branch-types.stderr
+++ b/tests/ui/expr/if/if-branch-types.stderr
@@ -8,8 +8,9 @@ LL |     let x = if true { 10i32 } else { 10u32 };
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     let x = if true { 10i32 } else { 10i32 };
-   |                                        ~~~
+LL -     let x = if true { 10i32 } else { 10u32 };
+LL +     let x = if true { 10i32 } else { 10i32 };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/expr/if/if-else-type-mismatch.stderr b/tests/ui/expr/if/if-else-type-mismatch.stderr
index f1fffdb1e7e..1cf94c98800 100644
--- a/tests/ui/expr/if/if-else-type-mismatch.stderr
+++ b/tests/ui/expr/if/if-else-type-mismatch.stderr
@@ -13,8 +13,9 @@ LL | |     };
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |         2i32
-   |          ~~~
+LL -         2u32
+LL +         2i32
+   |
 
 error[E0308]: `if` and `else` have incompatible types
   --> $DIR/if-else-type-mismatch.rs:8:38
@@ -26,8 +27,9 @@ LL |     let _ = if true { 42i32 } else { 42u32 };
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     let _ = if true { 42i32 } else { 42i32 };
-   |                                        ~~~
+LL -     let _ = if true { 42i32 } else { 42u32 };
+LL +     let _ = if true { 42i32 } else { 42i32 };
+   |
 
 error[E0308]: `if` and `else` have incompatible types
   --> $DIR/if-else-type-mismatch.rs:13:9
diff --git a/tests/ui/expr/issue-22933-2.stderr b/tests/ui/expr/issue-22933-2.stderr
index dadc3121362..07f095f643e 100644
--- a/tests/ui/expr/issue-22933-2.stderr
+++ b/tests/ui/expr/issue-22933-2.stderr
@@ -9,8 +9,9 @@ LL |     ApplePie = Delicious::Apple as isize | Delicious::PIE as isize,
    |
 help: there is a variant with a similar name
    |
-LL |     ApplePie = Delicious::Apple as isize | Delicious::Pie as isize,
-   |                                                       ~~~
+LL -     ApplePie = Delicious::Apple as isize | Delicious::PIE as isize,
+LL +     ApplePie = Delicious::Apple as isize | Delicious::Pie as isize,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/extern/extern-const.stderr b/tests/ui/extern/extern-const.stderr
index 441495866cd..c48eca8c36d 100644
--- a/tests/ui/extern/extern-const.stderr
+++ b/tests/ui/extern/extern-const.stderr
@@ -7,8 +7,9 @@ LL |     const rust_dbg_static_mut: c_int;
    = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
 help: try using a static value
    |
-LL |     static rust_dbg_static_mut: c_int;
-   |     ~~~~~~
+LL -     const rust_dbg_static_mut: c_int;
+LL +     static rust_dbg_static_mut: c_int;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/extern/extern-crate-rename.stderr b/tests/ui/extern/extern-crate-rename.stderr
index 43f6e56ab0e..4d4a585de60 100644
--- a/tests/ui/extern/extern-crate-rename.stderr
+++ b/tests/ui/extern/extern-crate-rename.stderr
@@ -9,8 +9,9 @@ LL | extern crate m2 as m1;
    = note: `m1` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate m2 as other_m1;
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - extern crate m2 as m1;
+LL + extern crate m2 as other_m1;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/extern/extern-crate-visibility.stderr b/tests/ui/extern/extern-crate-visibility.stderr
index b239727092a..c037da41b5e 100644
--- a/tests/ui/extern/extern-crate-visibility.stderr
+++ b/tests/ui/extern/extern-crate-visibility.stderr
@@ -11,8 +11,9 @@ LL |     extern crate core;
    |     ^^^^^^^^^^^^^^^^^^
 help: consider importing this module instead
    |
-LL | use std::cell;
-   |     ~~~~~~~~~
+LL - use foo::core::cell;
+LL + use std::cell;
+   |
 
 error[E0603]: crate import `core` is private
   --> $DIR/extern-crate-visibility.rs:9:10
@@ -27,8 +28,9 @@ LL |     extern crate core;
    |     ^^^^^^^^^^^^^^^^^^
 help: consider importing this struct instead
    |
-LL |     std::cell::Cell::new(0);
-   |     ~~~~~~~~~~~~~~~
+LL -     foo::core::cell::Cell::new(0);
+LL +     std::cell::Cell::new(0);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/extern/fictional-abi.rs b/tests/ui/extern/fictional-abi.rs
new file mode 100644
index 00000000000..60b24f8856e
--- /dev/null
+++ b/tests/ui/extern/fictional-abi.rs
@@ -0,0 +1,3 @@
+#![crate_type = "lib"]
+
+pub extern "fictional" fn lol() {} //~ ERROR: invalid ABI
diff --git a/tests/ui/abi/removed-wasm-abi.stderr b/tests/ui/extern/fictional-abi.stderr
index 6007c4e2580..9784a57776f 100644
--- a/tests/ui/abi/removed-wasm-abi.stderr
+++ b/tests/ui/extern/fictional-abi.stderr
@@ -1,11 +1,10 @@
-error[E0703]: invalid ABI: found `wasm`
-  --> $DIR/removed-wasm-abi.rs:1:8
+error[E0703]: invalid ABI: found `fictional`
+  --> $DIR/fictional-abi.rs:3:12
    |
-LL | extern "wasm" fn test() {}
-   |        ^^^^^^ invalid ABI
+LL | pub extern "fictional" fn lol() {}
+   |            ^^^^^^^^^^^ invalid ABI
    |
    = note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
-   = note: non-standard wasm ABI is no longer supported
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/extern/issue-18819.stderr b/tests/ui/extern/issue-18819.stderr
index 6de0ebfe9ae..566bf6a1f64 100644
--- a/tests/ui/extern/issue-18819.stderr
+++ b/tests/ui/extern/issue-18819.stderr
@@ -22,8 +22,9 @@ LL |     print_x(&X);
    |             +
 help: provide the argument
    |
-LL |     print_x(/* &dyn Foo<Item = bool> */, /* &str */);
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     print_x(X);
+LL +     print_x(/* &dyn Foo<Item = bool> */, /* &str */);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/extern/not-in-block.stderr b/tests/ui/extern/not-in-block.stderr
index f86c279a234..f35d98e9948 100644
--- a/tests/ui/extern/not-in-block.stderr
+++ b/tests/ui/extern/not-in-block.stderr
@@ -6,12 +6,14 @@ LL | extern fn none_fn(x: bool) -> i32;
    |
 help: provide a definition for the function
    |
-LL | extern fn none_fn(x: bool) -> i32 { <body> }
-   |                                   ~~~~~~~~~~
+LL - extern fn none_fn(x: bool) -> i32;
+LL + extern fn none_fn(x: bool) -> i32 { <body> }
+   |
 help: if you meant to declare an externally defined function, use an `extern` block
    |
-LL | extern { fn none_fn(x: bool) -> i32; }
-   | ~~~~~~~~                             +
+LL - extern fn none_fn(x: bool) -> i32;
+LL + extern { fn none_fn(x: bool) -> i32; }
+   |
 
 error: free function without a body
   --> $DIR/not-in-block.rs:6:1
@@ -21,12 +23,14 @@ LL | extern "C" fn c_fn(x: bool) -> i32;
    |
 help: provide a definition for the function
    |
-LL | extern "C" fn c_fn(x: bool) -> i32 { <body> }
-   |                                    ~~~~~~~~~~
+LL - extern "C" fn c_fn(x: bool) -> i32;
+LL + extern "C" fn c_fn(x: bool) -> i32 { <body> }
+   |
 help: if you meant to declare an externally defined function, use an `extern` block
    |
-LL | extern "C" { fn c_fn(x: bool) -> i32; }
-   | ~~~~~~~~~~~~                          +
+LL - extern "C" fn c_fn(x: bool) -> i32;
+LL + extern "C" { fn c_fn(x: bool) -> i32; }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs
index f37c5335deb..5386628a8e0 100644
--- a/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs
+++ b/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs
@@ -9,43 +9,43 @@ trait Sized { }
 // feature gate is not used.
 
 extern "avr-non-blocking-interrupt" fn fu() {}
-//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+//~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
 extern "avr-interrupt" fn f() {}
-//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+//~^ ERROR extern "avr-interrupt" ABI is experimental
 
 trait T {
     extern "avr-interrupt" fn m();
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-interrupt" ABI is experimental
     extern "avr-non-blocking-interrupt" fn mu();
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
 
     extern "avr-interrupt" fn dm() {}
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-interrupt" ABI is experimental
     extern "avr-non-blocking-interrupt" fn dmu() {}
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
 }
 
 struct S;
 impl T for S {
     extern "avr-interrupt" fn m() {}
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-interrupt" ABI is experimental
     extern "avr-non-blocking-interrupt" fn mu() {}
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
 }
 
 impl S {
     extern "avr-interrupt" fn im() {}
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-interrupt" ABI is experimental
     extern "avr-non-blocking-interrupt" fn imu() {}
-    //~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+    //~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
 }
 
 type TA = extern "avr-interrupt" fn();
-//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+//~^ ERROR extern "avr-interrupt" ABI is experimental
 type TAU = extern "avr-non-blocking-interrupt" fn();
-//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+//~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
 
 extern "avr-interrupt" {}
-//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+//~^ ERROR extern "avr-interrupt" ABI is experimental
 extern "avr-non-blocking-interrupt" {}
-//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
+//~^ ERROR extern "avr-non-blocking-interrupt" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr
index c6786699de1..d9f3c3adc7f 100644
--- a/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr
@@ -1,4 +1,4 @@
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:11:8
    |
 LL | extern "avr-non-blocking-interrupt" fn fu() {}
@@ -8,7 +8,7 @@ LL | extern "avr-non-blocking-interrupt" fn fu() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:13:8
    |
 LL | extern "avr-interrupt" fn f() {}
@@ -18,7 +18,7 @@ LL | extern "avr-interrupt" fn f() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:17:12
    |
 LL |     extern "avr-interrupt" fn m();
@@ -28,7 +28,7 @@ LL |     extern "avr-interrupt" fn m();
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:19:12
    |
 LL |     extern "avr-non-blocking-interrupt" fn mu();
@@ -38,7 +38,7 @@ LL |     extern "avr-non-blocking-interrupt" fn mu();
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:22:12
    |
 LL |     extern "avr-interrupt" fn dm() {}
@@ -48,7 +48,7 @@ LL |     extern "avr-interrupt" fn dm() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:24:12
    |
 LL |     extern "avr-non-blocking-interrupt" fn dmu() {}
@@ -58,7 +58,7 @@ LL |     extern "avr-non-blocking-interrupt" fn dmu() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:30:12
    |
 LL |     extern "avr-interrupt" fn m() {}
@@ -68,7 +68,7 @@ LL |     extern "avr-interrupt" fn m() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:32:12
    |
 LL |     extern "avr-non-blocking-interrupt" fn mu() {}
@@ -78,7 +78,7 @@ LL |     extern "avr-non-blocking-interrupt" fn mu() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:37:12
    |
 LL |     extern "avr-interrupt" fn im() {}
@@ -88,7 +88,7 @@ LL |     extern "avr-interrupt" fn im() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:39:12
    |
 LL |     extern "avr-non-blocking-interrupt" fn imu() {}
@@ -98,7 +98,7 @@ LL |     extern "avr-non-blocking-interrupt" fn imu() {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:43:18
    |
 LL | type TA = extern "avr-interrupt" fn();
@@ -108,7 +108,7 @@ LL | type TA = extern "avr-interrupt" fn();
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:45:19
    |
 LL | type TAU = extern "avr-non-blocking-interrupt" fn();
@@ -118,7 +118,7 @@ LL | type TAU = extern "avr-non-blocking-interrupt" fn();
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:48:8
    |
 LL | extern "avr-interrupt" {}
@@ -128,7 +128,7 @@ LL | extern "avr-interrupt" {}
    = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "avr-non-blocking-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-avr-interrupt.rs:50:8
    |
 LL | extern "avr-non-blocking-interrupt" {}
diff --git a/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs
index b0fb4c414d4..bb69a638cee 100644
--- a/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs
+++ b/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs
@@ -6,29 +6,29 @@
 trait Sized { }
 
 extern "msp430-interrupt" fn f() {}
-//~^ ERROR msp430-interrupt ABI is experimental
+//~^ ERROR "msp430-interrupt" ABI is experimental
 
 trait T {
     extern "msp430-interrupt" fn m();
-    //~^ ERROR msp430-interrupt ABI is experimental
+    //~^ ERROR "msp430-interrupt" ABI is experimental
 
     extern "msp430-interrupt" fn dm() {}
-    //~^ ERROR msp430-interrupt ABI is experimental
+    //~^ ERROR "msp430-interrupt" ABI is experimental
 }
 
 struct S;
 impl T for S {
     extern "msp430-interrupt" fn m() {}
-    //~^ ERROR msp430-interrupt ABI is experimental
+    //~^ ERROR "msp430-interrupt" ABI is experimental
 }
 
 impl S {
     extern "msp430-interrupt" fn im() {}
-    //~^ ERROR msp430-interrupt ABI is experimental
+    //~^ ERROR "msp430-interrupt" ABI is experimental
 }
 
 type TA = extern "msp430-interrupt" fn();
-//~^ ERROR msp430-interrupt ABI is experimental
+//~^ ERROR "msp430-interrupt" ABI is experimental
 
 extern "msp430-interrupt" {}
-//~^ ERROR msp430-interrupt ABI is experimental
+//~^ ERROR "msp430-interrupt" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr
index 5dacc86dcc5..21ddbf7a86d 100644
--- a/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr
@@ -1,4 +1,4 @@
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:8:8
    |
 LL | extern "msp430-interrupt" fn f() {}
@@ -8,7 +8,7 @@ LL | extern "msp430-interrupt" fn f() {}
    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:12:12
    |
 LL |     extern "msp430-interrupt" fn m();
@@ -18,7 +18,7 @@ LL |     extern "msp430-interrupt" fn m();
    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:15:12
    |
 LL |     extern "msp430-interrupt" fn dm() {}
@@ -28,7 +28,7 @@ LL |     extern "msp430-interrupt" fn dm() {}
    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:21:12
    |
 LL |     extern "msp430-interrupt" fn m() {}
@@ -38,7 +38,7 @@ LL |     extern "msp430-interrupt" fn m() {}
    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:26:12
    |
 LL |     extern "msp430-interrupt" fn im() {}
@@ -48,7 +48,7 @@ LL |     extern "msp430-interrupt" fn im() {}
    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:30:18
    |
 LL | type TA = extern "msp430-interrupt" fn();
@@ -58,7 +58,7 @@ LL | type TA = extern "msp430-interrupt" fn();
    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: msp430-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "msp430-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-msp430-interrupt.rs:33:8
    |
 LL | extern "msp430-interrupt" {}
diff --git a/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.rs
index 29820f8877d..6f4989fbd9f 100644
--- a/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.rs
+++ b/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.rs
@@ -9,25 +9,25 @@ trait Sized {}
 // feature gate is not used.
 
 extern "riscv-interrupt-m" fn f() {}
-//~^ ERROR riscv-interrupt ABIs are experimental
+//~^ ERROR "riscv-interrupt-m" ABI is experimental
 extern "riscv-interrupt-s" fn f_s() {}
-//~^ ERROR riscv-interrupt ABIs are experimental
+//~^ ERROR "riscv-interrupt-s" ABI is experimental
 
 trait T {
     extern "riscv-interrupt-m" fn m();
-    //~^ ERROR riscv-interrupt ABIs are experimental
+    //~^ ERROR "riscv-interrupt-m" ABI is experimental
 }
 
 struct S;
 impl T for S {
     extern "riscv-interrupt-m" fn m() {}
-    //~^ ERROR riscv-interrupt ABIs are experimental
+    //~^ ERROR "riscv-interrupt-m" ABI is experimental
 }
 
 impl S {
     extern "riscv-interrupt-m" fn im() {}
-    //~^ ERROR riscv-interrupt ABIs are experimental
+    //~^ ERROR "riscv-interrupt-m" ABI is experimental
 }
 
 type TA = extern "riscv-interrupt-m" fn();
-//~^ ERROR riscv-interrupt ABIs are experimental
+//~^ ERROR "riscv-interrupt-m" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.stderr
index 6b7853a320b..3c9e99aa1b9 100644
--- a/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi-riscv-interrupt.stderr
@@ -1,4 +1,4 @@
-error[E0658]: riscv-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "riscv-interrupt-m" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-riscv-interrupt.rs:11:8
    |
 LL | extern "riscv-interrupt-m" fn f() {}
@@ -8,7 +8,7 @@ LL | extern "riscv-interrupt-m" fn f() {}
    = help: add `#![feature(abi_riscv_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: riscv-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "riscv-interrupt-s" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-riscv-interrupt.rs:13:8
    |
 LL | extern "riscv-interrupt-s" fn f_s() {}
@@ -18,7 +18,7 @@ LL | extern "riscv-interrupt-s" fn f_s() {}
    = help: add `#![feature(abi_riscv_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: riscv-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "riscv-interrupt-m" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-riscv-interrupt.rs:17:12
    |
 LL |     extern "riscv-interrupt-m" fn m();
@@ -28,7 +28,7 @@ LL |     extern "riscv-interrupt-m" fn m();
    = help: add `#![feature(abi_riscv_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: riscv-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "riscv-interrupt-m" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-riscv-interrupt.rs:23:12
    |
 LL |     extern "riscv-interrupt-m" fn m() {}
@@ -38,7 +38,7 @@ LL |     extern "riscv-interrupt-m" fn m() {}
    = help: add `#![feature(abi_riscv_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: riscv-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "riscv-interrupt-m" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-riscv-interrupt.rs:28:12
    |
 LL |     extern "riscv-interrupt-m" fn im() {}
@@ -48,7 +48,7 @@ LL |     extern "riscv-interrupt-m" fn im() {}
    = help: add `#![feature(abi_riscv_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: riscv-interrupt ABIs are experimental and subject to change
+error[E0658]: the extern "riscv-interrupt-m" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-riscv-interrupt.rs:32:18
    |
 LL | type TA = extern "riscv-interrupt-m" fn();
diff --git a/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs
index 812ca12c7c3..93c59364f10 100644
--- a/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs
+++ b/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs
@@ -5,24 +5,24 @@
 #[lang="sized"]
 trait Sized { }
 
-extern "x86-interrupt" fn f7() {} //~ ERROR x86-interrupt ABI is experimental
+extern "x86-interrupt" fn f7() {} //~ ERROR "x86-interrupt" ABI is experimental
 trait Tr {
-    extern "x86-interrupt" fn m7(); //~ ERROR x86-interrupt ABI is experimental
-    extern "x86-interrupt" fn dm7() {} //~ ERROR x86-interrupt ABI is experimental
+    extern "x86-interrupt" fn m7(); //~ ERROR "x86-interrupt" ABI is experimental
+    extern "x86-interrupt" fn dm7() {} //~ ERROR "x86-interrupt" ABI is experimental
 }
 
 struct S;
 
 // Methods in trait impl
 impl Tr for S {
-    extern "x86-interrupt" fn m7() {} //~ ERROR x86-interrupt ABI is experimental
+    extern "x86-interrupt" fn m7() {} //~ ERROR "x86-interrupt" ABI is experimental
 }
 
 // Methods in inherent impl
 impl S {
-    extern "x86-interrupt" fn im7() {} //~ ERROR x86-interrupt ABI is experimental
+    extern "x86-interrupt" fn im7() {} //~ ERROR "x86-interrupt" ABI is experimental
 }
 
-type A7 = extern "x86-interrupt" fn(); //~ ERROR x86-interrupt ABI is experimental
+type A7 = extern "x86-interrupt" fn(); //~ ERROR "x86-interrupt" ABI is experimental
 
-extern "x86-interrupt" {} //~ ERROR x86-interrupt ABI is experimental
+extern "x86-interrupt" {} //~ ERROR "x86-interrupt" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr
index 860005cac34..231cf207c86 100644
--- a/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr
@@ -1,4 +1,4 @@
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:8:8
    |
 LL | extern "x86-interrupt" fn f7() {}
@@ -8,7 +8,7 @@ LL | extern "x86-interrupt" fn f7() {}
    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:10:12
    |
 LL |     extern "x86-interrupt" fn m7();
@@ -18,7 +18,7 @@ LL |     extern "x86-interrupt" fn m7();
    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:11:12
    |
 LL |     extern "x86-interrupt" fn dm7() {}
@@ -28,7 +28,7 @@ LL |     extern "x86-interrupt" fn dm7() {}
    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:18:12
    |
 LL |     extern "x86-interrupt" fn m7() {}
@@ -38,7 +38,7 @@ LL |     extern "x86-interrupt" fn m7() {}
    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:23:12
    |
 LL |     extern "x86-interrupt" fn im7() {}
@@ -48,7 +48,7 @@ LL |     extern "x86-interrupt" fn im7() {}
    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:26:18
    |
 LL | type A7 = extern "x86-interrupt" fn();
@@ -58,7 +58,7 @@ LL | type A7 = extern "x86-interrupt" fn();
    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: x86-interrupt ABI is experimental and subject to change
+error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi-x86-interrupt.rs:28:8
    |
 LL | extern "x86-interrupt" {}
diff --git a/tests/ui/feature-gates/feature-gate-abi.rs b/tests/ui/feature-gates/feature-gate-abi.rs
index 3aa430e736f..7ab05889c20 100644
--- a/tests/ui/feature-gates/feature-gate-abi.rs
+++ b/tests/ui/feature-gates/feature-gate-abi.rs
@@ -11,49 +11,49 @@ trait Sized { }
 trait Tuple { }
 
 // Functions
-extern "rust-intrinsic" fn f1() {} //~ ERROR intrinsics are subject to change
+extern "rust-intrinsic" fn f1() {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                    //~^ ERROR intrinsic must be in
-extern "rust-intrinsic" fn f2() {} //~ ERROR intrinsics are subject to change
+extern "rust-intrinsic" fn f2() {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                        //~^ ERROR intrinsic must be in
-extern "rust-call" fn f4(_: ()) {} //~ ERROR rust-call ABI is subject to change
+extern "rust-call" fn f4(_: ()) {} //~ ERROR extern "rust-call" ABI is experimental and subject to change
 
 // Methods in trait definition
 trait Tr {
-    extern "rust-intrinsic" fn m1(); //~ ERROR intrinsics are subject to change
+    extern "rust-intrinsic" fn m1(); //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                      //~^ ERROR intrinsic must be in
-    extern "rust-intrinsic" fn m2(); //~ ERROR intrinsics are subject to change
+    extern "rust-intrinsic" fn m2(); //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                          //~^ ERROR intrinsic must be in
-    extern "rust-call" fn m4(_: ()); //~ ERROR rust-call ABI is subject to change
+    extern "rust-call" fn m4(_: ()); //~ ERROR extern "rust-call" ABI is experimental and subject to change
 
-    extern "rust-call" fn dm4(_: ()) {} //~ ERROR rust-call ABI is subject to change
+    extern "rust-call" fn dm4(_: ()) {} //~ ERROR extern "rust-call" ABI is experimental and subject to change
 }
 
 struct S;
 
 // Methods in trait impl
 impl Tr for S {
-    extern "rust-intrinsic" fn m1() {} //~ ERROR intrinsics are subject to change
+    extern "rust-intrinsic" fn m1() {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                        //~^ ERROR intrinsic must be in
-    extern "rust-intrinsic" fn m2() {} //~ ERROR intrinsics are subject to change
+    extern "rust-intrinsic" fn m2() {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                            //~^ ERROR intrinsic must be in
-    extern "rust-call" fn m4(_: ()) {} //~ ERROR rust-call ABI is subject to change
+    extern "rust-call" fn m4(_: ()) {} //~ ERROR extern "rust-call" ABI is experimental and subject to change
 }
 
 // Methods in inherent impl
 impl S {
-    extern "rust-intrinsic" fn im1() {} //~ ERROR intrinsics are subject to change
+    extern "rust-intrinsic" fn im1() {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                         //~^ ERROR intrinsic must be in
-    extern "rust-intrinsic" fn im2() {} //~ ERROR intrinsics are subject to change
+    extern "rust-intrinsic" fn im2() {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
                                             //~^ ERROR intrinsic must be in
-    extern "rust-call" fn im4(_: ()) {} //~ ERROR rust-call ABI is subject to change
+    extern "rust-call" fn im4(_: ()) {} //~ ERROR extern "rust-call" ABI is experimental and subject to change
 }
 
 // Function pointer types
-type A1 = extern "rust-intrinsic" fn(); //~ ERROR intrinsics are subject to change
-type A2 = extern "rust-intrinsic" fn(); //~ ERROR intrinsics are subject to change
-type A4 = extern "rust-call" fn(_: ()); //~ ERROR rust-call ABI is subject to change
+type A1 = extern "rust-intrinsic" fn(); //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
+type A2 = extern "rust-intrinsic" fn(); //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
+type A4 = extern "rust-call" fn(_: ()); //~ ERROR extern "rust-call" ABI is experimental and subject to change
 
 // Foreign modules
-extern "rust-intrinsic" {} //~ ERROR intrinsics are subject to change
-extern "rust-intrinsic" {} //~ ERROR intrinsics are subject to change
-extern "rust-call" {} //~ ERROR rust-call ABI is subject to change
+extern "rust-intrinsic" {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
+extern "rust-intrinsic" {} //~ ERROR extern "rust-intrinsic" ABI is an implementation detail
+extern "rust-call" {} //~ ERROR extern "rust-call" ABI is experimental and subject to change
diff --git a/tests/ui/feature-gates/feature-gate-abi.stderr b/tests/ui/feature-gates/feature-gate-abi.stderr
index dbdfa7b275d..70ec64e5135 100644
--- a/tests/ui/feature-gates/feature-gate-abi.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi.stderr
@@ -1,4 +1,4 @@
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:14:8
    |
 LL | extern "rust-intrinsic" fn f1() {}
@@ -7,7 +7,7 @@ LL | extern "rust-intrinsic" fn f1() {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:16:8
    |
 LL | extern "rust-intrinsic" fn f2() {}
@@ -16,7 +16,7 @@ LL | extern "rust-intrinsic" fn f2() {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:18:8
    |
 LL | extern "rust-call" fn f4(_: ()) {}
@@ -26,7 +26,7 @@ LL | extern "rust-call" fn f4(_: ()) {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:22:12
    |
 LL |     extern "rust-intrinsic" fn m1();
@@ -35,7 +35,7 @@ LL |     extern "rust-intrinsic" fn m1();
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:24:12
    |
 LL |     extern "rust-intrinsic" fn m2();
@@ -44,7 +44,7 @@ LL |     extern "rust-intrinsic" fn m2();
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:26:12
    |
 LL |     extern "rust-call" fn m4(_: ());
@@ -54,7 +54,7 @@ LL |     extern "rust-call" fn m4(_: ());
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:28:12
    |
 LL |     extern "rust-call" fn dm4(_: ()) {}
@@ -64,7 +64,7 @@ LL |     extern "rust-call" fn dm4(_: ()) {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:35:12
    |
 LL |     extern "rust-intrinsic" fn m1() {}
@@ -73,7 +73,7 @@ LL |     extern "rust-intrinsic" fn m1() {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:37:12
    |
 LL |     extern "rust-intrinsic" fn m2() {}
@@ -82,7 +82,7 @@ LL |     extern "rust-intrinsic" fn m2() {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:39:12
    |
 LL |     extern "rust-call" fn m4(_: ()) {}
@@ -92,7 +92,7 @@ LL |     extern "rust-call" fn m4(_: ()) {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:44:12
    |
 LL |     extern "rust-intrinsic" fn im1() {}
@@ -101,7 +101,7 @@ LL |     extern "rust-intrinsic" fn im1() {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:46:12
    |
 LL |     extern "rust-intrinsic" fn im2() {}
@@ -110,7 +110,7 @@ LL |     extern "rust-intrinsic" fn im2() {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:48:12
    |
 LL |     extern "rust-call" fn im4(_: ()) {}
@@ -120,7 +120,7 @@ LL |     extern "rust-call" fn im4(_: ()) {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:52:18
    |
 LL | type A1 = extern "rust-intrinsic" fn();
@@ -129,7 +129,7 @@ LL | type A1 = extern "rust-intrinsic" fn();
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:53:18
    |
 LL | type A2 = extern "rust-intrinsic" fn();
@@ -138,7 +138,7 @@ LL | type A2 = extern "rust-intrinsic" fn();
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:54:18
    |
 LL | type A4 = extern "rust-call" fn(_: ());
@@ -148,7 +148,7 @@ LL | type A4 = extern "rust-call" fn(_: ());
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:57:8
    |
 LL | extern "rust-intrinsic" {}
@@ -157,7 +157,7 @@ LL | extern "rust-intrinsic" {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi.rs:58:8
    |
 LL | extern "rust-intrinsic" {}
@@ -166,7 +166,7 @@ LL | extern "rust-intrinsic" {}
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi.rs:59:8
    |
 LL | extern "rust-call" {}
diff --git a/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.rs b/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.rs
index 7d39820f086..fb04906dafe 100644
--- a/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.rs
+++ b/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.rs
@@ -10,14 +10,14 @@ trait Sized { }
 trait Tuple { }
 
 // Functions
-extern "gpu-kernel" fn f1(_: ()) {} //~ ERROR gpu-kernel ABI is experimental and subject to change
+extern "gpu-kernel" fn f1(_: ()) {} //~ ERROR "gpu-kernel" ABI is experimental and subject to change
 //~^ ERROR is not a supported ABI
 
 // Methods in trait definition
 trait Tr {
-    extern "gpu-kernel" fn m1(_: ()); //~ ERROR gpu-kernel ABI is experimental and subject to change
+    extern "gpu-kernel" fn m1(_: ()); //~ ERROR "gpu-kernel" ABI is experimental and subject to change
 
-    extern "gpu-kernel" fn dm1(_: ()) {} //~ ERROR gpu-kernel ABI is experimental and subject to change
+    extern "gpu-kernel" fn dm1(_: ()) {} //~ ERROR "gpu-kernel" ABI is experimental and subject to change
     //~^ ERROR is not a supported ABI
 }
 
@@ -25,21 +25,21 @@ struct S;
 
 // Methods in trait impl
 impl Tr for S {
-    extern "gpu-kernel" fn m1(_: ()) {} //~ ERROR gpu-kernel ABI is experimental and subject to change
+    extern "gpu-kernel" fn m1(_: ()) {} //~ ERROR "gpu-kernel" ABI is experimental and subject to change
     //~^ ERROR is not a supported ABI
 }
 
 // Methods in inherent impl
 impl S {
-    extern "gpu-kernel" fn im1(_: ()) {} //~ ERROR gpu-kernel ABI is experimental and subject to change
+    extern "gpu-kernel" fn im1(_: ()) {} //~ ERROR "gpu-kernel" ABI is experimental and subject to change
     //~^ ERROR is not a supported ABI
 }
 
 // Function pointer types
-type A1 = extern "gpu-kernel" fn(_: ()); //~ ERROR gpu-kernel ABI is experimental and subject to change
+type A1 = extern "gpu-kernel" fn(_: ()); //~ ERROR "gpu-kernel" ABI is experimental and subject to change
 //~^ WARN the calling convention "gpu-kernel" is not supported on this target
 //~^^ WARN this was previously accepted by the compiler but is being phased out
 
 // Foreign modules
-extern "gpu-kernel" {} //~ ERROR gpu-kernel ABI is experimental and subject to change
+extern "gpu-kernel" {} //~ ERROR "gpu-kernel" ABI is experimental and subject to change
 //~^ ERROR is not a supported ABI
diff --git a/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.stderr b/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.stderr
index 771c49acb97..b05c16e3d9e 100644
--- a/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi_gpu_kernel.stderr
@@ -1,4 +1,4 @@
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:13:8
    |
 LL | extern "gpu-kernel" fn f1(_: ()) {}
@@ -8,7 +8,7 @@ LL | extern "gpu-kernel" fn f1(_: ()) {}
    = help: add `#![feature(abi_gpu_kernel)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:18:12
    |
 LL |     extern "gpu-kernel" fn m1(_: ());
@@ -18,7 +18,7 @@ LL |     extern "gpu-kernel" fn m1(_: ());
    = help: add `#![feature(abi_gpu_kernel)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:20:12
    |
 LL |     extern "gpu-kernel" fn dm1(_: ()) {}
@@ -28,7 +28,7 @@ LL |     extern "gpu-kernel" fn dm1(_: ()) {}
    = help: add `#![feature(abi_gpu_kernel)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:28:12
    |
 LL |     extern "gpu-kernel" fn m1(_: ()) {}
@@ -38,7 +38,7 @@ LL |     extern "gpu-kernel" fn m1(_: ()) {}
    = help: add `#![feature(abi_gpu_kernel)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:34:12
    |
 LL |     extern "gpu-kernel" fn im1(_: ()) {}
@@ -48,7 +48,7 @@ LL |     extern "gpu-kernel" fn im1(_: ()) {}
    = help: add `#![feature(abi_gpu_kernel)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:39:18
    |
 LL | type A1 = extern "gpu-kernel" fn(_: ());
@@ -58,7 +58,7 @@ LL | type A1 = extern "gpu-kernel" fn(_: ());
    = help: add `#![feature(abi_gpu_kernel)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: gpu-kernel ABI is experimental and subject to change
+error[E0658]: the extern "gpu-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_gpu_kernel.rs:44:8
    |
 LL | extern "gpu-kernel" {}
diff --git a/tests/ui/feature-gates/feature-gate-abi_ptx.rs b/tests/ui/feature-gates/feature-gate-abi_ptx.rs
index 83f48430281..e742492303a 100644
--- a/tests/ui/feature-gates/feature-gate-abi_ptx.rs
+++ b/tests/ui/feature-gates/feature-gate-abi_ptx.rs
@@ -5,22 +5,22 @@
 #[lang="sized"]
 trait Sized { }
 
-extern "ptx-kernel" fn fu() {} //~ ERROR PTX ABIs are experimental
+extern "ptx-kernel" fn fu() {} //~ ERROR extern "ptx-kernel" ABI is experimental
 
 trait T {
-    extern "ptx-kernel" fn mu(); //~ ERROR PTX ABIs are experimental
-    extern "ptx-kernel" fn dmu() {} //~ ERROR PTX ABIs are experimental
+    extern "ptx-kernel" fn mu(); //~ ERROR extern "ptx-kernel" ABI is experimental
+    extern "ptx-kernel" fn dmu() {} //~ ERROR extern "ptx-kernel" ABI is experimental
 }
 
 struct S;
 impl T for S {
-    extern "ptx-kernel" fn mu() {} //~ ERROR PTX ABIs are experimental
+    extern "ptx-kernel" fn mu() {} //~ ERROR extern "ptx-kernel" ABI is experimental
 }
 
 impl S {
-    extern "ptx-kernel" fn imu() {} //~ ERROR PTX ABIs are experimental
+    extern "ptx-kernel" fn imu() {} //~ ERROR extern "ptx-kernel" ABI is experimental
 }
 
-type TAU = extern "ptx-kernel" fn(); //~ ERROR PTX ABIs are experimental
+type TAU = extern "ptx-kernel" fn(); //~ ERROR extern "ptx-kernel" ABI is experimental
 
-extern "ptx-kernel" {} //~ ERROR PTX ABIs are experimental
+extern "ptx-kernel" {} //~ ERROR extern "ptx-kernel" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-abi_ptx.stderr b/tests/ui/feature-gates/feature-gate-abi_ptx.stderr
index 22b493e577d..d128075919b 100644
--- a/tests/ui/feature-gates/feature-gate-abi_ptx.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi_ptx.stderr
@@ -1,4 +1,4 @@
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:8:8
    |
 LL | extern "ptx-kernel" fn fu() {}
@@ -8,7 +8,7 @@ LL | extern "ptx-kernel" fn fu() {}
    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:11:12
    |
 LL |     extern "ptx-kernel" fn mu();
@@ -18,7 +18,7 @@ LL |     extern "ptx-kernel" fn mu();
    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:12:12
    |
 LL |     extern "ptx-kernel" fn dmu() {}
@@ -28,7 +28,7 @@ LL |     extern "ptx-kernel" fn dmu() {}
    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:17:12
    |
 LL |     extern "ptx-kernel" fn mu() {}
@@ -38,7 +38,7 @@ LL |     extern "ptx-kernel" fn mu() {}
    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:21:12
    |
 LL |     extern "ptx-kernel" fn imu() {}
@@ -48,7 +48,7 @@ LL |     extern "ptx-kernel" fn imu() {}
    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:24:19
    |
 LL | type TAU = extern "ptx-kernel" fn();
@@ -58,7 +58,7 @@ LL | type TAU = extern "ptx-kernel" fn();
    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: PTX ABIs are experimental and subject to change
+error[E0658]: the extern "ptx-kernel" ABI is experimental and subject to change
   --> $DIR/feature-gate-abi_ptx.rs:26:8
    |
 LL | extern "ptx-kernel" {}
diff --git a/tests/ui/feature-gates/feature-gate-abi_unadjusted.rs b/tests/ui/feature-gates/feature-gate-abi_unadjusted.rs
index 35a7d73288b..1dc6adc0e14 100644
--- a/tests/ui/feature-gates/feature-gate-abi_unadjusted.rs
+++ b/tests/ui/feature-gates/feature-gate-abi_unadjusted.rs
@@ -1,5 +1,5 @@
 extern "unadjusted" fn foo() {
-//~^ ERROR: unadjusted ABI is an implementation detail and perma-unstable
+//~^ ERROR: "unadjusted" ABI is an implementation detail and perma-unstable
 }
 
 fn main() {
diff --git a/tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr b/tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr
index 1d5fb11cd3d..462fb79d557 100644
--- a/tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr
+++ b/tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr
@@ -1,4 +1,4 @@
-error[E0658]: unadjusted ABI is an implementation detail and perma-unstable
+error[E0658]: the extern "unadjusted" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-abi_unadjusted.rs:1:8
    |
 LL | extern "unadjusted" fn foo() {
diff --git a/tests/ui/feature-gates/feature-gate-contracts.rs b/tests/ui/feature-gates/feature-gate-contracts.rs
index 5544f1d82ee..1759d23077b 100644
--- a/tests/ui/feature-gates/feature-gate-contracts.rs
+++ b/tests/ui/feature-gates/feature-gate-contracts.rs
@@ -3,9 +3,7 @@
 #[core::contracts::requires(x > 0)]
 pub fn requires_needs_it(x: i32) { }
 //~^^  ERROR use of unstable library feature `contracts`
-//~^^^ ERROR contracts are incomplete
 
 #[core::contracts::ensures(|ret| *ret > 0)]
 pub fn ensures_needs_it() -> i32 { 10 }
 //~^^  ERROR use of unstable library feature `contracts`
-//~^^^ ERROR contracts are incomplete
diff --git a/tests/ui/feature-gates/feature-gate-contracts.stderr b/tests/ui/feature-gates/feature-gate-contracts.stderr
index 4403e7df50b..4b0f7150973 100644
--- a/tests/ui/feature-gates/feature-gate-contracts.stderr
+++ b/tests/ui/feature-gates/feature-gate-contracts.stderr
@@ -9,7 +9,7 @@ LL | #[core::contracts::requires(x > 0)]
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
 error[E0658]: use of unstable library feature `contracts`
-  --> $DIR/feature-gate-contracts.rs:8:3
+  --> $DIR/feature-gate-contracts.rs:7:3
    |
 LL | #[core::contracts::ensures(|ret| *ret > 0)]
    |   ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -18,26 +18,6 @@ LL | #[core::contracts::ensures(|ret| *ret > 0)]
    = help: add `#![feature(contracts)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: contracts are incomplete
-  --> $DIR/feature-gate-contracts.rs:3:1
-   |
-LL | #[core::contracts::requires(x > 0)]
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #128044 <https://github.com/rust-lang/rust/issues/128044> for more information
-   = help: add `#![feature(contracts)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: contracts are incomplete
-  --> $DIR/feature-gate-contracts.rs:8:1
-   |
-LL | #[core::contracts::ensures(|ret| *ret > 0)]
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #128044 <https://github.com/rust-lang/rust/issues/128044> for more information
-   = help: add `#![feature(contracts)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error: aborting due to 4 previous errors
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr b/tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr
index 0234480ac5a..2f5e3650734 100644
--- a/tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr
+++ b/tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr
@@ -15,8 +15,9 @@ LL |     let _: u8 = ::core::default::Default();
    |
 help: try using `std` instead of `core`
    |
-LL |     let _: u8 = ::std::default::Default();
-   |                   ~~~
+LL -     let _: u8 = ::core::default::Default();
+LL +     let _: u8 = ::std::default::Default();
+   |
 help: consider importing this module
    |
 LL + use std::default;
diff --git a/tests/ui/feature-gates/feature-gate-intrinsics.rs b/tests/ui/feature-gates/feature-gate-intrinsics.rs
index e0dc3cc579d..65806a0223e 100644
--- a/tests/ui/feature-gates/feature-gate-intrinsics.rs
+++ b/tests/ui/feature-gates/feature-gate-intrinsics.rs
@@ -1,8 +1,8 @@
-extern "rust-intrinsic" {   //~ ERROR intrinsics are subject to change
+extern "rust-intrinsic" {   //~ ERROR "rust-intrinsic" ABI is an implementation detail
     fn bar(); //~ ERROR unrecognized intrinsic function: `bar`
 }
 
-extern "rust-intrinsic" fn baz() {} //~ ERROR intrinsics are subject to change
+extern "rust-intrinsic" fn baz() {} //~ ERROR "rust-intrinsic" ABI is an implementation detail
 //~^ ERROR intrinsic must be in
 
 fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-intrinsics.stderr b/tests/ui/feature-gates/feature-gate-intrinsics.stderr
index 577a620e2d2..97246f05258 100644
--- a/tests/ui/feature-gates/feature-gate-intrinsics.stderr
+++ b/tests/ui/feature-gates/feature-gate-intrinsics.stderr
@@ -1,4 +1,4 @@
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-intrinsics.rs:1:8
    |
 LL | extern "rust-intrinsic" {
@@ -7,7 +7,7 @@ LL | extern "rust-intrinsic" {
    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gate-intrinsics.rs:5:8
    |
 LL | extern "rust-intrinsic" fn baz() {}
diff --git a/tests/ui/feature-gates/feature-gate-negate-unsigned.stderr b/tests/ui/feature-gates/feature-gate-negate-unsigned.stderr
index 696326157ce..a6e0e668261 100644
--- a/tests/ui/feature-gates/feature-gate-negate-unsigned.stderr
+++ b/tests/ui/feature-gates/feature-gate-negate-unsigned.stderr
@@ -7,8 +7,9 @@ LL |     let _max: usize = -1;
    = note: unsigned values cannot be negated
 help: you may have meant the maximum value of `usize`
    |
-LL |     let _max: usize = usize::MAX;
-   |                       ~~~~~~~~~~
+LL -     let _max: usize = -1;
+LL +     let _max: usize = usize::MAX;
+   |
 
 error[E0600]: cannot apply unary operator `-` to type `u8`
   --> $DIR/feature-gate-negate-unsigned.rs:14:14
diff --git a/tests/ui/feature-gates/feature-gate-never_patterns.stderr b/tests/ui/feature-gates/feature-gate-never_patterns.stderr
index 9f94e962035..dcd5db56da8 100644
--- a/tests/ui/feature-gates/feature-gate-never_patterns.stderr
+++ b/tests/ui/feature-gates/feature-gate-never_patterns.stderr
@@ -10,7 +10,8 @@ LL |         (Some(_),)
    |         +        +
 help: ...or a vertical bar to match on multiple alternatives
    |
-LL |         Some(_) |
+LL -         Some(_),
+LL +         Some(_) |
    |
 
 error[E0658]: `!` patterns are experimental
diff --git a/tests/ui/feature-gates/feature-gate-rust_cold_cc.rs b/tests/ui/feature-gates/feature-gate-rust_cold_cc.rs
index 9ba8e32ac07..4f47eb55b39 100644
--- a/tests/ui/feature-gates/feature-gate-rust_cold_cc.rs
+++ b/tests/ui/feature-gates/feature-gate-rust_cold_cc.rs
@@ -1,21 +1,21 @@
 #![crate_type = "lib"]
 
-extern "rust-cold" fn fu() {} //~ ERROR rust-cold is experimental
+extern "rust-cold" fn fu() {} //~ ERROR "rust-cold" ABI is experimental
 
 trait T {
-    extern "rust-cold" fn mu(); //~ ERROR rust-cold is experimental
-    extern "rust-cold" fn dmu() {} //~ ERROR rust-cold is experimental
+    extern "rust-cold" fn mu(); //~ ERROR "rust-cold" ABI is experimental
+    extern "rust-cold" fn dmu() {} //~ ERROR "rust-cold" ABI is experimental
 }
 
 struct S;
 impl T for S {
-    extern "rust-cold" fn mu() {} //~ ERROR rust-cold is experimental
+    extern "rust-cold" fn mu() {} //~ ERROR "rust-cold" ABI is experimental
 }
 
 impl S {
-    extern "rust-cold" fn imu() {} //~ ERROR rust-cold is experimental
+    extern "rust-cold" fn imu() {} //~ ERROR "rust-cold" ABI is experimental
 }
 
-type TAU = extern "rust-cold" fn(); //~ ERROR rust-cold is experimental
+type TAU = extern "rust-cold" fn(); //~ ERROR "rust-cold" ABI is experimental
 
-extern "rust-cold" {} //~ ERROR rust-cold is experimental
+extern "rust-cold" {} //~ ERROR "rust-cold" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr b/tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr
index eeff9534d52..9547c64f2b2 100644
--- a/tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr
+++ b/tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr
@@ -1,4 +1,4 @@
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:3:8
    |
 LL | extern "rust-cold" fn fu() {}
@@ -8,7 +8,7 @@ LL | extern "rust-cold" fn fu() {}
    = help: add `#![feature(rust_cold_cc)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:6:12
    |
 LL |     extern "rust-cold" fn mu();
@@ -18,7 +18,7 @@ LL |     extern "rust-cold" fn mu();
    = help: add `#![feature(rust_cold_cc)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:7:12
    |
 LL |     extern "rust-cold" fn dmu() {}
@@ -28,7 +28,7 @@ LL |     extern "rust-cold" fn dmu() {}
    = help: add `#![feature(rust_cold_cc)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:12:12
    |
 LL |     extern "rust-cold" fn mu() {}
@@ -38,7 +38,7 @@ LL |     extern "rust-cold" fn mu() {}
    = help: add `#![feature(rust_cold_cc)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:16:12
    |
 LL |     extern "rust-cold" fn imu() {}
@@ -48,7 +48,7 @@ LL |     extern "rust-cold" fn imu() {}
    = help: add `#![feature(rust_cold_cc)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:19:19
    |
 LL | type TAU = extern "rust-cold" fn();
@@ -58,7 +58,7 @@ LL | type TAU = extern "rust-cold" fn();
    = help: add `#![feature(rust_cold_cc)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-cold is experimental and subject to change
+error[E0658]: the extern "rust-cold" ABI is experimental and subject to change
   --> $DIR/feature-gate-rust_cold_cc.rs:21:8
    |
 LL | extern "rust-cold" {}
diff --git a/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs
index ff528274c59..7b40c8760e3 100644
--- a/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs
+++ b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs
@@ -11,7 +11,7 @@ impl Fn<()> for Foo {
     //~| ERROR manual implementations of `Fn` are experimental
     //~| ERROR expected a `FnMut()` closure, found `Foo`
     extern "rust-call" fn call(self, args: ()) -> () {}
-    //~^ ERROR rust-call ABI is subject to change
+    //~^ ERROR "rust-call" ABI is experimental and subject to change
     //~| ERROR `call` has an incompatible type for trait
 }
 struct Foo1;
@@ -20,7 +20,7 @@ impl FnOnce() for Foo1 {
     //~| ERROR manual implementations of `FnOnce` are experimental
     //~| ERROR not all trait items implemented
     extern "rust-call" fn call_once(self, args: ()) -> () {}
-    //~^ ERROR rust-call ABI is subject to change
+    //~^ ERROR "rust-call" ABI is experimental and subject to change
 }
 struct Bar;
 impl FnMut<()> for Bar {
@@ -28,7 +28,7 @@ impl FnMut<()> for Bar {
     //~| ERROR manual implementations of `FnMut` are experimental
     //~| ERROR expected a `FnOnce()` closure, found `Bar`
     extern "rust-call" fn call_mut(&self, args: ()) -> () {}
-    //~^ ERROR rust-call ABI is subject to change
+    //~^ ERROR "rust-call" ABI is experimental and subject to change
     //~| ERROR incompatible type for trait
 }
 struct Baz;
@@ -37,7 +37,7 @@ impl FnOnce<()> for Baz {
     //~| ERROR manual implementations of `FnOnce` are experimental
     //~| ERROR not all trait items implemented
     extern "rust-call" fn call_once(&self, args: ()) -> () {}
-    //~^ ERROR rust-call ABI is subject to change
+    //~^ ERROR "rust-call" ABI is experimental and subject to change
 }
 
 fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr
index 584724dfe59..7271ca48877 100644
--- a/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr
+++ b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr
@@ -1,4 +1,4 @@
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:13:12
    |
 LL |     extern "rust-call" fn call(self, args: ()) -> () {}
@@ -8,7 +8,7 @@ LL |     extern "rust-call" fn call(self, args: ()) -> () {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:22:12
    |
 LL |     extern "rust-call" fn call_once(self, args: ()) -> () {}
@@ -18,7 +18,7 @@ LL |     extern "rust-call" fn call_once(self, args: ()) -> () {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:30:12
    |
 LL |     extern "rust-call" fn call_mut(&self, args: ()) -> () {}
@@ -28,7 +28,7 @@ LL |     extern "rust-call" fn call_mut(&self, args: ()) -> () {}
    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:39:12
    |
 LL |     extern "rust-call" fn call_once(&self, args: ()) -> () {}
@@ -95,8 +95,9 @@ LL |     extern "rust-call" fn call(self, args: ()) -> () {}
               found signature `extern "rust-call" fn(Foo, ()) -> ()`
 help: change the self-receiver type to match the trait
    |
-LL |     extern "rust-call" fn call(&self, args: ()) -> () {}
-   |                                ~~~~~
+LL -     extern "rust-call" fn call(self, args: ()) -> () {}
+LL +     extern "rust-call" fn call(&self, args: ()) -> () {}
+   |
 
 error[E0183]: manual implementations of `FnOnce` are experimental
   --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:18:6
@@ -165,8 +166,9 @@ LL |     extern "rust-call" fn call_mut(&self, args: ()) -> () {}
               found signature `extern "rust-call" fn(&Bar, ()) -> ()`
 help: change the self-receiver type to match the trait
    |
-LL |     extern "rust-call" fn call_mut(&mut self, args: ()) -> () {}
-   |                                    ~~~~~~~~~
+LL -     extern "rust-call" fn call_mut(&self, args: ()) -> () {}
+LL +     extern "rust-call" fn call_mut(&mut self, args: ()) -> () {}
+   |
 
 error[E0046]: not all trait items implemented, missing: `Output`
   --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:35:1
diff --git a/tests/ui/feature-gates/feature-gate-unboxed-closures.rs b/tests/ui/feature-gates/feature-gate-unboxed-closures.rs
index ebc5a2536f6..74cc20c581c 100644
--- a/tests/ui/feature-gates/feature-gate-unboxed-closures.rs
+++ b/tests/ui/feature-gates/feature-gate-unboxed-closures.rs
@@ -10,7 +10,7 @@ impl FnOnce<(u32, u32)> for Test {
     extern "rust-call" fn call_once(self, (a, b): (u32, u32)) -> u32 {
         a + b
     }
-    //~^^^ ERROR rust-call ABI is subject to change
+    //~^^^ ERROR "rust-call" ABI is experimental and subject to change
 }
 
 fn main() {
diff --git a/tests/ui/feature-gates/feature-gate-unboxed-closures.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures.stderr
index 52c18ec34c5..36932c1f86f 100644
--- a/tests/ui/feature-gates/feature-gate-unboxed-closures.stderr
+++ b/tests/ui/feature-gates/feature-gate-unboxed-closures.stderr
@@ -1,4 +1,4 @@
-error[E0658]: rust-call ABI is subject to change
+error[E0658]: the extern "rust-call" ABI is experimental and subject to change
   --> $DIR/feature-gate-unboxed-closures.rs:10:12
    |
 LL |     extern "rust-call" fn call_once(self, (a, b): (u32, u32)) -> u32 {
diff --git a/tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr b/tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr
index 360c73ae2d7..30f95851768 100644
--- a/tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr
+++ b/tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr
@@ -8,8 +8,9 @@ LL | fn foo(x: dyn Foo) {
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL | fn foo(x: impl Foo) {
-   |           ~~~~
+LL - fn foo(x: dyn Foo) {
+LL + fn foo(x: impl Foo) {
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL | fn foo(x: &dyn Foo) {
diff --git a/tests/ui/feature-gates/feature-gate-unsized_locals.stderr b/tests/ui/feature-gates/feature-gate-unsized_locals.stderr
index f48565b922b..ce0f423fb5c 100644
--- a/tests/ui/feature-gates/feature-gate-unsized_locals.stderr
+++ b/tests/ui/feature-gates/feature-gate-unsized_locals.stderr
@@ -8,8 +8,9 @@ LL | fn f(f: dyn FnOnce()) {}
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL | fn f(f: impl FnOnce()) {}
-   |         ~~~~
+LL - fn f(f: dyn FnOnce()) {}
+LL + fn f(f: impl FnOnce()) {}
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL | fn f(f: &dyn FnOnce()) {}
diff --git a/tests/ui/feature-gates/feature-gate-vectorcall.rs b/tests/ui/feature-gates/feature-gate-vectorcall.rs
index 73a11a842f3..aafa6a2ed62 100644
--- a/tests/ui/feature-gates/feature-gate-vectorcall.rs
+++ b/tests/ui/feature-gates/feature-gate-vectorcall.rs
@@ -9,23 +9,23 @@ trait Sized { }
 // Test that the "vectorcall" ABI is feature-gated, and cannot be used when
 // the `vectorcall` feature gate is not used.
 
-extern "vectorcall" fn f() {} //~ ERROR vectorcall is experimental
+extern "vectorcall" fn f() {} //~ ERROR "vectorcall" ABI is experimental
 
 trait T {
-    extern "vectorcall" fn m(); //~ ERROR vectorcall is experimental
+    extern "vectorcall" fn m(); //~ ERROR "vectorcall" ABI is experimental
 
-    extern "vectorcall" fn dm() {} //~ ERROR vectorcall is experimental
+    extern "vectorcall" fn dm() {} //~ ERROR "vectorcall" ABI is experimental
 }
 
 struct S;
 impl T for S {
-    extern "vectorcall" fn m() {} //~ ERROR vectorcall is experimental
+    extern "vectorcall" fn m() {} //~ ERROR "vectorcall" ABI is experimental
 }
 
 impl S {
-    extern "vectorcall" fn im() {} //~ ERROR vectorcall is experimental
+    extern "vectorcall" fn im() {} //~ ERROR "vectorcall" ABI is experimental
 }
 
-type TA = extern "vectorcall" fn(); //~ ERROR vectorcall is experimental
+type TA = extern "vectorcall" fn(); //~ ERROR "vectorcall" ABI is experimental
 
-extern "vectorcall" {} //~ ERROR vectorcall is experimental
+extern "vectorcall" {} //~ ERROR "vectorcall" ABI is experimental
diff --git a/tests/ui/feature-gates/feature-gate-vectorcall.stderr b/tests/ui/feature-gates/feature-gate-vectorcall.stderr
index b20e41887b9..8f3f47a3d48 100644
--- a/tests/ui/feature-gates/feature-gate-vectorcall.stderr
+++ b/tests/ui/feature-gates/feature-gate-vectorcall.stderr
@@ -1,4 +1,4 @@
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:12:8
    |
 LL | extern "vectorcall" fn f() {}
@@ -8,7 +8,7 @@ LL | extern "vectorcall" fn f() {}
    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:15:12
    |
 LL |     extern "vectorcall" fn m();
@@ -18,7 +18,7 @@ LL |     extern "vectorcall" fn m();
    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:17:12
    |
 LL |     extern "vectorcall" fn dm() {}
@@ -28,7 +28,7 @@ LL |     extern "vectorcall" fn dm() {}
    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:22:12
    |
 LL |     extern "vectorcall" fn m() {}
@@ -38,7 +38,7 @@ LL |     extern "vectorcall" fn m() {}
    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:26:12
    |
 LL |     extern "vectorcall" fn im() {}
@@ -48,7 +48,7 @@ LL |     extern "vectorcall" fn im() {}
    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:29:18
    |
 LL | type TA = extern "vectorcall" fn();
@@ -58,7 +58,7 @@ LL | type TA = extern "vectorcall" fn();
    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: vectorcall is experimental and subject to change
+error[E0658]: the extern "vectorcall" ABI is experimental and subject to change
   --> $DIR/feature-gate-vectorcall.rs:31:8
    |
 LL | extern "vectorcall" {}
diff --git a/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs b/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs
index 37b7d52fafc..2328798d74c 100644
--- a/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs
+++ b/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs
@@ -5,7 +5,7 @@
 fn main() {
     let a = &[1, 2, 3];
     println!("{}", {
-        extern "rust-intrinsic" { //~ ERROR intrinsics are subject to change
+        extern "rust-intrinsic" { //~ ERROR "rust-intrinsic" ABI is an implementation detail
             fn atomic_fence();
         }
         atomic_fence(); //~ ERROR: is unsafe
diff --git a/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr b/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr
index 3dc11b5612c..86f88fdff5f 100644
--- a/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr
+++ b/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr
@@ -1,4 +1,4 @@
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/feature-gated-feature-in-macro-arg.rs:8:16
    |
 LL |         extern "rust-intrinsic" {
diff --git a/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr
index 9a12851f20e..8987b87f84e 100644
--- a/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr
+++ b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr
@@ -24,10 +24,12 @@ LL |     #[macro_use = "2700"] struct S;
    |
 help: the following are the possible correct uses
    |
-LL |     #[macro_use(name1, name2, ...)] struct S;
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     #[macro_use] struct S;
-   |     ~~~~~~~~~~~~
+LL -     #[macro_use = "2700"] struct S;
+LL +     #[macro_use(name1, name2, ...)] struct S;
+   |
+LL -     #[macro_use = "2700"] struct S;
+LL +     #[macro_use] struct S;
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/fmt/format-args-non-identifier-diagnostics.stderr b/tests/ui/fmt/format-args-non-identifier-diagnostics.stderr
index 08abba2854e..af6bb58071f 100644
--- a/tests/ui/fmt/format-args-non-identifier-diagnostics.stderr
+++ b/tests/ui/fmt/format-args-non-identifier-diagnostics.stderr
@@ -6,8 +6,9 @@ LL |     println!("{x.0}");
    |
 help: consider using a positional formatting argument instead
    |
-LL |     println!("{0}", x.0);
-   |                ~  +++++
+LL -     println!("{x.0}");
+LL +     println!("{0}", x.0);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/fmt/format-string-error-2.stderr b/tests/ui/fmt/format-string-error-2.stderr
index a2d142e0bab..6d8c34fdb70 100644
--- a/tests/ui/fmt/format-string-error-2.stderr
+++ b/tests/ui/fmt/format-string-error-2.stderr
@@ -6,8 +6,9 @@ LL |     println!("\x7B}\u8 {", 1);
    |
 help: format of unicode escape sequences uses braces
    |
-LL |     println!("\x7B}\u{8} {", 1);
-   |                    ~~~~~
+LL -     println!("\x7B}\u8 {", 1);
+LL +     println!("\x7B}\u{8} {", 1);
+   |
 
 error: invalid format string: expected `}`, found `a`
   --> $DIR/format-string-error-2.rs:5:5
diff --git a/tests/ui/fmt/no-inline-literals-out-of-range.stderr b/tests/ui/fmt/no-inline-literals-out-of-range.stderr
index 78ec4888c27..78047eabf49 100644
--- a/tests/ui/fmt/no-inline-literals-out-of-range.stderr
+++ b/tests/ui/fmt/no-inline-literals-out-of-range.stderr
@@ -8,12 +8,14 @@ LL |     format_args!("{}", 0x8f_i8); // issue #115423
    = note: `#[deny(overflowing_literals)]` on by default
 help: consider using the type `u8` instead
    |
-LL |     format_args!("{}", 0x8f_u8); // issue #115423
-   |                        ~~~~~~~
+LL -     format_args!("{}", 0x8f_i8); // issue #115423
+LL +     format_args!("{}", 0x8f_u8); // issue #115423
+   |
 help: to use as a negative number (decimal `-113`), consider using the type `u8` for the literal and cast it to `i8`
    |
-LL |     format_args!("{}", 0x8f_u8 as i8); // issue #115423
-   |                        ~~~~~~~~~~~~~
+LL -     format_args!("{}", 0x8f_i8); // issue #115423
+LL +     format_args!("{}", 0x8f_u8 as i8); // issue #115423
+   |
 
 error: literal out of range for `u8`
   --> $DIR/no-inline-literals-out-of-range.rs:6:24
@@ -49,8 +51,9 @@ LL |     format_args!("{}", 0xffff_ffff); // treat unsuffixed literals as i32
    = help: consider using the type `u32` instead
 help: to use as a negative number (decimal `-1`), consider using the type `u32` for the literal and cast it to `i32`
    |
-LL |     format_args!("{}", 0xffff_ffffu32 as i32); // treat unsuffixed literals as i32
-   |                        ~~~~~~~~~~~~~~~~~~~~~
+LL -     format_args!("{}", 0xffff_ffff); // treat unsuffixed literals as i32
+LL +     format_args!("{}", 0xffff_ffffu32 as i32); // treat unsuffixed literals as i32
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/fmt/struct-field-as-captured-argument.stderr b/tests/ui/fmt/struct-field-as-captured-argument.stderr
index 4ef022cecb0..388c14f932b 100644
--- a/tests/ui/fmt/struct-field-as-captured-argument.stderr
+++ b/tests/ui/fmt/struct-field-as-captured-argument.stderr
@@ -6,8 +6,9 @@ LL |     let _ = format!("{foo.field}");
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{0}", foo.field);
-   |                       ~  +++++++++++
+LL -     let _ = format!("{foo.field}");
+LL +     let _ = format!("{0}", foo.field);
+   |
 
 error: invalid format string: field access isn't supported
   --> $DIR/struct-field-as-captured-argument.rs:12:23
@@ -17,8 +18,9 @@ LL |     let _ = format!("{foo.field} {} {bar}", "aa");
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{1} {} {bar}", "aa", foo.field);
-   |                       ~                 +++++++++++
+LL -     let _ = format!("{foo.field} {} {bar}", "aa");
+LL +     let _ = format!("{1} {} {bar}", "aa", foo.field);
+   |
 
 error: invalid format string: field access isn't supported
   --> $DIR/struct-field-as-captured-argument.rs:13:23
@@ -28,8 +30,9 @@ LL |     let _ = format!("{foo.field} {} {1} {bar}", "aa", "bb");
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{2} {} {1} {bar}", "aa", "bb", foo.field);
-   |                       ~                           +++++++++++
+LL -     let _ = format!("{foo.field} {} {1} {bar}", "aa", "bb");
+LL +     let _ = format!("{2} {} {1} {bar}", "aa", "bb", foo.field);
+   |
 
 error: invalid format string: field access isn't supported
   --> $DIR/struct-field-as-captured-argument.rs:14:23
@@ -39,8 +42,9 @@ LL |     let _ = format!("{foo.field} {} {baz}", "aa", baz = 3);
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{1} {} {baz}", "aa", foo.field, baz = 3);
-   |                       ~                 +++++++++++
+LL -     let _ = format!("{foo.field} {} {baz}", "aa", baz = 3);
+LL +     let _ = format!("{1} {} {baz}", "aa", foo.field, baz = 3);
+   |
 
 error: invalid format string: field access isn't supported
   --> $DIR/struct-field-as-captured-argument.rs:15:23
@@ -50,8 +54,9 @@ LL |     let _ = format!("{foo.field:?} {} {baz}", "aa", baz = 3);
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{1:?} {} {baz}", "aa", foo.field, baz = 3);
-   |                       ~                   +++++++++++
+LL -     let _ = format!("{foo.field:?} {} {baz}", "aa", baz = 3);
+LL +     let _ = format!("{1:?} {} {baz}", "aa", foo.field, baz = 3);
+   |
 
 error: invalid format string: field access isn't supported
   --> $DIR/struct-field-as-captured-argument.rs:16:23
@@ -61,8 +66,9 @@ LL |     let _ = format!("{foo.field:#?} {} {baz}", "aa", baz = 3);
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{1:#?} {} {baz}", "aa", foo.field, baz = 3);
-   |                       ~                    +++++++++++
+LL -     let _ = format!("{foo.field:#?} {} {baz}", "aa", baz = 3);
+LL +     let _ = format!("{1:#?} {} {baz}", "aa", foo.field, baz = 3);
+   |
 
 error: invalid format string: field access isn't supported
   --> $DIR/struct-field-as-captured-argument.rs:17:23
@@ -72,8 +78,9 @@ LL |     let _ = format!("{foo.field:.3} {} {baz}", "aa", baz = 3);
    |
 help: consider using a positional formatting argument instead
    |
-LL |     let _ = format!("{1:.3} {} {baz}", "aa", foo.field, baz = 3);
-   |                       ~                    +++++++++++
+LL -     let _ = format!("{foo.field:.3} {} {baz}", "aa", baz = 3);
+LL +     let _ = format!("{1:.3} {} {baz}", "aa", foo.field, baz = 3);
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/fmt/suggest-wrongly-order-format-parameter.stderr b/tests/ui/fmt/suggest-wrongly-order-format-parameter.stderr
index fe693d2e904..516fb870a56 100644
--- a/tests/ui/fmt/suggest-wrongly-order-format-parameter.stderr
+++ b/tests/ui/fmt/suggest-wrongly-order-format-parameter.stderr
@@ -6,8 +6,9 @@ LL |     println!("{f:?#}");
    |
 help: did you mean `#?`?
    |
-LL |     println!("{f:#?}");
-   |                  ~~
+LL -     println!("{f:?#}");
+LL +     println!("{f:#?}");
+   |
 
 error: invalid format string: expected `}`, found `x`
   --> $DIR/suggest-wrongly-order-format-parameter.rs:18:19
@@ -17,8 +18,9 @@ LL |     println!("{f:?x}");
    |
 help: did you mean `x?`?
    |
-LL |     println!("{f:x?}");
-   |                  ~~
+LL -     println!("{f:?x}");
+LL +     println!("{f:x?}");
+   |
 
 error: invalid format string: expected `}`, found `X`
   --> $DIR/suggest-wrongly-order-format-parameter.rs:22:19
@@ -28,8 +30,9 @@ LL |     println!("{f:?X}");
    |
 help: did you mean `X?`?
    |
-LL |     println!("{f:X?}");
-   |                  ~~
+LL -     println!("{f:?X}");
+LL +     println!("{f:X?}");
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/fn/error-recovery-mismatch.stderr b/tests/ui/fn/error-recovery-mismatch.stderr
index ad4652c11c1..f281e77f13b 100644
--- a/tests/ui/fn/error-recovery-mismatch.stderr
+++ b/tests/ui/fn/error-recovery-mismatch.stderr
@@ -37,8 +37,9 @@ LL |     fn fold<T>(&self, _: T, &self._) {}
    |
 help: use type parameters instead
    |
-LL |     fn fold<T, U>(&self, _: T, &self.U) {}
-   |              +++                     ~
+LL -     fn fold<T>(&self, _: T, &self._) {}
+LL +     fn fold<T, U>(&self, _: T, &self.U) {}
+   |
 
 error: aborting due to 4 previous errors; 1 warning emitted
 
diff --git a/tests/ui/fn/fn-pointer-mismatch.stderr b/tests/ui/fn/fn-pointer-mismatch.stderr
index 2aa840911f6..051eb945467 100644
--- a/tests/ui/fn/fn-pointer-mismatch.stderr
+++ b/tests/ui/fn/fn-pointer-mismatch.stderr
@@ -51,8 +51,9 @@ LL |     let c: fn(u32) -> u32 = &foo;
                found reference `&fn(_) -> _ {foo}`
 help: consider removing the reference
    |
-LL |     let c: fn(u32) -> u32 = foo;
-   |                             ~~~
+LL -     let c: fn(u32) -> u32 = &foo;
+LL +     let c: fn(u32) -> u32 = foo;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/fn-pointer-mismatch.rs:42:30
@@ -82,8 +83,9 @@ LL |     let e: &fn(u32) -> u32 = &foo;
    = note: fn items are distinct from fn pointers
 help: consider casting to a fn pointer
    |
-LL |     let e: &fn(u32) -> u32 = &(foo as fn(u32) -> u32);
-   |                              ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let e: &fn(u32) -> u32 = &foo;
+LL +     let e: &fn(u32) -> u32 = &(foo as fn(u32) -> u32);
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/fn/fn-recover-return-sign.stderr b/tests/ui/fn/fn-recover-return-sign.stderr
index e6012f3f950..96aa96f00ad 100644
--- a/tests/ui/fn/fn-recover-return-sign.stderr
+++ b/tests/ui/fn/fn-recover-return-sign.stderr
@@ -6,8 +6,9 @@ LL | fn a() => usize { 0 }
    |
 help: use `->` instead
    |
-LL | fn a() -> usize { 0 }
-   |        ~~
+LL - fn a() => usize { 0 }
+LL + fn a() -> usize { 0 }
+   |
 
 error: return types are denoted using `->`
   --> $DIR/fn-recover-return-sign.rs:6:7
@@ -17,8 +18,9 @@ LL | fn b(): usize { 0 }
    |
 help: use `->` instead
    |
-LL | fn b() -> usize { 0 }
-   |        ~~
+LL - fn b(): usize { 0 }
+LL + fn b() -> usize { 0 }
+   |
 
 error: return types are denoted using `->`
   --> $DIR/fn-recover-return-sign.rs:21:25
@@ -28,8 +30,9 @@ LL |     let foo = |a: bool| => bool { a };
    |
 help: use `->` instead
    |
-LL |     let foo = |a: bool| -> bool { a };
-   |                         ~~
+LL -     let foo = |a: bool| => bool { a };
+LL +     let foo = |a: bool| -> bool { a };
+   |
 
 error: return types are denoted using `->`
   --> $DIR/fn-recover-return-sign.rs:25:24
@@ -39,8 +42,9 @@ LL |     let bar = |a: bool|: bool { a };
    |
 help: use `->` instead
    |
-LL |     let bar = |a: bool| -> bool { a };
-   |                         ~~
+LL -     let bar = |a: bool|: bool { a };
+LL +     let bar = |a: bool| -> bool { a };
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/fn/fn-recover-return-sign2.stderr b/tests/ui/fn/fn-recover-return-sign2.stderr
index fb88ff7b950..ba6662b0d46 100644
--- a/tests/ui/fn/fn-recover-return-sign2.stderr
+++ b/tests/ui/fn/fn-recover-return-sign2.stderr
@@ -6,8 +6,9 @@ LL | fn foo() => impl Fn() => bool {
    |
 help: use `->` instead
    |
-LL | fn foo() -> impl Fn() => bool {
-   |          ~~
+LL - fn foo() => impl Fn() => bool {
+LL + fn foo() -> impl Fn() => bool {
+   |
 
 error: expected one of `+`, `->`, `::`, `where`, or `{`, found `=>`
   --> $DIR/fn-recover-return-sign2.rs:4:23
diff --git a/tests/ui/fn/param-mismatch-foreign.stderr b/tests/ui/fn/param-mismatch-foreign.stderr
index 1182908891c..88aa3cd0368 100644
--- a/tests/ui/fn/param-mismatch-foreign.stderr
+++ b/tests/ui/fn/param-mismatch-foreign.stderr
@@ -11,8 +11,9 @@ LL |     fn foo(x: i32, y: u32, z: i32);
    |        ^^^         -
 help: provide the argument
    |
-LL |     foo(1i32, /* u32 */, 2i32);
-   |        ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     foo(1i32, 2i32);
+LL +     foo(1i32, /* u32 */, 2i32);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/force-inlining/invalid.stderr b/tests/ui/force-inlining/invalid.stderr
index 5d280124129..92b3c314bad 100644
--- a/tests/ui/force-inlining/invalid.stderr
+++ b/tests/ui/force-inlining/invalid.stderr
@@ -6,9 +6,11 @@ LL | #[rustc_force_inline("foo")]
    |
 help: the following are the possible correct uses
    |
-LL | #[rustc_force_inline = "reason"]
+LL - #[rustc_force_inline("foo")]
+LL + #[rustc_force_inline = "reason"]
    |
-LL | #[rustc_force_inline]
+LL - #[rustc_force_inline("foo")]
+LL + #[rustc_force_inline]
    |
 
 error: malformed `rustc_force_inline` attribute input
@@ -19,9 +21,11 @@ LL | #[rustc_force_inline(bar, baz)]
    |
 help: the following are the possible correct uses
    |
-LL | #[rustc_force_inline = "reason"]
+LL - #[rustc_force_inline(bar, baz)]
+LL + #[rustc_force_inline = "reason"]
    |
-LL | #[rustc_force_inline]
+LL - #[rustc_force_inline(bar, baz)]
+LL + #[rustc_force_inline]
    |
 
 error: malformed `rustc_force_inline` attribute input
@@ -32,9 +36,11 @@ LL | #[rustc_force_inline(2)]
    |
 help: the following are the possible correct uses
    |
-LL | #[rustc_force_inline = "reason"]
+LL - #[rustc_force_inline(2)]
+LL + #[rustc_force_inline = "reason"]
    |
-LL | #[rustc_force_inline]
+LL - #[rustc_force_inline(2)]
+LL + #[rustc_force_inline]
    |
 
 error: malformed `rustc_force_inline` attribute input
@@ -45,9 +51,11 @@ LL | #[rustc_force_inline = 2]
    |
 help: the following are the possible correct uses
    |
-LL | #[rustc_force_inline = "reason"]
+LL - #[rustc_force_inline = 2]
+LL + #[rustc_force_inline = "reason"]
    |
-LL | #[rustc_force_inline]
+LL - #[rustc_force_inline = 2]
+LL + #[rustc_force_inline]
    |
 
 error: allow, cfg, cfg_attr, deny, expect, forbid, and warn are the only allowed built-in attributes in function parameters
diff --git a/tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr b/tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr
index d167a60dad3..b09ffb10673 100644
--- a/tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr
+++ b/tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr
@@ -9,8 +9,9 @@ LL |     let _b = A { y: Arc::new(3), ..a };
    |
 help: clone the value from the field instead of using the functional record update syntax
    |
-LL |     let _b = A { y: Arc::new(3), x: a.x.clone() };
-   |                                ~~~~~~~~~~~~~~~~
+LL -     let _b = A { y: Arc::new(3), ..a };
+LL +     let _b = A { y: Arc::new(3), x: a.x.clone() };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr b/tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr
index 52fed354edf..99300ea1cb7 100644
--- a/tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr
+++ b/tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr
@@ -12,8 +12,9 @@ LL | fn foo<'a>(arg: Box<dyn X<Y('a) = &'a ()>>) {}
    |
 help: use angle brackets instead
    |
-LL | fn foo<'a>(arg: Box<dyn X<Y<'a> = &'a ()>>) {}
-   |                            ~  ~
+LL - fn foo<'a>(arg: Box<dyn X<Y('a) = &'a ()>>) {}
+LL + fn foo<'a>(arg: Box<dyn X<Y<'a> = &'a ()>>) {}
+   |
 
 error: parenthesized generic arguments cannot be used in associated type constraints
   --> $DIR/gat-trait-path-parenthesised-args.rs:18:27
diff --git a/tests/ui/generic-associated-types/impl_bounds.stderr b/tests/ui/generic-associated-types/impl_bounds.stderr
index aa56505dd30..291f0ade439 100644
--- a/tests/ui/generic-associated-types/impl_bounds.stderr
+++ b/tests/ui/generic-associated-types/impl_bounds.stderr
@@ -18,8 +18,9 @@ LL |     type B<'a, 'b> = (&'a(), &'b ()) where 'b: 'a;
    |
 help: copy the `where` clause predicates from the trait
    |
-LL |     type B<'a, 'b> = (&'a(), &'b ()) where 'a: 'b;
-   |                                      ~~~~~~~~~~~~
+LL -     type B<'a, 'b> = (&'a(), &'b ()) where 'b: 'a;
+LL +     type B<'a, 'b> = (&'a(), &'b ()) where 'a: 'b;
+   |
 
 error[E0277]: the trait bound `T: Copy` is not satisfied
   --> $DIR/impl_bounds.rs:18:33
diff --git a/tests/ui/generic-associated-types/issue-70304.stderr b/tests/ui/generic-associated-types/issue-70304.stderr
index 9b02c1b0768..a181b1035b7 100644
--- a/tests/ui/generic-associated-types/issue-70304.stderr
+++ b/tests/ui/generic-associated-types/issue-70304.stderr
@@ -13,8 +13,9 @@ LL | fn create_doc() -> impl Document<Cursor<'_> = DocCursorImpl<'_>> {
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | fn create_doc() -> impl Document<Cursor<'_> = DocCursorImpl<'static>> {
-   |                                                             ~~~~~~~
+LL - fn create_doc() -> impl Document<Cursor<'_> = DocCursorImpl<'_>> {
+LL + fn create_doc() -> impl Document<Cursor<'_> = DocCursorImpl<'static>> {
+   |
 
 error: missing required bound on `Cursor`
   --> $DIR/issue-70304.rs:2:5
diff --git a/tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr b/tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr
index ee90f61aabc..9ff343c255b 100644
--- a/tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr
+++ b/tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr
@@ -9,8 +9,9 @@ LL |     type T<'a2, 'b2> = () where 'b2: 'a2;
    |
 help: copy the `where` clause predicates from the trait
    |
-LL |     type T<'a2, 'b2> = () where 'a2: 'b2;
-   |                           ~~~~~~~~~~~~~~
+LL -     type T<'a2, 'b2> = () where 'b2: 'a2;
+LL +     type T<'a2, 'b2> = () where 'a2: 'b2;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/generic-associated-types/missing-bounds.stderr b/tests/ui/generic-associated-types/missing-bounds.stderr
index 6e0700639e9..13e4d249876 100644
--- a/tests/ui/generic-associated-types/missing-bounds.stderr
+++ b/tests/ui/generic-associated-types/missing-bounds.stderr
@@ -7,8 +7,9 @@ LL | impl<B: Add> Add for E<B> where <B as Add>::Output = B {
    = note: see issue #20041 <https://github.com/rust-lang/rust/issues/20041> for more information
 help: if `Output` is an associated type you're trying to set, use the associated type binding syntax
    |
-LL | impl<B: Add> Add for E<B> where B: Add<Output = B> {
-   |                                 ~~~~~~~~~~~~~~~~~~
+LL - impl<B: Add> Add for E<B> where <B as Add>::Output = B {
+LL + impl<B: Add> Add for E<B> where B: Add<Output = B> {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/missing-bounds.rs:11:11
diff --git a/tests/ui/generic-const-items/duplicate-where-clause.stderr b/tests/ui/generic-const-items/duplicate-where-clause.stderr
index 5fa61b01ee9..6b742dfafed 100644
--- a/tests/ui/generic-const-items/duplicate-where-clause.stderr
+++ b/tests/ui/generic-const-items/duplicate-where-clause.stderr
@@ -9,8 +9,10 @@ LL |         P: Eq;
    |
 help: consider joining the two `where` clauses into one
    |
-LL |         P: Copy,
-   |                ~
+LL -         P: Copy
+LL -     where
+LL +         P: Copy,
+   |
 
 error: where clauses are not allowed before const item bodies
   --> $DIR/duplicate-where-clause.rs:19:5
diff --git a/tests/ui/generics/issue-95208-ignore-qself.stderr b/tests/ui/generics/issue-95208-ignore-qself.stderr
index 7d91fbc14a1..b9a5ffac274 100644
--- a/tests/ui/generics/issue-95208-ignore-qself.stderr
+++ b/tests/ui/generics/issue-95208-ignore-qself.stderr
@@ -6,8 +6,9 @@ LL | impl<T: Iterator> Struct<T> where <T as std:: iter::Iterator>::Item:: std::
    |
 help: use single colon
    |
-LL | impl<T: Iterator> Struct<T> where <T as std:: iter::Iterator>::Item: std::fmt::Display {
-   |                                                                    ~
+LL - impl<T: Iterator> Struct<T> where <T as std:: iter::Iterator>::Item:: std::fmt::Display {
+LL + impl<T: Iterator> Struct<T> where <T as std:: iter::Iterator>::Item: std::fmt::Display {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/generics/issue-95208.stderr b/tests/ui/generics/issue-95208.stderr
index e047f1265e2..0ff6c8be9fd 100644
--- a/tests/ui/generics/issue-95208.stderr
+++ b/tests/ui/generics/issue-95208.stderr
@@ -6,8 +6,9 @@ LL | impl<T> Struct<T> where T:: std::fmt::Display {
    |
 help: use single colon
    |
-LL | impl<T> Struct<T> where T: std::fmt::Display {
-   |                          ~
+LL - impl<T> Struct<T> where T:: std::fmt::Display {
+LL + impl<T> Struct<T> where T: std::fmt::Display {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/generics/overlapping-errors-span-issue-123861.stderr b/tests/ui/generics/overlapping-errors-span-issue-123861.stderr
index e0a49343b0e..9622dffda9f 100644
--- a/tests/ui/generics/overlapping-errors-span-issue-123861.stderr
+++ b/tests/ui/generics/overlapping-errors-span-issue-123861.stderr
@@ -33,8 +33,9 @@ LL | fn mainIterator<_ = _> {}
    |
 help: use type parameters instead
    |
-LL | fn mainIterator<T = T> {}
-   |                 ~   ~
+LL - fn mainIterator<_ = _> {}
+LL + fn mainIterator<T = T> {}
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr
index aa3d2cd2d90..ec0e09a302e 100644
--- a/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr
+++ b/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr
@@ -6,8 +6,9 @@ LL |         ...X => {}
    |
 help: use `..=` instead
    |
-LL |         ..=X => {}
-   |         ~~~
+LL -         ...X => {}
+LL +         ..=X => {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs:16:9
@@ -17,8 +18,9 @@ LL |         ...0 => {}
    |
 help: use `..=` instead
    |
-LL |         ..=0 => {}
-   |         ~~~
+LL -         ...0 => {}
+LL +         ..=0 => {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs:17:9
@@ -28,8 +30,9 @@ LL |         ...'a' => {}
    |
 help: use `..=` instead
    |
-LL |         ..='a' => {}
-   |         ~~~
+LL -         ...'a' => {}
+LL +         ..='a' => {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs:18:9
@@ -39,8 +42,9 @@ LL |         ...0.0f32 => {}
    |
 help: use `..=` instead
    |
-LL |         ..=0.0f32 => {}
-   |         ~~~
+LL -         ...0.0f32 => {}
+LL +         ..=0.0f32 => {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs:25:17
@@ -54,8 +58,9 @@ LL |     mac!(0);
    = note: this error originates in the macro `mac` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use `..=` instead
    |
-LL |             let ..=$e;
-   |                 ~~~
+LL -             let ...$e;
+LL +             let ..=$e;
+   |
 
 error[E0005]: refutable pattern in local binding
   --> $DIR/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs:25:17
diff --git a/tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr
index 83a374c3d65..2d70f75f2c6 100644
--- a/tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr
+++ b/tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr
@@ -76,8 +76,9 @@ LL |         &...0 | _ => {}
    |
 help: use `..=` instead
    |
-LL |         &..=0 | _ => {}
-   |          ~~~
+LL -         &...0 | _ => {}
+LL +         &..=0 | _ => {}
+   |
 
 error: the range pattern here has ambiguous interpretation
   --> $DIR/half-open-range-pats-ref-ambiguous-interp.rs:20:10
diff --git a/tests/ui/hashmap/hashmap-index-mut.stderr b/tests/ui/hashmap/hashmap-index-mut.stderr
index ad33c6f9b15..e8b22350c59 100644
--- a/tests/ui/hashmap/hashmap-index-mut.stderr
+++ b/tests/ui/hashmap/hashmap-index-mut.stderr
@@ -7,12 +7,15 @@ LL |     map[&0] = 1;
    = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `HashMap<u32, u32>`
 help: use `.insert()` to insert a value into a `HashMap<u32, u32>`, `.get_mut()` to modify it, or the entry API for more flexibility
    |
-LL |     map.insert(&0, 1);
-   |        ~~~~~~~~  ~  +
-LL |     if let Some(val) = map.get_mut(&0) { *val = 1; };
-   |     ++++++++++++++++++    ~~~~~~~~~  ~~~~~~~~    +++
-LL |     let val = map.entry(&0).or_insert(1);
-   |     +++++++++    ~~~~~~~  ~~~~~~~~~~~~ +
+LL -     map[&0] = 1;
+LL +     map.insert(&0, 1);
+   |
+LL -     map[&0] = 1;
+LL +     if let Some(val) = map.get_mut(&0) { *val = 1; };
+   |
+LL -     map[&0] = 1;
+LL +     let val = map.entry(&0).or_insert(1);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/higher-ranked/trait-bounds/issue-58451.stderr b/tests/ui/higher-ranked/trait-bounds/issue-58451.stderr
index 34d7db9b3cf..4f9fc0ac649 100644
--- a/tests/ui/higher-ranked/trait-bounds/issue-58451.stderr
+++ b/tests/ui/higher-ranked/trait-bounds/issue-58451.stderr
@@ -11,8 +11,9 @@ LL | fn f<I>(i: I)
    |    ^    ----
 help: provide the argument
    |
-LL |     f(&[f(/* i */)]);
-   |          ~~~~~~~~~
+LL -     f(&[f()]);
+LL +     f(&[f(/* i */)]);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/hygiene/globs.stderr b/tests/ui/hygiene/globs.stderr
index 18017264440..3f7a0ae7efa 100644
--- a/tests/ui/hygiene/globs.stderr
+++ b/tests/ui/hygiene/globs.stderr
@@ -9,8 +9,9 @@ LL |         f();
    |
 help: a function with a similar name exists
    |
-LL |         g();
-   |         ~
+LL -         f();
+LL +         g();
+   |
 help: consider importing this function
    |
 LL + use foo::f;
@@ -35,8 +36,9 @@ LL | |     }
    = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: a function with a similar name exists
    |
-LL |     f();
-   |     ~
+LL -     g();
+LL +     f();
+   |
 help: consider importing this function
    |
 LL + use bar::g;
diff --git a/tests/ui/impl-trait/dyn-incompatible-trait-in-return-position-dyn-trait.stderr b/tests/ui/impl-trait/dyn-incompatible-trait-in-return-position-dyn-trait.stderr
index c2fd11fe23d..2c314b07bce 100644
--- a/tests/ui/impl-trait/dyn-incompatible-trait-in-return-position-dyn-trait.stderr
+++ b/tests/ui/impl-trait/dyn-incompatible-trait-in-return-position-dyn-trait.stderr
@@ -34,8 +34,9 @@ LL | fn car() -> dyn DynIncompatible {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn car() -> impl DynIncompatible {
-   |             ~~~~
+LL - fn car() -> dyn DynIncompatible {
+LL + fn car() -> impl DynIncompatible {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn car() -> Box<dyn DynIncompatible> {
diff --git a/tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr b/tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr
index 11491a55738..304d7d43b78 100644
--- a/tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr
+++ b/tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr
@@ -41,8 +41,9 @@ LL | fn ban() -> dyn Trait { Struct }
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn ban() -> impl Trait { Struct }
-   |             ~~~~
+LL - fn ban() -> dyn Trait { Struct }
+LL + fn ban() -> impl Trait { Struct }
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL | fn ban() -> Box<dyn Trait> { Box::new(Struct) }
@@ -56,8 +57,9 @@ LL | fn bak() -> dyn Trait { unimplemented!() }
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn bak() -> impl Trait { unimplemented!() }
-   |             ~~~~
+LL - fn bak() -> dyn Trait { unimplemented!() }
+LL + fn bak() -> impl Trait { unimplemented!() }
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL | fn bak() -> Box<dyn Trait> { Box::new(unimplemented!()) }
@@ -71,8 +73,9 @@ LL | fn bal() -> dyn Trait {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn bal() -> impl Trait {
-   |             ~~~~
+LL - fn bal() -> dyn Trait {
+LL + fn bal() -> impl Trait {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn bal() -> Box<dyn Trait> {
@@ -90,8 +93,9 @@ LL | fn bax() -> dyn Trait {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn bax() -> impl Trait {
-   |             ~~~~
+LL - fn bax() -> dyn Trait {
+LL + fn bax() -> impl Trait {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn bax() -> Box<dyn Trait> {
@@ -109,8 +113,9 @@ LL | fn bat() -> dyn Trait {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn bat() -> impl Trait {
-   |             ~~~~
+LL - fn bat() -> dyn Trait {
+LL + fn bat() -> impl Trait {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn bat() -> Box<dyn Trait> {
@@ -128,8 +133,9 @@ LL | fn bay() -> dyn Trait {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn bay() -> impl Trait {
-   |             ~~~~
+LL - fn bay() -> dyn Trait {
+LL + fn bay() -> impl Trait {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn bay() -> Box<dyn Trait> {
diff --git a/tests/ui/impl-trait/equality.stderr b/tests/ui/impl-trait/equality.stderr
index fd6f4b34241..8106bab9878 100644
--- a/tests/ui/impl-trait/equality.stderr
+++ b/tests/ui/impl-trait/equality.stderr
@@ -19,8 +19,9 @@ LL |     0_u32
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     0_i32
-   |       ~~~
+LL -     0_u32
+LL +     0_i32
+   |
 
 error[E0277]: cannot add `impl Foo` to `u32`
   --> $DIR/equality.rs:24:11
diff --git a/tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr b/tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr
index d0f8f7689d1..31f39eb9004 100644
--- a/tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr
+++ b/tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr
@@ -7,8 +7,9 @@ LL | fn d() -> impl Fn() -> (impl Debug + '_) {
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | fn d() -> impl Fn() -> (impl Debug + 'static) {
-   |                                      ~~~~~~~
+LL - fn d() -> impl Fn() -> (impl Debug + '_) {
+LL + fn d() -> impl Fn() -> (impl Debug + 'static) {
+   |
 
 warning: elided lifetime has a name
   --> $DIR/impl-fn-hrtb-bounds.rs:14:52
diff --git a/tests/ui/impl-trait/impl-generic-mismatch-ab.stderr b/tests/ui/impl-trait/impl-generic-mismatch-ab.stderr
index 90c31c9e3fc..9db996cf9ce 100644
--- a/tests/ui/impl-trait/impl-generic-mismatch-ab.stderr
+++ b/tests/ui/impl-trait/impl-generic-mismatch-ab.stderr
@@ -17,8 +17,9 @@ LL |     fn foo<A: Debug>(&self, a: &A, b: &impl Debug);
    = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
 help: change the parameter type to match the trait
    |
-LL |     fn foo<B: Debug>(&self, a: &B, b: &B) { }
-   |                                ~~
+LL -     fn foo<B: Debug>(&self, a: &impl Debug, b: &B) { }
+LL +     fn foo<B: Debug>(&self, a: &B, b: &B) { }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/impl-trait/impl-generic-mismatch.stderr b/tests/ui/impl-trait/impl-generic-mismatch.stderr
index 973b65bfd62..18347bd0f97 100644
--- a/tests/ui/impl-trait/impl-generic-mismatch.stderr
+++ b/tests/ui/impl-trait/impl-generic-mismatch.stderr
@@ -24,8 +24,9 @@ LL |     fn bar(&self, _: &impl Debug) { }
    |
 help: try changing the `impl Trait` argument to a generic parameter
    |
-LL |     fn bar<U: Debug>(&self, _: &U) { }
-   |           ++++++++++            ~
+LL -     fn bar(&self, _: &impl Debug) { }
+LL +     fn bar<U: Debug>(&self, _: &U) { }
+   |
 
 error[E0643]: method `baz` has incompatible signature for trait
   --> $DIR/impl-generic-mismatch.rs:26:33
@@ -38,8 +39,9 @@ LL |     fn baz<T: Debug>(&self, _: &impl Debug, _: &T) { }
    |
 help: try changing the `impl Trait` argument to a generic parameter
    |
-LL |     fn baz<U: Debug, T: Debug>(&self, _: &T, _: &T) { }
-   |           ~~~~~~~~~~~~~~~~~~~~            ~
+LL -     fn baz<T: Debug>(&self, _: &impl Debug, _: &T) { }
+LL +     fn baz<U: Debug, T: Debug>(&self, _: &T, _: &T) { }
+   |
 
 error[E0643]: method `hash` has incompatible signature for trait
   --> $DIR/impl-generic-mismatch.rs:37:33
diff --git a/tests/ui/impl-trait/in-assoc-type-unconstrained.stderr b/tests/ui/impl-trait/in-assoc-type-unconstrained.stderr
index 75cbe43eeb4..8351175099c 100644
--- a/tests/ui/impl-trait/in-assoc-type-unconstrained.stderr
+++ b/tests/ui/impl-trait/in-assoc-type-unconstrained.stderr
@@ -43,8 +43,9 @@ LL |         fn method() -> () {}
    |            ^^^^^^
 help: change the output type to match the trait
    |
-LL |         fn method() -> <() as compare_method::Trait>::Ty {}
-   |                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         fn method() -> () {}
+LL +         fn method() -> <() as compare_method::Trait>::Ty {}
+   |
 
 error: unconstrained opaque type
   --> $DIR/in-assoc-type-unconstrained.rs:20:19
diff --git a/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr b/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr
index 022df6f906c..d3729b6c973 100644
--- a/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr
+++ b/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr
@@ -9,8 +9,10 @@ LL |         'b: 'a;
    |
 help: copy the `where` clause predicates from the trait
    |
-LL |     where Self: 'b;
-   |     ~~~~~~~~~~~~~~
+LL -     where
+LL -         'b: 'a;
+LL +     where Self: 'b;
+   |
 
 warning: impl trait in impl method signature does not match trait method signature
   --> $DIR/bad-item-bound-within-rpitit.rs:18:28
@@ -26,8 +28,9 @@ LL |     fn iter(&self) -> impl 'a + Iterator<Item = I::Item<'a>> {
    = note: `#[warn(refining_impl_trait_reachable)]` on by default
 help: replace the return type so that it matches the trait
    |
-LL |     fn iter(&self) -> impl Iterator<Item = <Self as Iterable>::Item<'_>> + '_ {
-   |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn iter(&self) -> impl 'a + Iterator<Item = I::Item<'a>> {
+LL +     fn iter(&self) -> impl Iterator<Item = <Self as Iterable>::Item<'_>> + '_ {
+   |
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/impl-trait/in-trait/expeced-refree-to-map-to-reearlybound-ice-108580.stderr b/tests/ui/impl-trait/in-trait/expeced-refree-to-map-to-reearlybound-ice-108580.stderr
index 94f068cabaa..b7797317ea6 100644
--- a/tests/ui/impl-trait/in-trait/expeced-refree-to-map-to-reearlybound-ice-108580.stderr
+++ b/tests/ui/impl-trait/in-trait/expeced-refree-to-map-to-reearlybound-ice-108580.stderr
@@ -12,8 +12,9 @@ LL |     fn bar(&self) -> impl Iterator + '_ {
    = note: `#[warn(refining_impl_trait_internal)]` on by default
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar(&self) -> impl Iterator<Item = impl Sized> + '_ {
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn bar(&self) -> impl Iterator + '_ {
+LL +     fn bar(&self) -> impl Iterator<Item = impl Sized> + '_ {
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/impl-trait/in-trait/foreign.stderr b/tests/ui/impl-trait/in-trait/foreign.stderr
index 36114dcf02b..8801ccc68b3 100644
--- a/tests/ui/impl-trait/in-trait/foreign.stderr
+++ b/tests/ui/impl-trait/in-trait/foreign.stderr
@@ -14,8 +14,9 @@ LL |     #[warn(refining_impl_trait)]
    = note: `#[warn(refining_impl_trait_internal)]` implied by `#[warn(refining_impl_trait)]`
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar(self) -> impl Deref<Target = impl Sized> {
-   |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn bar(self) -> Arc<String> {
+LL +     fn bar(self) -> impl Deref<Target = impl Sized> {
+   |
 
 warning: impl trait in impl method signature does not match trait method signature
   --> $DIR/foreign.rs:31:21
@@ -32,8 +33,9 @@ LL |     #[warn(refining_impl_trait)]
    |            ^^^^^^^^^^^^^^^^^^^
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar(self) -> impl Deref<Target = impl Sized> {
-   |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn bar(self) -> Arc<String> {
+LL +     fn bar(self) -> impl Deref<Target = impl Sized> {
+   |
 
 warning: 2 warnings emitted
 
diff --git a/tests/ui/impl-trait/in-trait/method-signature-matches.lt.stderr b/tests/ui/impl-trait/in-trait/method-signature-matches.lt.stderr
index a23879eb6c3..97f5b2af862 100644
--- a/tests/ui/impl-trait/in-trait/method-signature-matches.lt.stderr
+++ b/tests/ui/impl-trait/in-trait/method-signature-matches.lt.stderr
@@ -15,8 +15,9 @@ LL |     fn early<'early, T>(x: &'early T) -> impl Sized;
               found signature `fn(&())`
 help: change the parameter type to match the trait
    |
-LL |     fn early<'late, T>(_: &'early T) {}
-   |                           ~~~~~~~~~
+LL -     fn early<'late, T>(_: &'late ()) {}
+LL +     fn early<'late, T>(_: &'early T) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch.stderr b/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch.stderr
index 9e18517e48c..588b4537610 100644
--- a/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch.stderr
+++ b/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch.stderr
@@ -13,8 +13,9 @@ LL |     fn owo(x: ()) -> impl Sized;
               found signature `fn(u8)`
 help: change the parameter type to match the trait
    |
-LL |     fn owo(_: ()) {}
-   |               ~~
+LL -     fn owo(_: u8) {}
+LL +     fn owo(_: ()) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch_async.stderr b/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch_async.stderr
index c01d7322d11..b0530045bea 100644
--- a/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch_async.stderr
+++ b/tests/ui/impl-trait/in-trait/method-signature-matches.mismatch_async.stderr
@@ -13,8 +13,9 @@ LL |     async fn owo(x: ()) {}
               found signature `fn(u8) -> _`
 help: change the parameter type to match the trait
    |
-LL |     async fn owo(_: ()) {}
-   |                     ~~
+LL -     async fn owo(_: u8) {}
+LL +     async fn owo(_: ()) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/impl-trait/in-trait/opaque-and-lifetime-mismatch.stderr b/tests/ui/impl-trait/in-trait/opaque-and-lifetime-mismatch.stderr
index 81570781b27..d575fedbb58 100644
--- a/tests/ui/impl-trait/in-trait/opaque-and-lifetime-mismatch.stderr
+++ b/tests/ui/impl-trait/in-trait/opaque-and-lifetime-mismatch.stderr
@@ -86,8 +86,9 @@ LL |     fn bar() -> Wrapper<impl Sized>;
               found signature `fn() -> i32`
 help: change the output type to match the trait
    |
-LL |     fn bar() -> Wrapper<'static> {
-   |                 ~~~~~~~~~~~~~~~~
+LL -     fn bar() -> i32 {
+LL +     fn bar() -> Wrapper<'static> {
+   |
 
 error[E0107]: struct takes 0 generic arguments but 1 generic argument was supplied
   --> $DIR/opaque-and-lifetime-mismatch.rs:24:17
diff --git a/tests/ui/impl-trait/in-trait/refine-captures.stderr b/tests/ui/impl-trait/in-trait/refine-captures.stderr
index ad2c2a11601..8a5c8d3c77b 100644
--- a/tests/ui/impl-trait/in-trait/refine-captures.stderr
+++ b/tests/ui/impl-trait/in-trait/refine-captures.stderr
@@ -9,8 +9,9 @@ LL |     fn test() -> impl Sized + use<> {}
    = note: `#[warn(refining_impl_trait_internal)]` on by default
 help: modify the `use<..>` bound to capture the same lifetimes that the trait does
    |
-LL |     fn test() -> impl Sized + use<'a> {}
-   |                               ~~~~~~~
+LL -     fn test() -> impl Sized + use<> {}
+LL +     fn test() -> impl Sized + use<'a> {}
+   |
 
 warning: impl trait in impl method captures fewer lifetimes than in trait
   --> $DIR/refine-captures.rs:22:31
@@ -22,8 +23,9 @@ LL |     fn test() -> impl Sized + use<> {}
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 help: modify the `use<..>` bound to capture the same lifetimes that the trait does
    |
-LL |     fn test() -> impl Sized + use<'a> {}
-   |                               ~~~~~~~
+LL -     fn test() -> impl Sized + use<> {}
+LL +     fn test() -> impl Sized + use<'a> {}
+   |
 
 warning: impl trait in impl method captures fewer lifetimes than in trait
   --> $DIR/refine-captures.rs:27:31
@@ -35,8 +37,9 @@ LL |     fn test() -> impl Sized + use<'b> {}
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 help: modify the `use<..>` bound to capture the same lifetimes that the trait does
    |
-LL |     fn test() -> impl Sized + use<'a, 'b> {}
-   |                               ~~~~~~~~~~~
+LL -     fn test() -> impl Sized + use<'b> {}
+LL +     fn test() -> impl Sized + use<'a, 'b> {}
+   |
 
 error: `impl Trait` must mention all type parameters in scope in `use<...>`
   --> $DIR/refine-captures.rs:32:18
diff --git a/tests/ui/impl-trait/in-trait/refine.stderr b/tests/ui/impl-trait/in-trait/refine.stderr
index 8d30b035921..e381ef8c3f7 100644
--- a/tests/ui/impl-trait/in-trait/refine.stderr
+++ b/tests/ui/impl-trait/in-trait/refine.stderr
@@ -17,8 +17,9 @@ LL | #![deny(refining_impl_trait)]
    = note: `#[deny(refining_impl_trait_reachable)]` implied by `#[deny(refining_impl_trait)]`
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar() -> impl Sized {}
-   |                 ~~~~~~~~~~
+LL -     fn bar() -> impl Copy {}
+LL +     fn bar() -> impl Sized {}
+   |
 
 error: impl trait in impl method signature does not match trait method signature
   --> $DIR/refine.rs:15:5
@@ -49,8 +50,9 @@ LL |     fn bar() -> () {}
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar() -> impl Sized {}
-   |                 ~~~~~~~~~~
+LL -     fn bar() -> () {}
+LL +     fn bar() -> impl Sized {}
+   |
 
 error: impl trait in impl method signature does not match trait method signature
   --> $DIR/refine.rs:27:17
@@ -66,8 +68,9 @@ LL |     fn bar() -> () {}
    = note: `#[deny(refining_impl_trait_internal)]` implied by `#[deny(refining_impl_trait)]`
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar() -> impl Sized {}
-   |                 ~~~~~~~~~~
+LL -     fn bar() -> () {}
+LL +     fn bar() -> impl Sized {}
+   |
 
 error: impl trait in impl method signature does not match trait method signature
   --> $DIR/refine.rs:35:17
@@ -82,8 +85,9 @@ LL |     fn bar() -> () {}
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar() -> impl Sized {}
-   |                 ~~~~~~~~~~
+LL -     fn bar() -> () {}
+LL +     fn bar() -> impl Sized {}
+   |
 
 error: impl trait in impl method signature does not match trait method signature
   --> $DIR/refine.rs:45:27
@@ -98,8 +102,9 @@ LL |     fn bar(&self) -> impl Copy + '_ {}
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 help: replace the return type so that it matches the trait
    |
-LL |     fn bar(&self) -> impl Sized + '_ {}
-   |                      ~~~~~~~~~~~~~~~
+LL -     fn bar(&self) -> impl Copy + '_ {}
+LL +     fn bar(&self) -> impl Sized + '_ {}
+   |
 
 error: impl trait in impl method signature does not match trait method signature
   --> $DIR/refine.rs:56:9
diff --git a/tests/ui/impl-trait/in-trait/rpitit-hidden-types-self-implied-wf-via-param.stderr b/tests/ui/impl-trait/in-trait/rpitit-hidden-types-self-implied-wf-via-param.stderr
index 15bef5c78b0..dfcf11c57dd 100644
--- a/tests/ui/impl-trait/in-trait/rpitit-hidden-types-self-implied-wf-via-param.stderr
+++ b/tests/ui/impl-trait/in-trait/rpitit-hidden-types-self-implied-wf-via-param.stderr
@@ -9,7 +9,9 @@ LL |         'a: 'static,
    |
 help: copy the `where` clause predicates from the trait
    |
-LL |     where 'a: 'a
+LL -     where
+LL -         'a: 'static,
+LL +     where 'a: 'a
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/impl-trait/in-trait/specialization-broken.stderr b/tests/ui/impl-trait/in-trait/specialization-broken.stderr
index 8c9f2656015..fbbe1ac40b9 100644
--- a/tests/ui/impl-trait/in-trait/specialization-broken.stderr
+++ b/tests/ui/impl-trait/in-trait/specialization-broken.stderr
@@ -16,8 +16,9 @@ LL |     fn bar(&self) -> impl Sized;
               found signature `fn(&_) -> U`
 help: change the output type to match the trait
    |
-LL |     fn bar(&self) -> impl Sized {
-   |                      ~~~~~~~~~~
+LL -     fn bar(&self) -> U {
+LL +     fn bar(&self) -> impl Sized {
+   |
 
 error: method with return-position `impl Trait` in trait cannot be specialized
   --> $DIR/specialization-broken.rs:15:5
diff --git a/tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr b/tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr
index f620bf6dc38..46561b66c8e 100644
--- a/tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr
+++ b/tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr
@@ -36,12 +36,14 @@ LL | fn elided2(x: &i32) -> impl Copy + 'static { x }
    |
 help: consider changing `impl Copy + 'static`'s explicit `'static` bound to the lifetime of argument `x`
    |
-LL | fn elided2(x: &i32) -> impl Copy + '_ { x }
-   |                                    ~~
+LL - fn elided2(x: &i32) -> impl Copy + 'static { x }
+LL + fn elided2(x: &i32) -> impl Copy + '_ { x }
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn elided2(x: &'static i32) -> impl Copy + 'static { x }
-   |               ~~~~~~~~~~~~
+LL - fn elided2(x: &i32) -> impl Copy + 'static { x }
+LL + fn elided2(x: &'static i32) -> impl Copy + 'static { x }
+   |
 
 error: lifetime may not live long enough
   --> $DIR/must_outlive_least_region_or_bound.rs:12:55
@@ -51,12 +53,14 @@ LL | fn explicit2<'a>(x: &'a i32) -> impl Copy + 'static { x }
    |
 help: consider changing `impl Copy + 'static`'s explicit `'static` bound to the lifetime of argument `x`
    |
-LL | fn explicit2<'a>(x: &'a i32) -> impl Copy + 'a { x }
-   |                                             ~~
+LL - fn explicit2<'a>(x: &'a i32) -> impl Copy + 'static { x }
+LL + fn explicit2<'a>(x: &'a i32) -> impl Copy + 'a { x }
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn explicit2<'a>(x: &'static i32) -> impl Copy + 'static { x }
-   |                     ~~~~~~~~~~~~
+LL - fn explicit2<'a>(x: &'a i32) -> impl Copy + 'static { x }
+LL + fn explicit2<'a>(x: &'static i32) -> impl Copy + 'static { x }
+   |
 
 error[E0621]: explicit lifetime required in the type of `x`
   --> $DIR/must_outlive_least_region_or_bound.rs:15:41
@@ -91,12 +95,14 @@ LL | fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'static { x }
    |
 help: consider changing `impl LifetimeTrait<'a> + 'static`'s explicit `'static` bound to the lifetime of argument `x`
    |
-LL | fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'a { x }
-   |                                                           ~~
+LL - fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'static { x }
+LL + fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'a { x }
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn with_bound<'a>(x: &'static i32) -> impl LifetimeTrait<'a> + 'static { x }
-   |                      ~~~~~~~~~~~~
+LL - fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'static { x }
+LL + fn with_bound<'a>(x: &'static i32) -> impl LifetimeTrait<'a> + 'static { x }
+   |
 
 error[E0700]: hidden type for `impl Fn(&'a u32)` captures lifetime that does not appear in bounds
   --> $DIR/must_outlive_least_region_or_bound.rs:42:5
@@ -161,12 +167,14 @@ LL | fn elided4(x: &i32) -> Box<dyn Debug + 'static> { Box::new(x) }
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `x`
    |
-LL | fn elided4(x: &i32) -> Box<dyn Debug + '_> { Box::new(x) }
-   |                                        ~~
+LL - fn elided4(x: &i32) -> Box<dyn Debug + 'static> { Box::new(x) }
+LL + fn elided4(x: &i32) -> Box<dyn Debug + '_> { Box::new(x) }
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn elided4(x: &'static i32) -> Box<dyn Debug + 'static> { Box::new(x) }
-   |               ~~~~~~~~~~~~
+LL - fn elided4(x: &i32) -> Box<dyn Debug + 'static> { Box::new(x) }
+LL + fn elided4(x: &'static i32) -> Box<dyn Debug + 'static> { Box::new(x) }
+   |
 
 error: lifetime may not live long enough
   --> $DIR/must_outlive_least_region_or_bound.rs:27:60
@@ -176,12 +184,14 @@ LL | fn explicit4<'a>(x: &'a i32) -> Box<dyn Debug + 'static> { Box::new(x) }
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `x`
    |
-LL | fn explicit4<'a>(x: &'a i32) -> Box<dyn Debug + 'a> { Box::new(x) }
-   |                                                 ~~
+LL - fn explicit4<'a>(x: &'a i32) -> Box<dyn Debug + 'static> { Box::new(x) }
+LL + fn explicit4<'a>(x: &'a i32) -> Box<dyn Debug + 'a> { Box::new(x) }
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn explicit4<'a>(x: &'static i32) -> Box<dyn Debug + 'static> { Box::new(x) }
-   |                     ~~~~~~~~~~~~
+LL - fn explicit4<'a>(x: &'a i32) -> Box<dyn Debug + 'static> { Box::new(x) }
+LL + fn explicit4<'a>(x: &'static i32) -> Box<dyn Debug + 'static> { Box::new(x) }
+   |
 
 error: aborting due to 13 previous errors
 
diff --git a/tests/ui/impl-trait/no-method-suggested-traits.stderr b/tests/ui/impl-trait/no-method-suggested-traits.stderr
index 676247d1a42..af6d492c74d 100644
--- a/tests/ui/impl-trait/no-method-suggested-traits.stderr
+++ b/tests/ui/impl-trait/no-method-suggested-traits.stderr
@@ -17,8 +17,9 @@ LL + use no_method_suggested_traits::qux::PrivPub;
    |
 help: there is a method `method2` with a similar name
    |
-LL |     1u32.method2();
-   |          ~~~~~~~
+LL -     1u32.method();
+LL +     1u32.method2();
+   |
 
 error[E0599]: no method named `method` found for struct `Rc<&mut Box<&u32>>` in the current scope
   --> $DIR/no-method-suggested-traits.rs:26:44
@@ -39,8 +40,9 @@ LL + use no_method_suggested_traits::qux::PrivPub;
    |
 help: there is a method `method2` with a similar name
    |
-LL |     std::rc::Rc::new(&mut Box::new(&1u32)).method2();
-   |                                            ~~~~~~~
+LL -     std::rc::Rc::new(&mut Box::new(&1u32)).method();
+LL +     std::rc::Rc::new(&mut Box::new(&1u32)).method2();
+   |
 
 error[E0599]: no method named `method` found for type `char` in the current scope
   --> $DIR/no-method-suggested-traits.rs:30:9
@@ -58,8 +60,9 @@ LL + use foo::Bar;
    |
 help: there is a method `method2` with a similar name
    |
-LL |     'a'.method2();
-   |         ~~~~~~~
+LL -     'a'.method();
+LL +     'a'.method2();
+   |
 
 error[E0599]: no method named `method` found for struct `Rc<&mut Box<&char>>` in the current scope
   --> $DIR/no-method-suggested-traits.rs:32:43
@@ -74,8 +77,9 @@ LL + use foo::Bar;
    |
 help: there is a method `method2` with a similar name
    |
-LL |     std::rc::Rc::new(&mut Box::new(&'a')).method2();
-   |                                           ~~~~~~~
+LL -     std::rc::Rc::new(&mut Box::new(&'a')).method();
+LL +     std::rc::Rc::new(&mut Box::new(&'a')).method2();
+   |
 
 error[E0599]: no method named `method` found for type `i32` in the current scope
   --> $DIR/no-method-suggested-traits.rs:35:10
@@ -95,8 +99,9 @@ LL + use no_method_suggested_traits::foo::PubPub;
    |
 help: there is a method `method3` with a similar name
    |
-LL |     1i32.method3();
-   |          ~~~~~~~
+LL -     1i32.method();
+LL +     1i32.method3();
+   |
 
 error[E0599]: no method named `method` found for struct `Rc<&mut Box<&i32>>` in the current scope
   --> $DIR/no-method-suggested-traits.rs:37:44
@@ -111,8 +116,9 @@ LL + use no_method_suggested_traits::foo::PubPub;
    |
 help: there is a method `method3` with a similar name
    |
-LL |     std::rc::Rc::new(&mut Box::new(&1i32)).method3();
-   |                                            ~~~~~~~
+LL -     std::rc::Rc::new(&mut Box::new(&1i32)).method();
+LL +     std::rc::Rc::new(&mut Box::new(&1i32)).method3();
+   |
 
 error[E0599]: no method named `method` found for struct `Foo` in the current scope
   --> $DIR/no-method-suggested-traits.rs:40:9
diff --git a/tests/ui/impl-trait/opaque-used-in-extraneous-argument.stderr b/tests/ui/impl-trait/opaque-used-in-extraneous-argument.stderr
index 6f0f287fe12..4198095db65 100644
--- a/tests/ui/impl-trait/opaque-used-in-extraneous-argument.stderr
+++ b/tests/ui/impl-trait/opaque-used-in-extraneous-argument.stderr
@@ -7,8 +7,9 @@ LL | fn frob() -> impl Fn<P, Output = T> + '_ {}
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | fn frob() -> impl Fn<P, Output = T> + 'static {}
-   |                                       ~~~~~~~
+LL - fn frob() -> impl Fn<P, Output = T> + '_ {}
+LL + fn frob() -> impl Fn<P, Output = T> + 'static {}
+   |
 
 error[E0412]: cannot find type `P` in this scope
   --> $DIR/opaque-used-in-extraneous-argument.rs:5:22
diff --git a/tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr b/tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr
index 17eaed436df..b2aa0e592df 100644
--- a/tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr
+++ b/tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr
@@ -6,8 +6,9 @@ LL | fn hat() -> dyn std::fmt::Display {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn hat() -> impl std::fmt::Display {
-   |             ~~~~
+LL - fn hat() -> dyn std::fmt::Display {
+LL + fn hat() -> impl std::fmt::Display {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn hat() -> Box<dyn std::fmt::Display> {
@@ -27,8 +28,9 @@ LL | fn pug() -> dyn std::fmt::Display {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn pug() -> impl std::fmt::Display {
-   |             ~~~~
+LL - fn pug() -> dyn std::fmt::Display {
+LL + fn pug() -> impl std::fmt::Display {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn pug() -> Box<dyn std::fmt::Display> {
@@ -46,8 +48,9 @@ LL | fn man() -> dyn std::fmt::Display {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn man() -> impl std::fmt::Display {
-   |             ~~~~
+LL - fn man() -> dyn std::fmt::Display {
+LL + fn man() -> impl std::fmt::Display {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn man() -> Box<dyn std::fmt::Display> {
@@ -68,8 +71,9 @@ LL |     1u32
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     1i32
-   |      ~~~
+LL -     1u32
+LL +     1i32
+   |
 
 error[E0308]: mismatched types
   --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:12:16
@@ -82,8 +86,9 @@ LL |         return 1u32;
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |         return 1i32;
-   |                 ~~~
+LL -         return 1u32;
+LL +         return 1i32;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:20:9
@@ -113,8 +118,9 @@ LL | |     }
    |
 help: you could change the return type to be a boxed trait object
    |
-LL | fn qux() -> Box<dyn std::fmt::Display> {
-   |             ~~~~~~~                  +
+LL - fn qux() -> impl std::fmt::Display {
+LL + fn qux() -> Box<dyn std::fmt::Display> {
+   |
 help: if you change the return type to expect trait objects, box the returned expressions
    |
 LL ~         Box::new(0i32)
@@ -123,8 +129,9 @@ LL ~         Box::new(1u32)
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |         1i32
-   |          ~~~
+LL -         1u32
+LL +         1i32
+   |
 
 error[E0308]: mismatched types
   --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:35:14
@@ -185,8 +192,9 @@ LL | |     }
    |
 help: you could change the return type to be a boxed trait object
    |
-LL | fn dog() -> Box<dyn std::fmt::Display> {
-   |             ~~~~~~~                  +
+LL - fn dog() -> impl std::fmt::Display {
+LL + fn dog() -> Box<dyn std::fmt::Display> {
+   |
 help: if you change the return type to expect trait objects, box the returned expressions
    |
 LL ~         0 => Box::new(0i32),
@@ -194,8 +202,9 @@ LL ~         1 => Box::new(1u32),
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |         1 => 1i32,
-   |               ~~~
+LL -         1 => 1u32,
+LL +         1 => 1i32,
+   |
 
 error[E0308]: `if` and `else` have incompatible types
   --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:97:9
@@ -211,8 +220,9 @@ LL | |     }
    |
 help: you could change the return type to be a boxed trait object
    |
-LL | fn apt() -> Box<dyn std::fmt::Display> {
-   |             ~~~~~~~                  +
+LL - fn apt() -> impl std::fmt::Display {
+LL + fn apt() -> Box<dyn std::fmt::Display> {
+   |
 help: if you change the return type to expect trait objects, box the returned expressions
    |
 LL ~         Box::new(0i32)
@@ -221,8 +231,9 @@ LL ~         Box::new(1u32)
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |         1i32
-   |          ~~~
+LL -         1u32
+LL +         1i32
+   |
 
 error: aborting due to 12 previous errors
 
diff --git a/tests/ui/impl-trait/precise-capturing/bad-lifetimes.stderr b/tests/ui/impl-trait/precise-capturing/bad-lifetimes.stderr
index a8acecf10c7..c8dac3a69cd 100644
--- a/tests/ui/impl-trait/precise-capturing/bad-lifetimes.stderr
+++ b/tests/ui/impl-trait/precise-capturing/bad-lifetimes.stderr
@@ -7,8 +7,9 @@ LL | fn no_elided_lt() -> impl Sized + use<'_> {}
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | fn no_elided_lt() -> impl Sized + use<'static> {}
-   |                                       ~~~~~~~
+LL - fn no_elided_lt() -> impl Sized + use<'_> {}
+LL + fn no_elided_lt() -> impl Sized + use<'static> {}
+   |
 
 error[E0261]: use of undeclared lifetime name `'missing`
   --> $DIR/bad-lifetimes.rs:8:37
diff --git a/tests/ui/impl-trait/precise-capturing/hidden-type-suggestion.stderr b/tests/ui/impl-trait/precise-capturing/hidden-type-suggestion.stderr
index b0c4cc2fea0..0d8fa650df4 100644
--- a/tests/ui/impl-trait/precise-capturing/hidden-type-suggestion.stderr
+++ b/tests/ui/impl-trait/precise-capturing/hidden-type-suggestion.stderr
@@ -80,8 +80,9 @@ LL | fn no_params_yet(_: impl Sized, y: &()) -> impl Sized {
    |                     ^^^^^^^^^^
 help: add a `use<...>` bound to explicitly capture `'_` after turning all argument-position `impl Trait` into type parameters, noting that this possibly affects the API of this crate
    |
-LL | fn no_params_yet<T: Sized>(_: T, y: &()) -> impl Sized + use<'_, T> {
-   |                 ++++++++++    ~                        ++++++++++++
+LL - fn no_params_yet(_: impl Sized, y: &()) -> impl Sized {
+LL + fn no_params_yet<T: Sized>(_: T, y: &()) -> impl Sized + use<'_, T> {
+   |
 
 error[E0700]: hidden type for `impl Sized` captures lifetime that does not appear in bounds
   --> $DIR/hidden-type-suggestion.rs:36:5
@@ -101,8 +102,9 @@ LL | fn yes_params_yet<'a, T>(_: impl Sized, y: &'a ()) -> impl Sized {
    |                             ^^^^^^^^^^
 help: add a `use<...>` bound to explicitly capture `'a` after turning all argument-position `impl Trait` into type parameters, noting that this possibly affects the API of this crate
    |
-LL | fn yes_params_yet<'a, T, U: Sized>(_: U, y: &'a ()) -> impl Sized + use<'a, T, U> {
-   |                        ++++++++++     ~                           +++++++++++++++
+LL - fn yes_params_yet<'a, T>(_: impl Sized, y: &'a ()) -> impl Sized {
+LL + fn yes_params_yet<'a, T, U: Sized>(_: U, y: &'a ()) -> impl Sized + use<'a, T, U> {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/impl-trait/precise-capturing/migration-note.stderr b/tests/ui/impl-trait/precise-capturing/migration-note.stderr
index 9caf7a201ef..676b6c12f52 100644
--- a/tests/ui/impl-trait/precise-capturing/migration-note.stderr
+++ b/tests/ui/impl-trait/precise-capturing/migration-note.stderr
@@ -305,8 +305,9 @@ LL | fn capture_apit(x: &impl Sized) -> impl Sized {}
    |                     ^^^^^^^^^^
 help: use the precise capturing `use<...>` syntax to make the captures explicit
    |
-LL | fn capture_apit<T: Sized>(x: &T) -> impl Sized + use<T> {}
-   |                ++++++++++     ~                ++++++++
+LL - fn capture_apit(x: &impl Sized) -> impl Sized {}
+LL + fn capture_apit<T: Sized>(x: &T) -> impl Sized + use<T> {}
+   |
 help: consider cloning the value if the performance cost is acceptable
    |
 LL |     let y = capture_apit(&x.clone());
diff --git a/tests/ui/impl-trait/precise-capturing/overcaptures-2024.stderr b/tests/ui/impl-trait/precise-capturing/overcaptures-2024.stderr
index 965f8e7b672..3f8511a21a0 100644
--- a/tests/ui/impl-trait/precise-capturing/overcaptures-2024.stderr
+++ b/tests/ui/impl-trait/precise-capturing/overcaptures-2024.stderr
@@ -100,8 +100,9 @@ LL | fn apit(_: &impl Sized) -> impl Sized {}
    |             ^^^^^^^^^^
 help: use the precise capturing `use<...>` syntax to make the captures explicit
    |
-LL | fn apit<T: Sized>(_: &T) -> impl Sized + use<T> {}
-   |        ++++++++++     ~                ++++++++
+LL - fn apit(_: &impl Sized) -> impl Sized {}
+LL + fn apit<T: Sized>(_: &T) -> impl Sized + use<T> {}
+   |
 
 error: `impl Sized` will capture more lifetimes than possibly intended in edition 2024
   --> $DIR/overcaptures-2024.rs:37:38
@@ -124,8 +125,9 @@ LL | fn apit2<U>(_: &impl Sized, _: U) -> impl Sized {}
    |                 ^^^^^^^^^^
 help: use the precise capturing `use<...>` syntax to make the captures explicit
    |
-LL | fn apit2<U, T: Sized>(_: &T, _: U) -> impl Sized + use<U, T> {}
-   |           ++++++++++      ~                      +++++++++++
+LL - fn apit2<U>(_: &impl Sized, _: U) -> impl Sized {}
+LL + fn apit2<U, T: Sized>(_: &T, _: U) -> impl Sized + use<U, T> {}
+   |
 
 error: `impl Sized` will capture more lifetimes than possibly intended in edition 2024
   --> $DIR/overcaptures-2024.rs:41:37
diff --git a/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
index b127bf41800..767bd312407 100644
--- a/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
+++ b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
@@ -11,8 +11,9 @@ LL |         fn eq(&self, _other: &(Foo, i32)) -> bool {
               found signature `fn(&a::Bar, &(a::Foo, _)) -> _`
 help: change the parameter type to match the trait
    |
-LL |         fn eq(&self, _other: &(a::Bar, i32)) -> bool {
-   |                              ~~~~~~~~~~~~~~
+LL -         fn eq(&self, _other: &(Foo, i32)) -> bool {
+LL +         fn eq(&self, _other: &(a::Bar, i32)) -> bool {
+   |
 
 error: item does not constrain `a::Foo::{opaque#0}`, but has it in its signature
   --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:9:12
@@ -45,8 +46,9 @@ LL |         fn eq(&self, _other: &(Bar, i32)) -> bool {
    |            ^^
 help: change the parameter type to match the trait
    |
-LL |         fn eq(&self, _other: &(b::Foo, i32)) -> bool {
-   |                              ~~~~~~~~~~~~~~
+LL -         fn eq(&self, _other: &(Bar, i32)) -> bool {
+LL +         fn eq(&self, _other: &(b::Foo, i32)) -> bool {
+   |
 
 error: unconstrained opaque type
   --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:18:16
diff --git a/tests/ui/impl-trait/trait_type.stderr b/tests/ui/impl-trait/trait_type.stderr
index 989779a6178..ce5b2f1cca6 100644
--- a/tests/ui/impl-trait/trait_type.stderr
+++ b/tests/ui/impl-trait/trait_type.stderr
@@ -8,8 +8,9 @@ LL |    fn fmt(&self, x: &str) -> () { }
               found signature `fn(&MyType, &str) -> ()`
 help: change the parameter type to match the trait
    |
-LL |    fn fmt(&self, x: &mut Formatter<'_>) -> () { }
-   |                     ~~~~~~~~~~~~~~~~~~
+LL -    fn fmt(&self, x: &str) -> () { }
+LL +    fn fmt(&self, x: &mut Formatter<'_>) -> () { }
+   |
 
 error[E0050]: method `fmt` has 1 parameter but the declaration in trait `std::fmt::Display::fmt` has 2
   --> $DIR/trait_type.rs:12:11
diff --git a/tests/ui/impl-trait/where-allowed.stderr b/tests/ui/impl-trait/where-allowed.stderr
index 400df87ca3f..ebce9b7e445 100644
--- a/tests/ui/impl-trait/where-allowed.stderr
+++ b/tests/ui/impl-trait/where-allowed.stderr
@@ -364,8 +364,9 @@ LL |     fn in_trait_impl_return() -> Self::Out;
    = note: distinct uses of `impl Trait` result in different opaque types
 help: change the output type to match the trait
    |
-LL |     fn in_trait_impl_return() -> <() as DummyTrait>::Out { () }
-   |                                  ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn in_trait_impl_return() -> impl Debug { () }
+LL +     fn in_trait_impl_return() -> <() as DummyTrait>::Out { () }
+   |
 
 error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
   --> $DIR/where-allowed.rs:245:36
diff --git a/tests/ui/imports/bad-import-with-rename.stderr b/tests/ui/imports/bad-import-with-rename.stderr
index f9c5cf920e1..a8e97d13c55 100644
--- a/tests/ui/imports/bad-import-with-rename.stderr
+++ b/tests/ui/imports/bad-import-with-rename.stderr
@@ -6,8 +6,9 @@ LL |     use crate::D::B as _;
    |
 help: consider importing this type alias instead
    |
-LL |     use A::B as _;
-   |         ~~~~~~~~~
+LL -     use crate::D::B as _;
+LL +     use A::B as _;
+   |
 
 error[E0432]: unresolved import `crate::D::B2`
   --> $DIR/bad-import-with-rename.rs:10:9
@@ -17,8 +18,9 @@ LL |     use crate::D::B2;
    |
 help: consider importing this type alias instead
    |
-LL |     use A::B2;
-   |         ~~~~~
+LL -     use crate::D::B2;
+LL +     use A::B2;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr b/tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr
index 127765727b4..9a3ebfddc49 100644
--- a/tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr
+++ b/tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr
@@ -6,8 +6,9 @@ LL | extern crate self;
    |
 help: rename the `self` crate to be able to import it
    |
-LL | extern crate self as name;
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - extern crate self;
+LL + extern crate self as name;
+   |
 
 error: `#[macro_use]` is not supported on `extern crate self`
   --> $DIR/extern-crate-self-fail.rs:3:1
diff --git a/tests/ui/imports/glob-resolve1.stderr b/tests/ui/imports/glob-resolve1.stderr
index 4401ef58732..6a48e36d378 100644
--- a/tests/ui/imports/glob-resolve1.stderr
+++ b/tests/ui/imports/glob-resolve1.stderr
@@ -37,8 +37,9 @@ LL | |     }
    | |_____^
 help: you might have meant to use the following enum variant
    |
-LL |     B::B1;
-   |     ~~~~~
+LL -     B;
+LL +     B::B1;
+   |
 
 error[E0425]: cannot find value `C` in this scope
   --> $DIR/glob-resolve1.rs:29:5
diff --git a/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr b/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr
index 80cea1a83d9..def0676a0f8 100644
--- a/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr
+++ b/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr
@@ -7,7 +7,8 @@ LL | extern crate std;
    = note: `std` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate std as other_std;
+LL - extern crate std;
+LL + extern crate std as other_std;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/imports/issue-45829/import-self.stderr b/tests/ui/imports/issue-45829/import-self.stderr
index 3c9d4fe6ba6..62bc559b778 100644
--- a/tests/ui/imports/issue-45829/import-self.stderr
+++ b/tests/ui/imports/issue-45829/import-self.stderr
@@ -32,8 +32,9 @@ LL | use foo::{self};
    = note: `foo` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use foo::{self as other_foo};
-   |           ~~~~~~~~~~~~~~~~~
+LL - use foo::{self};
+LL + use foo::{self as other_foo};
+   |
 
 error[E0255]: the name `foo` is defined multiple times
   --> $DIR/import-self.rs:12:5
@@ -47,8 +48,9 @@ LL | use foo::self;
    = note: `foo` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use foo as other_foo;
-   |         ~~~~~~~~~~~~
+LL - use foo::self;
+LL + use foo as other_foo;
+   |
 
 error[E0252]: the name `A` is defined multiple times
   --> $DIR/import-self.rs:16:11
@@ -61,8 +63,9 @@ LL | use foo::{self as A};
    = note: `A` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use foo::{self as OtherA};
-   |           ~~~~~~~~~~~~~~
+LL - use foo::{self as A};
+LL + use foo::{self as OtherA};
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/imports/issue-45829/issue-45829.stderr b/tests/ui/imports/issue-45829/issue-45829.stderr
index c6835c3bd7a..9fd0e5a7672 100644
--- a/tests/ui/imports/issue-45829/issue-45829.stderr
+++ b/tests/ui/imports/issue-45829/issue-45829.stderr
@@ -9,8 +9,9 @@ LL | use foo::{A, B as A};
    = note: `A` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use foo::{A, B as OtherA};
-   |                ~~~~~~~~~
+LL - use foo::{A, B as A};
+LL + use foo::{A, B as OtherA};
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/issue-45829/rename-extern-vs-use.stderr b/tests/ui/imports/issue-45829/rename-extern-vs-use.stderr
index 8f2f7bbac0c..98fe16824ff 100644
--- a/tests/ui/imports/issue-45829/rename-extern-vs-use.stderr
+++ b/tests/ui/imports/issue-45829/rename-extern-vs-use.stderr
@@ -9,7 +9,8 @@ LL | extern crate issue_45829_b as bar;
    = note: `bar` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate issue_45829_b as other_bar;
+LL - extern crate issue_45829_b as bar;
+LL + extern crate issue_45829_b as other_bar;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/imports/issue-45829/rename-extern-with-tab.stderr b/tests/ui/imports/issue-45829/rename-extern-with-tab.stderr
index ae26d1fd0bb..346f2481c21 100644
--- a/tests/ui/imports/issue-45829/rename-extern-with-tab.stderr
+++ b/tests/ui/imports/issue-45829/rename-extern-with-tab.stderr
@@ -9,7 +9,8 @@ LL | extern  crate    issue_45829_b  as  issue_45829_a;
    = note: `issue_45829_a` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate issue_45829_b as other_issue_45829_a;
+LL - extern  crate    issue_45829_b  as  issue_45829_a;
+LL + extern crate issue_45829_b as other_issue_45829_a;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/imports/issue-45829/rename-extern.stderr b/tests/ui/imports/issue-45829/rename-extern.stderr
index 46560ef9244..f99f433c642 100644
--- a/tests/ui/imports/issue-45829/rename-extern.stderr
+++ b/tests/ui/imports/issue-45829/rename-extern.stderr
@@ -9,7 +9,8 @@ LL | extern crate issue_45829_b as issue_45829_a;
    = note: `issue_45829_a` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate issue_45829_b as other_issue_45829_a;
+LL - extern crate issue_45829_b as issue_45829_a;
+LL + extern crate issue_45829_b as other_issue_45829_a;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/imports/issue-45829/rename-use-vs-extern.stderr b/tests/ui/imports/issue-45829/rename-use-vs-extern.stderr
index fd4fb9db0b6..e0647cd3ab6 100644
--- a/tests/ui/imports/issue-45829/rename-use-vs-extern.stderr
+++ b/tests/ui/imports/issue-45829/rename-use-vs-extern.stderr
@@ -9,8 +9,9 @@ LL | use std as issue_45829_b;
    = note: `issue_45829_b` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use std as other_issue_45829_b;
-   |         ~~~~~~~~~~~~~~~~~~~~~~
+LL - use std as issue_45829_b;
+LL + use std as other_issue_45829_b;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/issue-45829/rename-use-with-tabs.stderr b/tests/ui/imports/issue-45829/rename-use-with-tabs.stderr
index 178303bbc1d..c2e63ffa91e 100644
--- a/tests/ui/imports/issue-45829/rename-use-with-tabs.stderr
+++ b/tests/ui/imports/issue-45829/rename-use-with-tabs.stderr
@@ -9,8 +9,9 @@ LL | use foo::{A, bar::B    as    A};
    = note: `A` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use foo::{A, bar::B as OtherA};
-   |                     ~~~~~~~~~
+LL - use foo::{A, bar::B    as    A};
+LL + use foo::{A, bar::B as OtherA};
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/issue-45829/rename-with-path.stderr b/tests/ui/imports/issue-45829/rename-with-path.stderr
index a83fdb37324..45fdd46850e 100644
--- a/tests/ui/imports/issue-45829/rename-with-path.stderr
+++ b/tests/ui/imports/issue-45829/rename-with-path.stderr
@@ -9,8 +9,9 @@ LL | use std::{collections::HashMap as A, sync::Arc as A};
    = note: `A` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use std::{collections::HashMap as A, sync::Arc as OtherA};
-   |                                                ~~~~~~~~~
+LL - use std::{collections::HashMap as A, sync::Arc as A};
+LL + use std::{collections::HashMap as A, sync::Arc as OtherA};
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/issue-45829/rename.stderr b/tests/ui/imports/issue-45829/rename.stderr
index 4977909487c..dc5775e3d56 100644
--- a/tests/ui/imports/issue-45829/rename.stderr
+++ b/tests/ui/imports/issue-45829/rename.stderr
@@ -9,8 +9,9 @@ LL | use std as core;
    = note: `core` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use std as other_core;
-   |         ~~~~~~~~~~~~~
+LL - use std as core;
+LL + use std as other_core;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/issue-56125.stderr b/tests/ui/imports/issue-56125.stderr
index 0c4a569c7ea..81336d51df4 100644
--- a/tests/ui/imports/issue-56125.stderr
+++ b/tests/ui/imports/issue-56125.stderr
@@ -6,14 +6,18 @@ LL |     use empty::issue_56125;
    |
 help: consider importing one of these modules instead
    |
-LL |     use crate::m3::last_segment::issue_56125;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     use crate::m3::non_last_segment::non_last_segment::issue_56125;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     use ::issue_56125::issue_56125;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     use ::issue_56125::last_segment::issue_56125;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     use empty::issue_56125;
+LL +     use crate::m3::last_segment::issue_56125;
+   |
+LL -     use empty::issue_56125;
+LL +     use crate::m3::non_last_segment::non_last_segment::issue_56125;
+   |
+LL -     use empty::issue_56125;
+LL +     use ::issue_56125::issue_56125;
+   |
+LL -     use empty::issue_56125;
+LL +     use ::issue_56125::last_segment::issue_56125;
+   |
      and 1 other candidate
 
 error[E0659]: `issue_56125` is ambiguous
diff --git a/tests/ui/imports/issue-57015.stderr b/tests/ui/imports/issue-57015.stderr
index f1ae7845241..d3b9cd21fba 100644
--- a/tests/ui/imports/issue-57015.stderr
+++ b/tests/ui/imports/issue-57015.stderr
@@ -6,8 +6,9 @@ LL | use single_err::something;
    |
 help: consider importing this module instead
    |
-LL | use glob_ok::something;
-   |     ~~~~~~~~~~~~~~~~~~
+LL - use single_err::something;
+LL + use glob_ok::something;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/issue-59764.stderr b/tests/ui/imports/issue-59764.stderr
index 74525c9c88f..1d31e3bda0d 100644
--- a/tests/ui/imports/issue-59764.stderr
+++ b/tests/ui/imports/issue-59764.stderr
@@ -182,8 +182,9 @@ LL |     use issue_59764::foo::makro as baz;
    = note: this could be because a macro annotated with `#[macro_export]` will be exported at the root of the crate instead of the module where it is defined
 help: a macro with this name exists at the root of the crate
    |
-LL |     use issue_59764::makro as baz;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     use issue_59764::foo::makro as baz;
+LL +     use issue_59764::makro as baz;
+   |
 
 error[E0432]: unresolved import `issue_59764::foo::makro`
   --> $DIR/issue-59764.rs:107:33
@@ -223,8 +224,9 @@ LL | use issue_59764::foo::makro;
    = note: this could be because a macro annotated with `#[macro_export]` will be exported at the root of the crate instead of the module where it is defined
 help: a macro with this name exists at the root of the crate
    |
-LL | use issue_59764::makro;
-   |     ~~~~~~~~~~~~~~~~~~
+LL - use issue_59764::foo::makro;
+LL + use issue_59764::makro;
+   |
 
 error[E0425]: cannot find function `bar` in this scope
   --> $DIR/issue-59764.rs:133:5
diff --git a/tests/ui/imports/multiple-extern-by-macro-for-buitlin.stderr b/tests/ui/imports/multiple-extern-by-macro-for-buitlin.stderr
index a84a6c42aa8..4a5c85479d3 100644
--- a/tests/ui/imports/multiple-extern-by-macro-for-buitlin.stderr
+++ b/tests/ui/imports/multiple-extern-by-macro-for-buitlin.stderr
@@ -14,7 +14,8 @@ LL | m!();
    = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: you can use `as` to change the binding name of the import
    |
-LL |         extern crate std as other_core;
+LL -         extern crate std as core;
+LL +         extern crate std as other_core;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/imports/multiple-extern-by-macro-for-custom.stderr b/tests/ui/imports/multiple-extern-by-macro-for-custom.stderr
index 556d75a4dbb..8b87ae93b4d 100644
--- a/tests/ui/imports/multiple-extern-by-macro-for-custom.stderr
+++ b/tests/ui/imports/multiple-extern-by-macro-for-custom.stderr
@@ -14,7 +14,8 @@ LL | m!();
    = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: you can use `as` to change the binding name of the import
    |
-LL |         extern crate std as other_empty;
+LL -         extern crate std as empty;
+LL +         extern crate std as other_empty;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/imports/multiple-extern-by-macro-for-inexist.stderr b/tests/ui/imports/multiple-extern-by-macro-for-inexist.stderr
index ec34489f232..9a9e538740d 100644
--- a/tests/ui/imports/multiple-extern-by-macro-for-inexist.stderr
+++ b/tests/ui/imports/multiple-extern-by-macro-for-inexist.stderr
@@ -20,7 +20,8 @@ LL | m!();
    = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: you can use `as` to change the binding name of the import
    |
-LL |         extern crate std as other_non_existent;
+LL -         extern crate std as non_existent;
+LL +         extern crate std as other_non_existent;
    |
 
 error: aborting due to 2 previous errors
diff --git a/tests/ui/imports/no-std-inject.stderr b/tests/ui/imports/no-std-inject.stderr
index 597ecdce9eb..d3952a50cd3 100644
--- a/tests/ui/imports/no-std-inject.stderr
+++ b/tests/ui/imports/no-std-inject.stderr
@@ -7,8 +7,9 @@ LL | extern crate core;
    = note: `core` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate core as other_core;
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - extern crate core;
+LL + extern crate core as other_core;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/private-std-reexport-suggest-public.stderr b/tests/ui/imports/private-std-reexport-suggest-public.stderr
index 222553235aa..90d84bb4f5b 100644
--- a/tests/ui/imports/private-std-reexport-suggest-public.stderr
+++ b/tests/ui/imports/private-std-reexport-suggest-public.stderr
@@ -15,8 +15,9 @@ note: ...and refers to the module `mem` which is defined here
    = note: you could import this directly
 help: import `mem` through the re-export
    |
-LL |     use std::mem;
-   |         ~~~~~~~~
+LL -     use foo::mem;
+LL +     use std::mem;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/imports/suggest-import-issue-120074.edition2015.stderr b/tests/ui/imports/suggest-import-issue-120074.edition2015.stderr
index 414eeee0fed..c9cfe769aeb 100644
--- a/tests/ui/imports/suggest-import-issue-120074.edition2015.stderr
+++ b/tests/ui/imports/suggest-import-issue-120074.edition2015.stderr
@@ -6,8 +6,9 @@ LL |     println!("Hello, {}!", crate::bar::do_the_thing);
    |
 help: a similar path exists
    |
-LL |     println!("Hello, {}!", crate::foo::bar::do_the_thing);
-   |                                   ~~~~~~~~
+LL -     println!("Hello, {}!", crate::bar::do_the_thing);
+LL +     println!("Hello, {}!", crate::foo::bar::do_the_thing);
+   |
 help: consider importing this module
    |
 LL + use foo::bar;
diff --git a/tests/ui/imports/suggest-import-issue-120074.edition2021.stderr b/tests/ui/imports/suggest-import-issue-120074.edition2021.stderr
index 414eeee0fed..c9cfe769aeb 100644
--- a/tests/ui/imports/suggest-import-issue-120074.edition2021.stderr
+++ b/tests/ui/imports/suggest-import-issue-120074.edition2021.stderr
@@ -6,8 +6,9 @@ LL |     println!("Hello, {}!", crate::bar::do_the_thing);
    |
 help: a similar path exists
    |
-LL |     println!("Hello, {}!", crate::foo::bar::do_the_thing);
-   |                                   ~~~~~~~~
+LL -     println!("Hello, {}!", crate::bar::do_the_thing);
+LL +     println!("Hello, {}!", crate::foo::bar::do_the_thing);
+   |
 help: consider importing this module
    |
 LL + use foo::bar;
diff --git a/tests/ui/include-macros/parent_dir.stderr b/tests/ui/include-macros/parent_dir.stderr
index 0470d5b1f1e..23029e91120 100644
--- a/tests/ui/include-macros/parent_dir.stderr
+++ b/tests/ui/include-macros/parent_dir.stderr
@@ -7,8 +7,9 @@ LL |     let _ = include_str!("include-macros/file.txt");
    = note: this error originates in the macro `include_str` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: there is a file with the same name in a different directory
    |
-LL |     let _ = include_str!("file.txt");
-   |                          ~~~~~~~~~~
+LL -     let _ = include_str!("include-macros/file.txt");
+LL +     let _ = include_str!("file.txt");
+   |
 
 error: couldn't read `$DIR/hello.rs`: $FILE_NOT_FOUND_MSG
   --> $DIR/parent_dir.rs:6:13
@@ -19,8 +20,9 @@ LL |     let _ = include_str!("hello.rs");
    = note: this error originates in the macro `include_str` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: there is a file with the same name in a different directory
    |
-LL |     let _ = include_str!("../hello.rs");
-   |                          ~~~~~~~~~~~~~
+LL -     let _ = include_str!("hello.rs");
+LL +     let _ = include_str!("../hello.rs");
+   |
 
 error: couldn't read `$DIR/../../data.bin`: $FILE_NOT_FOUND_MSG
   --> $DIR/parent_dir.rs:8:13
@@ -31,8 +33,9 @@ LL |     let _ = include_bytes!("../../data.bin");
    = note: this error originates in the macro `include_bytes` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: there is a file with the same name in a different directory
    |
-LL |     let _ = include_bytes!("data.bin");
-   |                            ~~~~~~~~~~
+LL -     let _ = include_bytes!("../../data.bin");
+LL +     let _ = include_bytes!("data.bin");
+   |
 
 error: couldn't read `$DIR/tests/ui/include-macros/file.txt`: $FILE_NOT_FOUND_MSG
   --> $DIR/parent_dir.rs:10:13
@@ -43,8 +46,9 @@ LL |     let _ = include_str!("tests/ui/include-macros/file.txt");
    = note: this error originates in the macro `include_str` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: there is a file with the same name in a different directory
    |
-LL |     let _ = include_str!("file.txt");
-   |                          ~~~~~~~~~~
+LL -     let _ = include_str!("tests/ui/include-macros/file.txt");
+LL +     let _ = include_str!("file.txt");
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/inference/ambiguous_type_parameter.stderr b/tests/ui/inference/ambiguous_type_parameter.stderr
index 0674deb63ba..835999121d6 100644
--- a/tests/ui/inference/ambiguous_type_parameter.stderr
+++ b/tests/ui/inference/ambiguous_type_parameter.stderr
@@ -6,8 +6,9 @@ LL |     InMemoryStore.get_raw(&String::default());
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <InMemoryStore as Store<String, HashMap<K, String>>>::get_raw(&InMemoryStore, &String::default());
-   |     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++             ~
+LL -     InMemoryStore.get_raw(&String::default());
+LL +     <InMemoryStore as Store<String, HashMap<K, String>>>::get_raw(&InMemoryStore, &String::default());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/cannot-infer-closure-circular.stderr b/tests/ui/inference/cannot-infer-closure-circular.stderr
index a16e832f8ef..ee17f7737cf 100644
--- a/tests/ui/inference/cannot-infer-closure-circular.stderr
+++ b/tests/ui/inference/cannot-infer-closure-circular.stderr
@@ -9,8 +9,8 @@ LL |         Ok(v)
    |
 help: consider giving this closure parameter an explicit type, where the type for type parameter `E` is specified
    |
-LL |     let x = |r: Result<(), E>| {
-   |               +++++++++++++++
+LL |     let x = |r: Result<_, E>| {
+   |               ++++++++++++++
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/char-as-str-single.stderr b/tests/ui/inference/char-as-str-single.stderr
index 9149efe3240..5455a0fd7ee 100644
--- a/tests/ui/inference/char-as-str-single.stderr
+++ b/tests/ui/inference/char-as-str-single.stderr
@@ -8,8 +8,9 @@ LL |     let _: char = "a";
    |
 help: if you meant to write a `char` literal, use single quotes
    |
-LL |     let _: char = 'a';
-   |                   ~~~
+LL -     let _: char = "a";
+LL +     let _: char = 'a';
+   |
 
 error[E0308]: mismatched types
   --> $DIR/char-as-str-single.rs:10:19
@@ -21,8 +22,9 @@ LL |     let _: char = "人";
    |
 help: if you meant to write a `char` literal, use single quotes
    |
-LL |     let _: char = '人';
-   |                   ~~~~
+LL -     let _: char = "人";
+LL +     let _: char = '人';
+   |
 
 error[E0308]: mismatched types
   --> $DIR/char-as-str-single.rs:11:19
@@ -34,8 +36,9 @@ LL |     let _: char = "'";
    |
 help: if you meant to write a `char` literal, use single quotes
    |
-LL |     let _: char = '\'';
-   |                   ~~~~
+LL -     let _: char = "'";
+LL +     let _: char = '\'';
+   |
 
 error[E0308]: mismatched types
   --> $DIR/char-as-str-single.rs:18:9
@@ -47,8 +50,9 @@ LL |         "A" => {}
    |
 help: if you meant to write a `char` literal, use single quotes
    |
-LL |         'A' => {}
-   |         ~~~
+LL -         "A" => {}
+LL +         'A' => {}
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/inference/erase-type-params-in-label.stderr b/tests/ui/inference/erase-type-params-in-label.stderr
index 4e9a74c1e40..1ec8a33eb82 100644
--- a/tests/ui/inference/erase-type-params-in-label.stderr
+++ b/tests/ui/inference/erase-type-params-in-label.stderr
@@ -12,8 +12,8 @@ LL | fn foo<T, K, W: Default, Z: Default>(t: T, k: K) -> Foo<T, K, W, Z> {
    |                 ^^^^^^^ required by this bound in `foo`
 help: consider giving `foo` an explicit type, where the type for type parameter `W` is specified
    |
-LL |     let foo: Foo<i32, &str, W, Z> = foo(1, "");
-   |            ++++++++++++++++++++++
+LL |     let foo: Foo<_, &_, W, Z> = foo(1, "");
+   |            ++++++++++++++++++
 
 error[E0283]: type annotations needed for `Bar<i32, &str, _>`
   --> $DIR/erase-type-params-in-label.rs:5:9
@@ -29,8 +29,8 @@ LL | fn bar<T, K, Z: Default>(t: T, k: K) -> Bar<T, K, Z> {
    |                 ^^^^^^^ required by this bound in `bar`
 help: consider giving `bar` an explicit type, where the type for type parameter `Z` is specified
    |
-LL |     let bar: Bar<i32, &str, Z> = bar(1, "");
-   |            +++++++++++++++++++
+LL |     let bar: Bar<_, &_, Z> = bar(1, "");
+   |            +++++++++++++++
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/inference/inference_unstable.stderr b/tests/ui/inference/inference_unstable.stderr
index 51f086177db..395dcb2661f 100644
--- a/tests/ui/inference/inference_unstable.stderr
+++ b/tests/ui/inference/inference_unstable.stderr
@@ -65,8 +65,9 @@ LL |     assert_eq!(char::C, 1);
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
 help: use the fully qualified path to the associated const
    |
-LL |     assert_eq!(<char as IpuItertools>::C, 1);
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     assert_eq!(char::C, 1);
+LL +     assert_eq!(<char as IpuItertools>::C, 1);
+   |
 help: add `#![feature(assoc_const_ipu_iter)]` to the crate attributes to enable `inference_unstable_iterator::IpuIterator::C`
    |
 LL + #![feature(assoc_const_ipu_iter)]
diff --git a/tests/ui/inference/inference_unstable_featured.stderr b/tests/ui/inference/inference_unstable_featured.stderr
index b908c7142d4..b267ca497de 100644
--- a/tests/ui/inference/inference_unstable_featured.stderr
+++ b/tests/ui/inference/inference_unstable_featured.stderr
@@ -8,12 +8,14 @@ LL |     assert_eq!('x'.ipu_flatten(), 0);
    = note: candidate #2 is defined in an impl of the trait `IpuItertools` for the type `char`
 help: disambiguate the method for candidate #1
    |
-LL |     assert_eq!(IpuIterator::ipu_flatten(&'x'), 0);
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     assert_eq!('x'.ipu_flatten(), 0);
+LL +     assert_eq!(IpuIterator::ipu_flatten(&'x'), 0);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     assert_eq!(IpuItertools::ipu_flatten(&'x'), 0);
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     assert_eq!('x'.ipu_flatten(), 0);
+LL +     assert_eq!(IpuItertools::ipu_flatten(&'x'), 0);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/issue-103587.stderr b/tests/ui/inference/issue-103587.stderr
index 589cb7ea7b1..bd6a9b71b86 100644
--- a/tests/ui/inference/issue-103587.stderr
+++ b/tests/ui/inference/issue-103587.stderr
@@ -6,8 +6,9 @@ LL |     if let Some(_) == x {}
    |
 help: consider using `=` here
    |
-LL |     if let Some(_) = x {}
-   |                    ~
+LL -     if let Some(_) == x {}
+LL +     if let Some(_) = x {}
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-103587.rs:7:8
diff --git a/tests/ui/inference/issue-104649.stderr b/tests/ui/inference/issue-104649.stderr
index 391ed16f349..27382e30134 100644
--- a/tests/ui/inference/issue-104649.stderr
+++ b/tests/ui/inference/issue-104649.stderr
@@ -6,8 +6,8 @@ LL |     let a = A(Result::Ok(Result::Ok(())));
    |
 help: consider giving `a` an explicit type, where the type for type parameter `E` is specified
    |
-LL |     let a: A<std::result::Result<std::result::Result<(), E>, Error>> = A(Result::Ok(Result::Ok(())));
-   |          +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+LL |     let a: A<std::result::Result<std::result::Result<_, E>, _>> = A(Result::Ok(Result::Ok(())));
+   |          ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/issue-12028.stderr b/tests/ui/inference/issue-12028.stderr
index 3d7fb13d447..0d8ef1c938d 100644
--- a/tests/ui/inference/issue-12028.stderr
+++ b/tests/ui/inference/issue-12028.stderr
@@ -7,8 +7,9 @@ LL |         self.input_stream(&mut stream);
    = note: cannot satisfy `<_ as StreamHasher>::S == <H as StreamHasher>::S`
 help: try using a fully qualified path to specify the expected types
    |
-LL |         <u8 as StreamHash<H>>::input_stream(self, &mut stream);
-   |         ++++++++++++++++++++++++++++++++++++    ~
+LL -         self.input_stream(&mut stream);
+LL +         <u8 as StreamHash<H>>::input_stream(self, &mut stream);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/issue-70082.stderr b/tests/ui/inference/issue-70082.stderr
index 442e7479a9e..926ecff4a4f 100644
--- a/tests/ui/inference/issue-70082.stderr
+++ b/tests/ui/inference/issue-70082.stderr
@@ -9,8 +9,9 @@ LL |     let y: f64 = 0.01f64 * 1i16.into();
    = note: cannot satisfy `<f64 as Mul<_>>::Output == f64`
 help: try using a fully qualified path to specify the expected types
    |
-LL |     let y: f64 = 0.01f64 * <i16 as Into<T>>::into(1i16);
-   |                            +++++++++++++++++++++++    ~
+LL -     let y: f64 = 0.01f64 * 1i16.into();
+LL +     let y: f64 = 0.01f64 * <i16 as Into<T>>::into(1i16);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/issue-71584.stderr b/tests/ui/inference/issue-71584.stderr
index 391d3e7613e..4bbfef6c44a 100644
--- a/tests/ui/inference/issue-71584.stderr
+++ b/tests/ui/inference/issue-71584.stderr
@@ -9,8 +9,9 @@ LL |     d = d % n.into();
    = note: cannot satisfy `<u64 as Rem<_>>::Output == u64`
 help: try using a fully qualified path to specify the expected types
    |
-LL |     d = d % <u32 as Into<T>>::into(n);
-   |             +++++++++++++++++++++++ ~
+LL -     d = d % n.into();
+LL +     d = d % <u32 as Into<T>>::into(n);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/issue-72616.stderr b/tests/ui/inference/issue-72616.stderr
index 3848fcf61d9..31a0586301d 100644
--- a/tests/ui/inference/issue-72616.stderr
+++ b/tests/ui/inference/issue-72616.stderr
@@ -16,8 +16,9 @@ LL |         if String::from("a") == "a".try_into().unwrap() {}
              `String` implements `PartialEq`
 help: try using a fully qualified path to specify the expected types
    |
-LL |         if String::from("a") == <&str as TryInto<T>>::try_into("a").unwrap() {}
-   |                                 +++++++++++++++++++++++++++++++   ~
+LL -         if String::from("a") == "a".try_into().unwrap() {}
+LL +         if String::from("a") == <&str as TryInto<T>>::try_into("a").unwrap() {}
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72616.rs:22:37
@@ -32,8 +33,9 @@ LL |         if String::from("a") == "a".try_into().unwrap() {}
    = note: required for `&str` to implement `TryInto<_>`
 help: try using a fully qualified path to specify the expected types
    |
-LL |         if String::from("a") == <&str as TryInto<T>>::try_into("a").unwrap() {}
-   |                                 +++++++++++++++++++++++++++++++   ~
+LL -         if String::from("a") == "a".try_into().unwrap() {}
+LL +         if String::from("a") == <&str as TryInto<T>>::try_into("a").unwrap() {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/inference/issue-72690.stderr b/tests/ui/inference/issue-72690.stderr
index 2d09f667ae2..4926cf9e981 100644
--- a/tests/ui/inference/issue-72690.stderr
+++ b/tests/ui/inference/issue-72690.stderr
@@ -22,8 +22,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72690.rs:12:9
@@ -49,8 +50,9 @@ LL |     |x| String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     |x| String::from(<str as AsRef<T>>::as_ref("x"));
-   |                      ++++++++++++++++++++++++++   ~
+LL -     |x| String::from("x".as_ref());
+LL +     |x| String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed for `&_`
   --> $DIR/issue-72690.rs:17:9
@@ -93,8 +95,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72690.rs:28:5
@@ -120,8 +123,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72690.rs:37:5
@@ -147,8 +151,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72690.rs:46:5
@@ -174,8 +179,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72690.rs:53:5
@@ -201,8 +207,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-72690.rs:62:5
@@ -228,8 +235,9 @@ LL |     String::from("x".as_ref());
            - impl AsRef<str> for str;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     String::from(<str as AsRef<T>>::as_ref("x"));
-   |                  ++++++++++++++++++++++++++   ~
+LL -     String::from("x".as_ref());
+LL +     String::from(<str as AsRef<T>>::as_ref("x"));
+   |
 
 error: aborting due to 17 previous errors
 
diff --git a/tests/ui/inference/issue-80816.stderr b/tests/ui/inference/issue-80816.stderr
index ab62db8e6af..bca7cd4c3ad 100644
--- a/tests/ui/inference/issue-80816.stderr
+++ b/tests/ui/inference/issue-80816.stderr
@@ -21,8 +21,9 @@ LL | impl<T, A: Access<T>, P: Deref<Target = A>> Access<T> for P {
    |            unsatisfied trait bound introduced here
 help: try using a fully qualified path to specify the expected types
    |
-LL |     let guard: Guard<Arc<usize>> = <Arc<ArcSwapAny<Arc<usize>>> as Access<T>>::load(&s);
-   |                                    ++++++++++++++++++++++++++++++++++++++++++++++++++ ~
+LL -     let guard: Guard<Arc<usize>> = s.load();
+LL +     let guard: Guard<Arc<usize>> = <Arc<ArcSwapAny<Arc<usize>>> as Access<T>>::load(&s);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/issue-83606.stderr b/tests/ui/inference/issue-83606.stderr
index 69d1d71ef3c..97ccad9e785 100644
--- a/tests/ui/inference/issue-83606.stderr
+++ b/tests/ui/inference/issue-83606.stderr
@@ -11,8 +11,8 @@ LL | fn foo<const N: usize>(_: impl std::fmt::Display) -> [usize; N] {
    |        ^^^^^^^^^^^^^^ required by this const generic parameter in `foo`
 help: consider giving this pattern a type, where the value of const parameter `N` is specified
    |
-LL |     let _: [usize; N] = foo("foo");
-   |          ++++++++++++
+LL |     let _: [_; N] = foo("foo");
+   |          ++++++++
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.rs b/tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.rs
new file mode 100644
index 00000000000..4fd15eea9e0
--- /dev/null
+++ b/tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.rs
@@ -0,0 +1,10 @@
+type A = (i32, i32, i32, i32);
+type B = (A, A, A, A);
+type C = (B, B, B, B);
+type D = (C, C, C, C);
+
+fn foo(x: D) {
+    let y = Err(x); //~ ERROR type annotations needed for `Result<_
+}
+
+fn main() {}
diff --git a/tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.stderr b/tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.stderr
new file mode 100644
index 00000000000..65fe2ffcb7f
--- /dev/null
+++ b/tests/ui/inference/really-long-type-in-let-binding-without-sufficient-type-info.stderr
@@ -0,0 +1,14 @@
+error[E0282]: type annotations needed for `Result<_, ((((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32))), (((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32))), (((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32))), (((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32)), ((i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32), (i32, i32, i32, i32))))>`
+  --> $DIR/really-long-type-in-let-binding-without-sufficient-type-info.rs:7:9
+   |
+LL |     let y = Err(x);
+   |         ^   ------ type must be known at this point
+   |
+help: consider giving `y` an explicit type, where the type for type parameter `T` is specified
+   |
+LL |     let y: Result<T, _> = Err(x);
+   |          ++++++++++++++
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0282`.
diff --git a/tests/ui/inference/str-as-char.stderr b/tests/ui/inference/str-as-char.stderr
index 4ca71c5f067..2e70faa8cfa 100644
--- a/tests/ui/inference/str-as-char.stderr
+++ b/tests/ui/inference/str-as-char.stderr
@@ -6,8 +6,9 @@ LL |     let _: &str = '"""';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _: &str = "\"\"\"";
-   |                   ~~~~~~~~
+LL -     let _: &str = '"""';
+LL +     let _: &str = "\"\"\"";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/str-as-char.rs:9:19
@@ -17,8 +18,9 @@ LL |     let _: &str = '\"\"\"';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _: &str = "\"\"\"";
-   |                   ~      ~
+LL -     let _: &str = '\"\"\"';
+LL +     let _: &str = "\"\"\"";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/str-as-char.rs:10:19
@@ -28,8 +30,9 @@ LL |     let _: &str = '"\"\"\\"\\"';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _: &str = "\"\"\\"\\"\\\"";
-   |                   ~~~~~~~~~~~~~~~~~~~~
+LL -     let _: &str = '"\"\"\\"\\"';
+LL +     let _: &str = "\"\"\\"\\"\\\"";
+   |
 
 error[E0308]: mismatched types
   --> $DIR/str-as-char.rs:7:19
@@ -41,8 +44,9 @@ LL |     let _: &str = 'a';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _: &str = "a";
-   |                   ~ ~
+LL -     let _: &str = 'a';
+LL +     let _: &str = "a";
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/infinite/infinite-assoc.stderr b/tests/ui/infinite/infinite-assoc.stderr
index e6b91f13241..c55d85942a4 100644
--- a/tests/ui/infinite/infinite-assoc.stderr
+++ b/tests/ui/infinite/infinite-assoc.stderr
@@ -6,8 +6,9 @@ LL | struct A((A, <S as Trait>::T<NOT_EXIST?>));
    |
 help: if you meant to express that the type might not contain a value, use the `Option` wrapper type
    |
-LL | struct A((A, <S as Trait>::T<Option<NOT_EXIST>>));
-   |                              +++++++         ~
+LL - struct A((A, <S as Trait>::T<NOT_EXIST?>));
+LL + struct A((A, <S as Trait>::T<Option<NOT_EXIST>>));
+   |
 
 error[E0072]: recursive type `A` has infinite size
   --> $DIR/infinite-assoc.rs:12:1
diff --git a/tests/ui/inline-const/cross-const-control-flow-125846.stderr b/tests/ui/inline-const/cross-const-control-flow-125846.stderr
index 4aa1c273504..0a910e70d09 100644
--- a/tests/ui/inline-const/cross-const-control-flow-125846.stderr
+++ b/tests/ui/inline-const/cross-const-control-flow-125846.stderr
@@ -26,8 +26,9 @@ LL |     const { &x };
    |
 help: consider using `const` instead of `let`
    |
-LL |     const x: /* Type */ = 1;
-   |     ~~~~~  ++++++++++++
+LL -     let x = 1;
+LL +     const x: /* Type */ = 1;
+   |
 
 error[E0728]: `await` is only allowed inside `async` functions and blocks
   --> $DIR/cross-const-control-flow-125846.rs:35:22
diff --git a/tests/ui/intrinsics/incorrect-read_via_copy-defn.rs b/tests/ui/intrinsics/incorrect-read_via_copy-defn.rs
index 66de1f60ed9..5520430e140 100644
--- a/tests/ui/intrinsics/incorrect-read_via_copy-defn.rs
+++ b/tests/ui/intrinsics/incorrect-read_via_copy-defn.rs
@@ -3,5 +3,5 @@ fn main() {
 }
 
 extern "rust-intrinsic" fn read_via_copy() {}
-//~^ ERROR intrinsics are subject to change
+//~^ ERROR "rust-intrinsic" ABI is an implementation detail
 //~| ERROR intrinsic must be in `extern "rust-intrinsic" { ... }` block
diff --git a/tests/ui/intrinsics/incorrect-read_via_copy-defn.stderr b/tests/ui/intrinsics/incorrect-read_via_copy-defn.stderr
index 362ee185b7b..c6682693f74 100644
--- a/tests/ui/intrinsics/incorrect-read_via_copy-defn.stderr
+++ b/tests/ui/intrinsics/incorrect-read_via_copy-defn.stderr
@@ -1,4 +1,4 @@
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/incorrect-read_via_copy-defn.rs:5:8
    |
 LL | extern "rust-intrinsic" fn read_via_copy() {}
diff --git a/tests/ui/intrinsics/incorrect-transmute.rs b/tests/ui/intrinsics/incorrect-transmute.rs
index eed524ae8a8..15d1ab939ed 100644
--- a/tests/ui/intrinsics/incorrect-transmute.rs
+++ b/tests/ui/intrinsics/incorrect-transmute.rs
@@ -3,5 +3,5 @@ fn main() {
 }
 
 extern "rust-intrinsic" fn transmute() {}
-//~^ ERROR intrinsics are subject to change
+//~^ ERROR "rust-intrinsic" ABI is an implementation detail
 //~| ERROR intrinsic must be in `extern "rust-intrinsic" { ... }` block
diff --git a/tests/ui/intrinsics/incorrect-transmute.stderr b/tests/ui/intrinsics/incorrect-transmute.stderr
index 8123f3d71a2..99dfb9847ff 100644
--- a/tests/ui/intrinsics/incorrect-transmute.stderr
+++ b/tests/ui/intrinsics/incorrect-transmute.stderr
@@ -1,4 +1,4 @@
-error[E0658]: intrinsics are subject to change
+error[E0658]: the extern "rust-intrinsic" ABI is an implementation detail and perma-unstable
   --> $DIR/incorrect-transmute.rs:5:8
    |
 LL | extern "rust-intrinsic" fn transmute() {}
diff --git a/tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.stderr b/tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.stderr
index 7e05ae4f20c..d92836aa063 100644
--- a/tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.stderr
+++ b/tests/ui/invalid/invalid-rustc_legacy_const_generics-issue-123077.stderr
@@ -6,8 +6,9 @@ LL |     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, || ());
    |
 help: try using a const generic argument instead
    |
-LL |     std::arch::x86_64::_mm_blend_ps::<{ || () }>(loop {}, loop {});
-   |                                    +++++++++++++ ~~~~~~~~~~~~~~~~
+LL -     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, || ());
+LL +     std::arch::x86_64::_mm_blend_ps::<{ || () }>(loop {}, loop {});
+   |
 
 error: invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items
   --> $DIR/invalid-rustc_legacy_const_generics-issue-123077.rs:11:59
@@ -17,8 +18,9 @@ LL |     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, 5 + || ());
    |
 help: try using a const generic argument instead
    |
-LL |     std::arch::x86_64::_mm_blend_ps::<{ 5 + (|| ()) }>(loop {}, loop {});
-   |                                    +++++++++++++++++++ ~~~~~~~~~~~~~~~~
+LL -     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, 5 + || ());
+LL +     std::arch::x86_64::_mm_blend_ps::<{ 5 + (|| ()) }>(loop {}, loop {});
+   |
 
 error: invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items
   --> $DIR/invalid-rustc_legacy_const_generics-issue-123077.rs:14:61
@@ -28,8 +30,9 @@ LL |     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, foo::<{ 1 + 2 }>());
    |
 help: try using a const generic argument instead
    |
-LL |     std::arch::x86_64::_mm_blend_ps::<{ foo::<{ 1 + 2 }>() }>(loop {}, loop {});
-   |                                    ++++++++++++++++++++++++++ ~~~~~~~~~~~~~~~~
+LL -     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, foo::<{ 1 + 2 }>());
+LL +     std::arch::x86_64::_mm_blend_ps::<{ foo::<{ 1 + 2 }>() }>(loop {}, loop {});
+   |
 
 error: invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items
   --> $DIR/invalid-rustc_legacy_const_generics-issue-123077.rs:17:61
@@ -39,8 +42,9 @@ LL |     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, foo::<3>());
    |
 help: try using a const generic argument instead
    |
-LL |     std::arch::x86_64::_mm_blend_ps::<{ foo::<3>() }>(loop {}, loop {});
-   |                                    ++++++++++++++++++ ~~~~~~~~~~~~~~~~
+LL -     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, foo::<3>());
+LL +     std::arch::x86_64::_mm_blend_ps::<{ foo::<3>() }>(loop {}, loop {});
+   |
 
 error: invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items
   --> $DIR/invalid-rustc_legacy_const_generics-issue-123077.rs:20:56
@@ -50,8 +54,9 @@ LL |     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, &const {});
    |
 help: try using a const generic argument instead
    |
-LL |     std::arch::x86_64::_mm_blend_ps::<{ &const {} }>(loop {}, loop {});
-   |                                    +++++++++++++++++ ~~~~~~~~~~~~~~~~
+LL -     std::arch::x86_64::_mm_blend_ps(loop {}, loop {}, &const {});
+LL +     std::arch::x86_64::_mm_blend_ps::<{ &const {} }>(loop {}, loop {});
+   |
 
 error: invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items
   --> $DIR/invalid-rustc_legacy_const_generics-issue-123077.rs:24:9
@@ -75,8 +80,9 @@ LL |     std::arch::x86_64::_mm_inserti_si64(loop {}, loop {}, || (), 1 + || ())
    |
 help: try using a const generic argument instead
    |
-LL |     std::arch::x86_64::_mm_inserti_si64::<{ || () }, { 1 + (|| ()) }>(loop {}, loop {});
-   |                                        ++++++++++++++++++++++++++++++ ~~~~~~~~~~~~~~~~
+LL -     std::arch::x86_64::_mm_inserti_si64(loop {}, loop {}, || (), 1 + || ());
+LL +     std::arch::x86_64::_mm_inserti_si64::<{ || () }, { 1 + (|| ()) }>(loop {}, loop {});
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/issues/issue-13497.stderr b/tests/ui/issues/issue-13497.stderr
index 7630848f6a5..8016b55d6aa 100644
--- a/tests/ui/issues/issue-13497.stderr
+++ b/tests/ui/issues/issue-13497.stderr
@@ -11,8 +11,9 @@ LL |     &'static str
    |      +++++++
 help: instead, you are more likely to want to return an owned value
    |
-LL |     String
-   |     ~~~~~~
+LL -     &str
+LL +     String
+   |
 
 error[E0515]: cannot return value referencing local variable `rawLines`
   --> $DIR/issue-13497.rs:5:5
diff --git a/tests/ui/issues/issue-17546.stderr b/tests/ui/issues/issue-17546.stderr
index cf7ed1bbd66..25a94dd9723 100644
--- a/tests/ui/issues/issue-17546.stderr
+++ b/tests/ui/issues/issue-17546.stderr
@@ -9,12 +9,14 @@ LL |     fn new() -> NoResult<MyEnum, String> {
    |
 help: try using the variant's enum
    |
-LL |     fn new() -> foo::MyEnum {
-   |                 ~~~~~~~~~~~
+LL -     fn new() -> NoResult<MyEnum, String> {
+LL +     fn new() -> foo::MyEnum {
+   |
 help: an enum with a similar name exists
    |
-LL |     fn new() -> Result<MyEnum, String> {
-   |                 ~~~~~~
+LL -     fn new() -> NoResult<MyEnum, String> {
+LL +     fn new() -> Result<MyEnum, String> {
+   |
 
 error[E0573]: expected type, found variant `Result`
   --> $DIR/issue-17546.rs:24:17
@@ -61,12 +63,14 @@ LL | fn newer() -> NoResult<foo::MyEnum, String> {
    |
 help: try using the variant's enum
    |
-LL | fn newer() -> foo::MyEnum {
-   |               ~~~~~~~~~~~
+LL - fn newer() -> NoResult<foo::MyEnum, String> {
+LL + fn newer() -> foo::MyEnum {
+   |
 help: an enum with a similar name exists
    |
-LL | fn newer() -> Result<foo::MyEnum, String> {
-   |               ~~~~~~
+LL - fn newer() -> NoResult<foo::MyEnum, String> {
+LL + fn newer() -> Result<foo::MyEnum, String> {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/issues/issue-17800.stderr b/tests/ui/issues/issue-17800.stderr
index 2a15af50d02..322c77eaa1d 100644
--- a/tests/ui/issues/issue-17800.stderr
+++ b/tests/ui/issues/issue-17800.stderr
@@ -6,8 +6,9 @@ LL |         MyOption::MySome { x: 42 } => (),
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         MyOption::MySome(42) => (),
-   |                         ~~~~
+LL -         MyOption::MySome { x: 42 } => (),
+LL +         MyOption::MySome(42) => (),
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-18107.stderr b/tests/ui/issues/issue-18107.stderr
index 6956d6a34aa..177ef2f1c33 100644
--- a/tests/ui/issues/issue-18107.stderr
+++ b/tests/ui/issues/issue-18107.stderr
@@ -6,8 +6,9 @@ LL |     dyn AbstractRenderer
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL |     impl AbstractRenderer
-   |     ~~~~
+LL -     dyn AbstractRenderer
+LL +     impl AbstractRenderer
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~     Box<dyn AbstractRenderer>
diff --git a/tests/ui/issues/issue-18446.stderr b/tests/ui/issues/issue-18446.stderr
index 08a9cfc644f..25ae303e902 100644
--- a/tests/ui/issues/issue-18446.stderr
+++ b/tests/ui/issues/issue-18446.stderr
@@ -16,8 +16,9 @@ LL |     fn foo(&self) {}
    |     ^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     T::foo(&x);
-   |     ~~~~~~~~~~
+LL -     x.foo();
+LL +     T::foo(&x);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-20225.stderr b/tests/ui/issues/issue-20225.stderr
index 7d6b09cf7f8..6a3c4e2a836 100644
--- a/tests/ui/issues/issue-20225.stderr
+++ b/tests/ui/issues/issue-20225.stderr
@@ -10,8 +10,9 @@ LL |   extern "rust-call" fn call(&self, (_,): (T,)) {}
               found signature `extern "rust-call" fn(&Foo, (_,))`
 help: change the parameter type to match the trait
    |
-LL |   extern "rust-call" fn call(&self, (_,): (&'a T,)) {}
-   |                                           ~~~~~~~~
+LL -   extern "rust-call" fn call(&self, (_,): (T,)) {}
+LL +   extern "rust-call" fn call(&self, (_,): (&'a T,)) {}
+   |
 
 error[E0053]: method `call_mut` has an incompatible type for trait
   --> $DIR/issue-20225.rs:11:51
@@ -25,8 +26,9 @@ LL |   extern "rust-call" fn call_mut(&mut self, (_,): (T,)) {}
               found signature `extern "rust-call" fn(&mut Foo, (_,))`
 help: change the parameter type to match the trait
    |
-LL |   extern "rust-call" fn call_mut(&mut self, (_,): (&'a T,)) {}
-   |                                                   ~~~~~~~~
+LL -   extern "rust-call" fn call_mut(&mut self, (_,): (T,)) {}
+LL +   extern "rust-call" fn call_mut(&mut self, (_,): (&'a T,)) {}
+   |
 
 error[E0053]: method `call_once` has an incompatible type for trait
   --> $DIR/issue-20225.rs:18:47
@@ -41,8 +43,9 @@ LL |   extern "rust-call" fn call_once(self, (_,): (T,)) {}
               found signature `extern "rust-call" fn(Foo, (_,))`
 help: change the parameter type to match the trait
    |
-LL |   extern "rust-call" fn call_once(self, (_,): (&'a T,)) {}
-   |                                               ~~~~~~~~
+LL -   extern "rust-call" fn call_once(self, (_,): (T,)) {}
+LL +   extern "rust-call" fn call_once(self, (_,): (&'a T,)) {}
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/issues/issue-21332.stderr b/tests/ui/issues/issue-21332.stderr
index 7c960f7646d..237b3acc9b4 100644
--- a/tests/ui/issues/issue-21332.stderr
+++ b/tests/ui/issues/issue-21332.stderr
@@ -8,8 +8,9 @@ LL |     fn next(&mut self) -> Result<i32, i32> { Ok(7) }
               found signature `fn(&mut S) -> Result<i32, i32>`
 help: change the output type to match the trait
    |
-LL |     fn next(&mut self) -> Option<i32> { Ok(7) }
-   |                           ~~~~~~~~~~~
+LL -     fn next(&mut self) -> Result<i32, i32> { Ok(7) }
+LL +     fn next(&mut self) -> Option<i32> { Ok(7) }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-23041.stderr b/tests/ui/issues/issue-23041.stderr
index 0142926dd15..bd0e457fa9d 100644
--- a/tests/ui/issues/issue-23041.stderr
+++ b/tests/ui/issues/issue-23041.stderr
@@ -6,8 +6,9 @@ LL |     b.downcast_ref::<fn(_)->_>();
    |
 help: consider specifying the generic argument
    |
-LL |     b.downcast_ref::<fn(_) -> _>();
-   |                   ~~~~~~~~~~~~~~
+LL -     b.downcast_ref::<fn(_)->_>();
+LL +     b.downcast_ref::<fn(_) -> _>();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-23073.stderr b/tests/ui/issues/issue-23073.stderr
index 6a61df8d46b..8aa86887bcf 100644
--- a/tests/ui/issues/issue-23073.stderr
+++ b/tests/ui/issues/issue-23073.stderr
@@ -6,8 +6,9 @@ LL |     type FooT = <<Self as Bar>::Foo>::T;
    |
 help: if there were a trait named `Example` with associated type `T` implemented for `<Self as Bar>::Foo`, you could use the fully-qualified path
    |
-LL |     type FooT = <<Self as Bar>::Foo as Example>::T;
-   |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     type FooT = <<Self as Bar>::Foo>::T;
+LL +     type FooT = <<Self as Bar>::Foo as Example>::T;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-23217.stderr b/tests/ui/issues/issue-23217.stderr
index d14da75ab72..830d260f99d 100644
--- a/tests/ui/issues/issue-23217.stderr
+++ b/tests/ui/issues/issue-23217.stderr
@@ -8,8 +8,9 @@ LL |     B = SomeEnum::A,
    |
 help: there is a variant with a similar name
    |
-LL |     B = SomeEnum::B,
-   |                   ~
+LL -     B = SomeEnum::A,
+LL +     B = SomeEnum::B,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-23589.stderr b/tests/ui/issues/issue-23589.stderr
index 21d383b0e8c..726efea1d6f 100644
--- a/tests/ui/issues/issue-23589.stderr
+++ b/tests/ui/issues/issue-23589.stderr
@@ -6,8 +6,9 @@ LL |     let v: Vec(&str) = vec!['1', '2'];
    |
 help: use angle brackets instead
    |
-LL |     let v: Vec<&str> = vec!['1', '2'];
-   |               ~    ~
+LL -     let v: Vec(&str) = vec!['1', '2'];
+LL +     let v: Vec<&str> = vec!['1', '2'];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-23589.rs:2:29
@@ -17,8 +18,9 @@ LL |     let v: Vec(&str) = vec!['1', '2'];
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let v: Vec(&str) = vec!["1", '2'];
-   |                             ~ ~
+LL -     let v: Vec(&str) = vec!['1', '2'];
+LL +     let v: Vec(&str) = vec!["1", '2'];
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/issues/issue-27433.stderr b/tests/ui/issues/issue-27433.stderr
index f6d5fc2b768..d8fd3d84ecb 100644
--- a/tests/ui/issues/issue-27433.stderr
+++ b/tests/ui/issues/issue-27433.stderr
@@ -6,8 +6,9 @@ LL |     const FOO : u32 = foo;
    |
 help: consider using `let` instead of `const`
    |
-LL |     let FOO : u32 = foo;
-   |     ~~~
+LL -     const FOO : u32 = foo;
+LL +     let FOO : u32 = foo;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-28971.stderr b/tests/ui/issues/issue-28971.stderr
index 7ca57d6b998..fd689a2b36e 100644
--- a/tests/ui/issues/issue-28971.stderr
+++ b/tests/ui/issues/issue-28971.stderr
@@ -9,8 +9,9 @@ LL |             Foo::Baz(..) => (),
    |
 help: there is a variant with a similar name
    |
-LL |             Foo::Bar(..) => (),
-   |                  ~~~
+LL -             Foo::Baz(..) => (),
+LL +             Foo::Bar(..) => (),
+   |
 
 error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
   --> $DIR/issue-28971.rs:15:5
diff --git a/tests/ui/issues/issue-32004.stderr b/tests/ui/issues/issue-32004.stderr
index 2d2ed5a6301..88395cd8520 100644
--- a/tests/ui/issues/issue-32004.stderr
+++ b/tests/ui/issues/issue-32004.stderr
@@ -11,12 +11,14 @@ LL |         Foo::Bar => {}
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         Foo::Bar(_) => {}
-   |         ~~~~~~~~~~~
+LL -         Foo::Bar => {}
+LL +         Foo::Bar(_) => {}
+   |
 help: a unit variant with a similar name exists
    |
-LL |         Foo::Baz => {}
-   |              ~~~
+LL -         Foo::Bar => {}
+LL +         Foo::Baz => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `S`
   --> $DIR/issue-32004.rs:16:9
diff --git a/tests/ui/issues/issue-34209.stderr b/tests/ui/issues/issue-34209.stderr
index 4c61d250f52..83b40d0c081 100644
--- a/tests/ui/issues/issue-34209.stderr
+++ b/tests/ui/issues/issue-34209.stderr
@@ -9,8 +9,9 @@ LL |         S::B {} => {},
    |
 help: there is a variant with a similar name
    |
-LL |         S::A {} => {},
-   |            ~
+LL -         S::B {} => {},
+LL +         S::A {} => {},
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-3521-2.stderr b/tests/ui/issues/issue-3521-2.stderr
index a12241cb1df..ecf1ad0403d 100644
--- a/tests/ui/issues/issue-3521-2.stderr
+++ b/tests/ui/issues/issue-3521-2.stderr
@@ -6,8 +6,9 @@ LL |     static y: isize = foo + 1;
    |
 help: consider using `let` instead of `static`
    |
-LL |     let y: isize = foo + 1;
-   |     ~~~
+LL -     static y: isize = foo + 1;
+LL +     let y: isize = foo + 1;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.stderr b/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.stderr
index 9661dbf2f62..f87514ba83b 100644
--- a/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.stderr
+++ b/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.stderr
@@ -6,8 +6,9 @@ LL |     static child: isize = x + 1;
    |
 help: consider using `let` instead of `static`
    |
-LL |     let child: isize = x + 1;
-   |     ~~~
+LL -     static child: isize = x + 1;
+LL +     let child: isize = x + 1;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.stderr b/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.stderr
index 7fad45f4b1a..06e0192d957 100644
--- a/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.stderr
+++ b/tests/ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.stderr
@@ -6,8 +6,9 @@ LL |        static childVal: Box<P> = self.child.get();
    |
 help: consider using `let` instead of `static`
    |
-LL |        let childVal: Box<P> = self.child.get();
-   |        ~~~
+LL -        static childVal: Box<P> = self.child.get();
+LL +        let childVal: Box<P> = self.child.get();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-3702-2.stderr b/tests/ui/issues/issue-3702-2.stderr
index 7ab6520a0ca..448263aafd4 100644
--- a/tests/ui/issues/issue-3702-2.stderr
+++ b/tests/ui/issues/issue-3702-2.stderr
@@ -16,12 +16,14 @@ LL |     fn to_int(&self) -> isize { 0 }
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |         Add::to_int(&self) + other.to_int()
-   |         ~~~~~~~~~~~~~~~~~~
+LL -         self.to_int() + other.to_int()
+LL +         Add::to_int(&self) + other.to_int()
+   |
 help: disambiguate the method for candidate #2
    |
-LL |         ToPrimitive::to_int(&self) + other.to_int()
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         self.to_int() + other.to_int()
+LL +         ToPrimitive::to_int(&self) + other.to_int()
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-41652/issue-41652.stderr b/tests/ui/issues/issue-41652/issue-41652.stderr
index a5a2fab2ede..c8299f28d34 100644
--- a/tests/ui/issues/issue-41652/issue-41652.stderr
+++ b/tests/ui/issues/issue-41652/issue-41652.stderr
@@ -6,8 +6,9 @@ LL |         3.f()
    |
 help: you must specify a concrete type for this numeric value, like `i32`
    |
-LL |         3_i32.f()
-   |         ~~~~~
+LL -         3.f()
+LL +         3_i32.f()
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-41726.stderr b/tests/ui/issues/issue-41726.stderr
index 250bba222bf..d5123ab679f 100644
--- a/tests/ui/issues/issue-41726.stderr
+++ b/tests/ui/issues/issue-41726.stderr
@@ -7,8 +7,9 @@ LL |         things[src.as_str()].sort();
    = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `HashMap<String, Vec<String>>`
 help: to modify a `HashMap<String, Vec<String>>` use `.get_mut()`
    |
-LL |         if let Some(val) = things.get_mut(src.as_str()) { val.sort(); };
-   |         ++++++++++++++++++       ~~~~~~~~~            ~~~~~~~       +++
+LL -         things[src.as_str()].sort();
+LL +         if let Some(val) = things.get_mut(src.as_str()) { val.sort(); };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-42312.stderr b/tests/ui/issues/issue-42312.stderr
index cbdc9ce0f83..68d9912e3b1 100644
--- a/tests/ui/issues/issue-42312.stderr
+++ b/tests/ui/issues/issue-42312.stderr
@@ -25,8 +25,9 @@ LL | pub fn f(_: dyn ToString) {}
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL | pub fn f(_: impl ToString) {}
-   |             ~~~~
+LL - pub fn f(_: dyn ToString) {}
+LL + pub fn f(_: impl ToString) {}
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL | pub fn f(_: &dyn ToString) {}
diff --git a/tests/ui/issues/issue-44239.stderr b/tests/ui/issues/issue-44239.stderr
index 1a047d4c63b..8048e32f149 100644
--- a/tests/ui/issues/issue-44239.stderr
+++ b/tests/ui/issues/issue-44239.stderr
@@ -6,8 +6,9 @@ LL |         const N: usize = n;
    |
 help: consider using `const` instead of `let`
    |
-LL |     const n: usize = 0;
-   |     ~~~~~
+LL -     let n: usize = 0;
+LL +     const n: usize = 0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr b/tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr
index 0aa1ae7222f..0a6fe24d5e3 100644
--- a/tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr
+++ b/tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr
@@ -6,8 +6,9 @@ LL |     let _condemned = justice.00;
    |
 help: a field with a similar name exists
    |
-LL |     let _condemned = justice.0;
-   |                              ~
+LL -     let _condemned = justice.00;
+LL +     let _condemned = justice.0;
+   |
 
 error[E0609]: no field `001` on type `Verdict`
   --> $DIR/issue-47073-zero-padded-tuple-struct-indices.rs:10:31
diff --git a/tests/ui/issues/issue-4736.stderr b/tests/ui/issues/issue-4736.stderr
index c1ae2c47b43..b099e528ca8 100644
--- a/tests/ui/issues/issue-4736.stderr
+++ b/tests/ui/issues/issue-4736.stderr
@@ -9,8 +9,9 @@ LL |     let z = NonCopyable{ p: () };
    |
 help: `NonCopyable` is a tuple struct, use the appropriate syntax
    |
-LL |     let z = NonCopyable(/* () */);
-   |             ~~~~~~~~~~~~~~~~~~~~~
+LL -     let z = NonCopyable{ p: () };
+LL +     let z = NonCopyable(/* () */);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-50571.stderr b/tests/ui/issues/issue-50571.stderr
index 12256ded1c0..86709410670 100644
--- a/tests/ui/issues/issue-50571.stderr
+++ b/tests/ui/issues/issue-50571.stderr
@@ -6,8 +6,9 @@ LL |     fn foo([a, b]: [i32; 2]) {}
    |
 help: give this argument a name or use an underscore to ignore it
    |
-LL |     fn foo(_: [i32; 2]) {}
-   |            ~
+LL -     fn foo([a, b]: [i32; 2]) {}
+LL +     fn foo(_: [i32; 2]) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-51874.stderr b/tests/ui/issues/issue-51874.stderr
index 5be3695dd45..18328450145 100644
--- a/tests/ui/issues/issue-51874.stderr
+++ b/tests/ui/issues/issue-51874.stderr
@@ -6,8 +6,9 @@ LL |     let a = (1.0).pow(1.0);
    |
 help: you must specify a concrete type for this numeric value, like `f32`
    |
-LL |     let a = (1.0_f32).pow(1.0);
-   |              ~~~~~~~
+LL -     let a = (1.0).pow(1.0);
+LL +     let a = (1.0_f32).pow(1.0);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-5358-1.stderr b/tests/ui/issues/issue-5358-1.stderr
index 1bb946ce4cb..f598cf33911 100644
--- a/tests/ui/issues/issue-5358-1.stderr
+++ b/tests/ui/issues/issue-5358-1.stderr
@@ -14,8 +14,9 @@ LL |         S(Either::Right(_)) => {}
    |         ++                +
 help: you might have meant to use field `0` whose type is `Either<usize, usize>`
    |
-LL |     match S(Either::Left(5)).0 {
-   |           ~~~~~~~~~~~~~~~~~~~~
+LL -     match S(Either::Left(5)) {
+LL +     match S(Either::Left(5)).0 {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-56175.stderr b/tests/ui/issues/issue-56175.stderr
index 6ed35c3a3d3..695aa2ac796 100644
--- a/tests/ui/issues/issue-56175.stderr
+++ b/tests/ui/issues/issue-56175.stderr
@@ -16,8 +16,9 @@ LL + use reexported_trait::Trait;
    |
 help: there is a method `trait_method_b` with a similar name
    |
-LL |     reexported_trait::FooStruct.trait_method_b();
-   |                                 ~~~~~~~~~~~~~~
+LL -     reexported_trait::FooStruct.trait_method();
+LL +     reexported_trait::FooStruct.trait_method_b();
+   |
 
 error[E0599]: no method named `trait_method_b` found for struct `FooStruct` in the current scope
   --> $DIR/issue-56175.rs:7:33
@@ -37,8 +38,9 @@ LL + use reexported_trait::TraitBRename;
    |
 help: there is a method `trait_method` with a similar name
    |
-LL |     reexported_trait::FooStruct.trait_method();
-   |                                 ~~~~~~~~~~~~
+LL -     reexported_trait::FooStruct.trait_method_b();
+LL +     reexported_trait::FooStruct.trait_method();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/issues/issue-57741-dereference-boxed-value/issue-57741.stderr b/tests/ui/issues/issue-57741-dereference-boxed-value/issue-57741.stderr
index 3c19b68cffb..713a19f6cb0 100644
--- a/tests/ui/issues/issue-57741-dereference-boxed-value/issue-57741.stderr
+++ b/tests/ui/issues/issue-57741-dereference-boxed-value/issue-57741.stderr
@@ -10,8 +10,9 @@ LL |         T::A(a) | T::B(a) => a,
                 found enum `T`
 help: consider dereferencing the boxed value
    |
-LL |     let y = match *x {
-   |                   ~~
+LL -     let y = match x {
+LL +     let y = match *x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-57741.rs:20:19
@@ -25,8 +26,9 @@ LL |         T::A(a) | T::B(a) => a,
                 found enum `T`
 help: consider dereferencing the boxed value
    |
-LL |     let y = match *x {
-   |                   ~~
+LL -     let y = match x {
+LL +     let y = match *x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-57741.rs:27:9
@@ -40,8 +42,9 @@ LL |         S::A { a } | S::B { b: a } => a,
                 found enum `S`
 help: consider dereferencing the boxed value
    |
-LL |     let y = match *x {
-   |                   ~~
+LL -     let y = match x {
+LL +     let y = match *x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-57741.rs:27:22
@@ -55,8 +58,9 @@ LL |         S::A { a } | S::B { b: a } => a,
                 found enum `S`
 help: consider dereferencing the boxed value
    |
-LL |     let y = match *x {
-   |                   ~~
+LL -     let y = match x {
+LL +     let y = match *x {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/issues/issue-5883.stderr b/tests/ui/issues/issue-5883.stderr
index d7278ec32f5..2ca437b8c47 100644
--- a/tests/ui/issues/issue-5883.stderr
+++ b/tests/ui/issues/issue-5883.stderr
@@ -22,8 +22,9 @@ LL |     r: dyn A + 'static
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL |     r: impl A + 'static
-   |        ~~~~
+LL -     r: dyn A + 'static
+LL +     r: impl A + 'static
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL |     r: &dyn A + 'static
diff --git a/tests/ui/issues/issue-69683.stderr b/tests/ui/issues/issue-69683.stderr
index c428ea9ea2c..b8e9e89e56e 100644
--- a/tests/ui/issues/issue-69683.stderr
+++ b/tests/ui/issues/issue-69683.stderr
@@ -7,8 +7,9 @@ LL |     0u16.foo(b);
    = note: cannot satisfy `<u8 as Element<_>>::Array == [u8; 3]`
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <u16 as Foo<I>>::foo(0u16, b);
-   |     +++++++++++++++++++++    ~
+LL -     0u16.foo(b);
+LL +     <u16 as Foo<I>>::foo(0u16, b);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/issue-69683.rs:30:10
@@ -34,8 +35,9 @@ LL |     fn foo(self, x: <u8 as Element<I>>::Array);
    |        --- required by a bound in this associated function
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <u16 as Foo<I>>::foo(0u16, b);
-   |     +++++++++++++++++++++    ~
+LL -     0u16.foo(b);
+LL +     <u16 as Foo<I>>::foo(0u16, b);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.stderr b/tests/ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.stderr
index 8e77662b4ba..eabb0842112 100644
--- a/tests/ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.stderr
+++ b/tests/ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.stderr
@@ -6,8 +6,9 @@ LL |     let foo::Foo {} = foo::Foo::default();
    |
 help: ignore the inaccessible and unused fields
    |
-LL |     let foo::Foo { .. } = foo::Foo::default();
-   |                  ~~~~~~
+LL -     let foo::Foo {} = foo::Foo::default();
+LL +     let foo::Foo { .. } = foo::Foo::default();
+   |
 
 error: pattern requires `..` due to inaccessible fields
   --> $DIR/issue-76077-1.rs:16:9
diff --git a/tests/ui/issues/issue-76191.stderr b/tests/ui/issues/issue-76191.stderr
index 3b89ec7cb9c..a397d082142 100644
--- a/tests/ui/issues/issue-76191.stderr
+++ b/tests/ui/issues/issue-76191.stderr
@@ -24,8 +24,9 @@ LL |         RANGE => {}
             found struct `std::ops::RangeInclusive<i32>`
 help: you may want to move the range into the match block
    |
-LL |         0..=255 => {}
-   |         ~~~~~~~
+LL -         RANGE => {}
+LL +         0..=255 => {}
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-76191.rs:16:9
diff --git a/tests/ui/issues/issue-78622.stderr b/tests/ui/issues/issue-78622.stderr
index 985d6dde9f2..432913a0fc9 100644
--- a/tests/ui/issues/issue-78622.stderr
+++ b/tests/ui/issues/issue-78622.stderr
@@ -6,8 +6,9 @@ LL |     S::A::<f> {}
    |
 help: if there were a trait named `Example` with associated type `A` implemented for `S`, you could use the fully-qualified path
    |
-LL |     <S as Example>::A::<f> {}
-   |     ~~~~~~~~~~~~~~~~~
+LL -     S::A::<f> {}
+LL +     <S as Example>::A::<f> {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-80607.stderr b/tests/ui/issues/issue-80607.stderr
index d096910297b..8f9f494c8b7 100644
--- a/tests/ui/issues/issue-80607.stderr
+++ b/tests/ui/issues/issue-80607.stderr
@@ -9,8 +9,9 @@ LL |     Enum::V1 { x }
    |
 help: `Enum::V1` is a tuple variant, use the appropriate syntax
    |
-LL |     Enum::V1(/* i32 */)
-   |             ~~~~~~~~~~~
+LL -     Enum::V1 { x }
+LL +     Enum::V1(/* i32 */)
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/issues/issue-8761.stderr b/tests/ui/issues/issue-8761.stderr
index c70093bafb6..4a9db568913 100644
--- a/tests/ui/issues/issue-8761.stderr
+++ b/tests/ui/issues/issue-8761.stderr
@@ -6,8 +6,9 @@ LL |     A = 1i64,
    |
 help: change the type of the numeric literal from `i64` to `isize`
    |
-LL |     A = 1isize,
-   |          ~~~~~
+LL -     A = 1i64,
+LL +     A = 1isize,
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-8761.rs:5:9
@@ -17,8 +18,9 @@ LL |     B = 2u8
    |
 help: change the type of the numeric literal from `u8` to `isize`
    |
-LL |     B = 2isize
-   |          ~~~~~
+LL -     B = 2u8
+LL +     B = 2isize
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/iterators/into-iter-on-arrays-2018.stderr b/tests/ui/iterators/into-iter-on-arrays-2018.stderr
index 9d6bbf06c36..d4055c74f7c 100644
--- a/tests/ui/iterators/into-iter-on-arrays-2018.stderr
+++ b/tests/ui/iterators/into-iter-on-arrays-2018.stderr
@@ -9,12 +9,14 @@ LL |     let _: Iter<'_, i32> = array.into_iter();
    = note: `#[warn(array_into_iter)]` on by default
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     let _: Iter<'_, i32> = array.iter();
-   |                                  ~~~~
+LL -     let _: Iter<'_, i32> = array.into_iter();
+LL +     let _: Iter<'_, i32> = array.iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     let _: Iter<'_, i32> = IntoIterator::into_iter(array);
-   |                            ++++++++++++++++++++++++     ~
+LL -     let _: Iter<'_, i32> = array.into_iter();
+LL +     let _: Iter<'_, i32> = IntoIterator::into_iter(array);
+   |
 
 warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
   --> $DIR/into-iter-on-arrays-2018.rs:18:44
@@ -53,8 +55,9 @@ LL |     for _ in [1, 2, 3].into_iter() {}
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/IntoIterator-for-arrays.html>
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     for _ in [1, 2, 3].iter() {}
-   |                        ~~~~
+LL -     for _ in [1, 2, 3].into_iter() {}
+LL +     for _ in [1, 2, 3].iter() {}
+   |
 help: or remove `.into_iter()` to iterate by value
    |
 LL -     for _ in [1, 2, 3].into_iter() {}
diff --git a/tests/ui/iterators/into-iter-on-arrays-lint.stderr b/tests/ui/iterators/into-iter-on-arrays-lint.stderr
index da388d6b848..fb8fe79c7c9 100644
--- a/tests/ui/iterators/into-iter-on-arrays-lint.stderr
+++ b/tests/ui/iterators/into-iter-on-arrays-lint.stderr
@@ -9,12 +9,14 @@ LL |     small.into_iter();
    = note: `#[warn(array_into_iter)]` on by default
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     small.iter();
-   |           ~~~~
+LL -     small.into_iter();
+LL +     small.iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     IntoIterator::into_iter(small);
-   |     ++++++++++++++++++++++++     ~
+LL -     small.into_iter();
+LL +     IntoIterator::into_iter(small);
+   |
 
 warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
   --> $DIR/into-iter-on-arrays-lint.rs:14:12
@@ -26,12 +28,14 @@ LL |     [1, 2].into_iter();
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/IntoIterator-for-arrays.html>
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     [1, 2].iter();
-   |            ~~~~
+LL -     [1, 2].into_iter();
+LL +     [1, 2].iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     IntoIterator::into_iter([1, 2]);
-   |     ++++++++++++++++++++++++      ~
+LL -     [1, 2].into_iter();
+LL +     IntoIterator::into_iter([1, 2]);
+   |
 
 warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
   --> $DIR/into-iter-on-arrays-lint.rs:17:9
@@ -43,12 +47,14 @@ LL |     big.into_iter();
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/IntoIterator-for-arrays.html>
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     big.iter();
-   |         ~~~~
+LL -     big.into_iter();
+LL +     big.iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     IntoIterator::into_iter(big);
-   |     ++++++++++++++++++++++++   ~
+LL -     big.into_iter();
+LL +     IntoIterator::into_iter(big);
+   |
 
 warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
   --> $DIR/into-iter-on-arrays-lint.rs:20:15
@@ -60,12 +66,14 @@ LL |     [0u8; 33].into_iter();
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/IntoIterator-for-arrays.html>
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     [0u8; 33].iter();
-   |               ~~~~
+LL -     [0u8; 33].into_iter();
+LL +     [0u8; 33].iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     IntoIterator::into_iter([0u8; 33]);
-   |     ++++++++++++++++++++++++         ~
+LL -     [0u8; 33].into_iter();
+LL +     IntoIterator::into_iter([0u8; 33]);
+   |
 
 warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
   --> $DIR/into-iter-on-arrays-lint.rs:24:21
diff --git a/tests/ui/iterators/into-iter-on-boxed-slices-2021.stderr b/tests/ui/iterators/into-iter-on-boxed-slices-2021.stderr
index e8298030399..7a5a2be5ef0 100644
--- a/tests/ui/iterators/into-iter-on-boxed-slices-2021.stderr
+++ b/tests/ui/iterators/into-iter-on-boxed-slices-2021.stderr
@@ -9,12 +9,14 @@ LL |     let _: Iter<'_, i32> = boxed_slice.into_iter();
    = note: `#[warn(boxed_slice_into_iter)]` on by default
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     let _: Iter<'_, i32> = boxed_slice.iter();
-   |                                        ~~~~
+LL -     let _: Iter<'_, i32> = boxed_slice.into_iter();
+LL +     let _: Iter<'_, i32> = boxed_slice.iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     let _: Iter<'_, i32> = IntoIterator::into_iter(boxed_slice);
-   |                            ++++++++++++++++++++++++           ~
+LL -     let _: Iter<'_, i32> = boxed_slice.into_iter();
+LL +     let _: Iter<'_, i32> = IntoIterator::into_iter(boxed_slice);
+   |
 
 warning: this method call resolves to `<&Box<[T]> as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<Box<[T]> as IntoIterator>::into_iter` in Rust 2024
   --> $DIR/into-iter-on-boxed-slices-2021.rs:18:58
@@ -53,8 +55,9 @@ LL |     for _ in (Box::new([1, 2, 3]) as Box<[_]>).into_iter() {}
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/intoiterator-box-slice.html>
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     for _ in (Box::new([1, 2, 3]) as Box<[_]>).iter() {}
-   |                                                ~~~~
+LL -     for _ in (Box::new([1, 2, 3]) as Box<[_]>).into_iter() {}
+LL +     for _ in (Box::new([1, 2, 3]) as Box<[_]>).iter() {}
+   |
 help: or remove `.into_iter()` to iterate by value
    |
 LL -     for _ in (Box::new([1, 2, 3]) as Box<[_]>).into_iter() {}
diff --git a/tests/ui/iterators/into-iter-on-boxed-slices-lint.stderr b/tests/ui/iterators/into-iter-on-boxed-slices-lint.stderr
index 8a88c7816d2..6762ed28d36 100644
--- a/tests/ui/iterators/into-iter-on-boxed-slices-lint.stderr
+++ b/tests/ui/iterators/into-iter-on-boxed-slices-lint.stderr
@@ -9,12 +9,14 @@ LL |     boxed.into_iter();
    = note: `#[warn(boxed_slice_into_iter)]` on by default
 help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
    |
-LL |     boxed.iter();
-   |           ~~~~
+LL -     boxed.into_iter();
+LL +     boxed.iter();
+   |
 help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
    |
-LL |     IntoIterator::into_iter(boxed);
-   |     ++++++++++++++++++++++++     ~
+LL -     boxed.into_iter();
+LL +     IntoIterator::into_iter(boxed);
+   |
 
 warning: this method call resolves to `<&Box<[T]> as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<Box<[T]> as IntoIterator>::into_iter` in Rust 2024
   --> $DIR/into-iter-on-boxed-slices-lint.rs:13:29
diff --git a/tests/ui/label/label_misspelled.stderr b/tests/ui/label/label_misspelled.stderr
index 4b5b9e92ca0..3f4020e7be0 100644
--- a/tests/ui/label/label_misspelled.stderr
+++ b/tests/ui/label/label_misspelled.stderr
@@ -157,12 +157,14 @@ LL |         break foo;
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break foo;
+LL +         break;
+   |
 help: alternatively, you might have meant to use the available loop label
    |
-LL |         break 'while_loop;
-   |               ~~~~~~~~~~~
+LL -         break foo;
+LL +         break 'while_loop;
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/label_misspelled.rs:54:9
@@ -175,12 +177,14 @@ LL |         break foo;
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break foo;
+LL +         break;
+   |
 help: alternatively, you might have meant to use the available loop label
    |
-LL |         break 'while_let;
-   |               ~~~~~~~~~~
+LL -         break foo;
+LL +         break 'while_let;
+   |
 
 error[E0571]: `break` with value from a `for` loop
   --> $DIR/label_misspelled.rs:59:9
@@ -193,12 +197,14 @@ LL |         break foo;
    |
 help: use `break` on its own without a value inside this `for` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break foo;
+LL +         break;
+   |
 help: alternatively, you might have meant to use the available loop label
    |
-LL |         break 'for_loop;
-   |               ~~~~~~~~~
+LL -         break foo;
+LL +         break 'for_loop;
+   |
 
 error: aborting due to 11 previous errors; 10 warnings emitted
 
diff --git a/tests/ui/let-else/let-else-deref-coercion.stderr b/tests/ui/let-else/let-else-deref-coercion.stderr
index da8b1f4c48e..07347af76e4 100644
--- a/tests/ui/let-else/let-else-deref-coercion.stderr
+++ b/tests/ui/let-else/let-else-deref-coercion.stderr
@@ -8,8 +8,9 @@ LL |         let Bar::Present(z) = self else {
    |
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |         let Bar::Present(z) = &**self else {
-   |                               ~~~~~~~
+LL -         let Bar::Present(z) = self else {
+LL +         let Bar::Present(z) = &**self else {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/let-else-deref-coercion.rs:68:13
@@ -21,8 +22,9 @@ LL |         let Bar(z) = x;
    |
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |         let Bar(z) = &**x;
-   |                      ~~~~
+LL -         let Bar(z) = x;
+LL +         let Bar(z) = &**x;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lexer/lex-bad-char-literals-1.stderr b/tests/ui/lexer/lex-bad-char-literals-1.stderr
index 9dc0a338063..49683c10237 100644
--- a/tests/ui/lexer/lex-bad-char-literals-1.stderr
+++ b/tests/ui/lexer/lex-bad-char-literals-1.stderr
@@ -19,8 +19,9 @@ LL |     '\●'
    = help: for more information, visit <https://doc.rust-lang.org/reference/tokens.html#literals>
 help: if you meant to write a literal backslash (perhaps escaping in a regular expression), consider a raw string literal
    |
-LL |     r"\●"
-   |     ~~~~~
+LL -     '\●'
+LL +     r"\●"
+   |
 
 error: unknown character escape: `\u{25cf}`
   --> $DIR/lex-bad-char-literals-1.rs:14:7
@@ -31,8 +32,9 @@ LL |     "\●"
    = help: for more information, visit <https://doc.rust-lang.org/reference/tokens.html#literals>
 help: if you meant to write a literal backslash (perhaps escaping in a regular expression), consider a raw string literal
    |
-LL |     r"\●"
-   |     ~~~~~
+LL -     "\●"
+LL +     r"\●"
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/lexer/lex-bad-char-literals-2.stderr b/tests/ui/lexer/lex-bad-char-literals-2.stderr
index 76cde00404a..fa063072865 100644
--- a/tests/ui/lexer/lex-bad-char-literals-2.stderr
+++ b/tests/ui/lexer/lex-bad-char-literals-2.stderr
@@ -6,8 +6,9 @@ LL |     'nope'
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     "nope"
-   |     ~    ~
+LL -     'nope'
+LL +     "nope"
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lexer/lex-bad-char-literals-3.stderr b/tests/ui/lexer/lex-bad-char-literals-3.stderr
index 3f339b2ef7d..d8ce17d13a9 100644
--- a/tests/ui/lexer/lex-bad-char-literals-3.stderr
+++ b/tests/ui/lexer/lex-bad-char-literals-3.stderr
@@ -6,8 +6,9 @@ LL | static c: char = '●●';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL | static c: char = "●●";
-   |                  ~  ~
+LL - static c: char = '●●';
+LL + static c: char = "●●";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/lex-bad-char-literals-3.rs:5:20
@@ -17,8 +18,9 @@ LL |     let ch: &str = '●●';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let ch: &str = "●●";
-   |                    ~  ~
+LL -     let ch: &str = '●●';
+LL +     let ch: &str = "●●";
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lexer/lex-bad-char-literals-5.stderr b/tests/ui/lexer/lex-bad-char-literals-5.stderr
index 8004157e87f..0322783871e 100644
--- a/tests/ui/lexer/lex-bad-char-literals-5.stderr
+++ b/tests/ui/lexer/lex-bad-char-literals-5.stderr
@@ -6,8 +6,9 @@ LL | static c: char = '\x10\x10';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL | static c: char = "\x10\x10";
-   |                  ~        ~
+LL - static c: char = '\x10\x10';
+LL + static c: char = "\x10\x10";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/lex-bad-char-literals-5.rs:5:20
@@ -17,8 +18,9 @@ LL |     let ch: &str = '\x10\x10';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let ch: &str = "\x10\x10";
-   |                    ~        ~
+LL -     let ch: &str = '\x10\x10';
+LL +     let ch: &str = "\x10\x10";
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lexer/lex-bad-char-literals-6.stderr b/tests/ui/lexer/lex-bad-char-literals-6.stderr
index 96d409d59bb..e5fd62bc0a9 100644
--- a/tests/ui/lexer/lex-bad-char-literals-6.stderr
+++ b/tests/ui/lexer/lex-bad-char-literals-6.stderr
@@ -6,8 +6,9 @@ LL |     let x: &str = 'ab';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let x: &str = "ab";
-   |                   ~  ~
+LL -     let x: &str = 'ab';
+LL +     let x: &str = "ab";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/lex-bad-char-literals-6.rs:4:19
@@ -17,8 +18,9 @@ LL |     let y: char = 'cd';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let y: char = "cd";
-   |                   ~  ~
+LL -     let y: char = 'cd';
+LL +     let y: char = "cd";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/lex-bad-char-literals-6.rs:6:13
@@ -28,8 +30,9 @@ LL |     let z = 'ef';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let z = "ef";
-   |             ~  ~
+LL -     let z = 'ef';
+LL +     let z = "ef";
+   |
 
 error[E0308]: mismatched types
   --> $DIR/lex-bad-char-literals-6.rs:13:20
diff --git a/tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr b/tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr
index 57c5f82704e..81ee697802b 100644
--- a/tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr
+++ b/tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr
@@ -6,8 +6,9 @@ LL |     println!('1 + 1');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!("1 + 1");
-   |              ~     ~
+LL -     println!('1 + 1');
+LL +     println!("1 + 1");
+   |
 
 error: lifetimes cannot start with a number
   --> $DIR/lex-bad-str-literal-as-char-1.rs:3:14
diff --git a/tests/ui/lexer/lex-bad-str-literal-as-char-2.stderr b/tests/ui/lexer/lex-bad-str-literal-as-char-2.stderr
index f64761af641..ed1303cd428 100644
--- a/tests/ui/lexer/lex-bad-str-literal-as-char-2.stderr
+++ b/tests/ui/lexer/lex-bad-str-literal-as-char-2.stderr
@@ -6,8 +6,9 @@ LL |     println!(' 1 + 1');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!(" 1 + 1");
-   |              ~      ~
+LL -     println!(' 1 + 1');
+LL +     println!(" 1 + 1");
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2015.stderr b/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2015.stderr
index 06f12742667..2f92225de1f 100644
--- a/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2015.stderr
+++ b/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2015.stderr
@@ -6,8 +6,9 @@ LL |     println!('hello world');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!("hello world");
-   |              ~           ~
+LL -     println!('hello world');
+LL +     println!("hello world");
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2018.stderr b/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2018.stderr
index 06f12742667..2f92225de1f 100644
--- a/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2018.stderr
+++ b/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2018.stderr
@@ -6,8 +6,9 @@ LL |     println!('hello world');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!("hello world");
-   |              ~           ~
+LL -     println!('hello world');
+LL +     println!("hello world");
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2021.stderr b/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2021.stderr
index 4170560cfcb..e10046e58e4 100644
--- a/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2021.stderr
+++ b/tests/ui/lexer/lex-bad-str-literal-as-char-3.rust2021.stderr
@@ -7,8 +7,9 @@ LL |     println!('hello world');
    = note: prefixed identifiers and literals are reserved since Rust 2021
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!("hello world");
-   |              ~           ~
+LL -     println!('hello world');
+LL +     println!("hello world");
+   |
 
 error[E0762]: unterminated character literal
   --> $DIR/lex-bad-str-literal-as-char-3.rs:5:26
@@ -18,8 +19,9 @@ LL |     println!('hello world');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!("hello world");
-   |              ~           ~
+LL -     println!('hello world');
+LL +     println!("hello world");
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lexer/lex-bad-str-literal-as-char-4.stderr b/tests/ui/lexer/lex-bad-str-literal-as-char-4.stderr
index af42b5b7f7b..5633783e738 100644
--- a/tests/ui/lexer/lex-bad-str-literal-as-char-4.stderr
+++ b/tests/ui/lexer/lex-bad-str-literal-as-char-4.stderr
@@ -7,8 +7,9 @@ LL |         println!('hello world');
    = note: prefixed identifiers and literals are reserved since Rust 2021
 help: if you meant to write a string literal, use double quotes
    |
-LL |         println!("hello world");
-   |                  ~           ~
+LL -         println!('hello world');
+LL +         println!("hello world");
+   |
 
 error[E0762]: unterminated character literal
   --> $DIR/lex-bad-str-literal-as-char-4.rs:4:30
@@ -18,8 +19,9 @@ LL |         println!('hello world');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |         println!("hello world");
-   |                  ~           ~
+LL -         println!('hello world');
+LL +         println!("hello world");
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lifetimes/borrowck-let-suggestion.stderr b/tests/ui/lifetimes/borrowck-let-suggestion.stderr
index cca7f52957e..e0adb164140 100644
--- a/tests/ui/lifetimes/borrowck-let-suggestion.stderr
+++ b/tests/ui/lifetimes/borrowck-let-suggestion.stderr
@@ -12,8 +12,9 @@ LL |     x.use_mut();
    = note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: consider consuming the `Vec<i32>` when turning it into an `Iterator`
    |
-LL |     let mut x = vec![1].into_iter();
-   |                         ~~~~~~~~~
+LL -     let mut x = vec![1].iter();
+LL +     let mut x = vec![1].into_iter();
+   |
 help: consider using a `let` binding to create a longer lived value
    |
 LL ~     let binding = vec![1];
diff --git a/tests/ui/lifetimes/fullwidth-ampersand.stderr b/tests/ui/lifetimes/fullwidth-ampersand.stderr
index 4645254f4b7..7fa7343620b 100644
--- a/tests/ui/lifetimes/fullwidth-ampersand.stderr
+++ b/tests/ui/lifetimes/fullwidth-ampersand.stderr
@@ -6,8 +6,9 @@ LL | fn f(_: &&()) -> &() { todo!() }
    |
 help: Unicode character '&' (Fullwidth Ampersand) looks like '&' (Ampersand), but it is not
    |
-LL | fn f(_: &&()) -> &() { todo!() }
-   |          ~
+LL - fn f(_: &&()) -> &() { todo!() }
+LL + fn f(_: &&()) -> &() { todo!() }
+   |
 
 error[E0106]: missing lifetime specifier
   --> $DIR/fullwidth-ampersand.rs:3:18
diff --git a/tests/ui/lifetimes/issue-26638.stderr b/tests/ui/lifetimes/issue-26638.stderr
index dc18e0f1f7a..8aa94f66812 100644
--- a/tests/ui/lifetimes/issue-26638.stderr
+++ b/tests/ui/lifetimes/issue-26638.stderr
@@ -27,8 +27,9 @@ LL | fn parse_type_2(iter: &fn(&u8)->&u8) -> &str { iter() }
    |                       +
 help: ...or alternatively, you might want to return an owned value
    |
-LL | fn parse_type_2(iter: fn(&u8)->&u8) -> String { iter() }
-   |                                        ~~~~~~
+LL - fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter() }
+LL + fn parse_type_2(iter: fn(&u8)->&u8) -> String { iter() }
+   |
 
 error[E0106]: missing lifetime specifier
   --> $DIR/issue-26638.rs:9:22
@@ -43,8 +44,9 @@ LL | fn parse_type_3() -> &'static str { unimplemented!() }
    |                       +++++++
 help: instead, you are more likely to want to return an owned value
    |
-LL | fn parse_type_3() -> String { unimplemented!() }
-   |                      ~~~~~~
+LL - fn parse_type_3() -> &str { unimplemented!() }
+LL + fn parse_type_3() -> String { unimplemented!() }
+   |
 
 error[E0061]: this function takes 1 argument but 0 arguments were supplied
   --> $DIR/issue-26638.rs:4:47
@@ -54,8 +56,9 @@ LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter() }
    |
 help: provide the argument
    |
-LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter(/* &u8 */) }
-   |                                                   ~~~~~~~~~~~
+LL - fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter() }
+LL + fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter(/* &u8 */) }
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-26638.rs:4:47
diff --git a/tests/ui/lifetimes/issue-90170-elision-mismatch.stderr b/tests/ui/lifetimes/issue-90170-elision-mismatch.stderr
index 5e16c57a618..e03910ec79e 100644
--- a/tests/ui/lifetimes/issue-90170-elision-mismatch.stderr
+++ b/tests/ui/lifetimes/issue-90170-elision-mismatch.stderr
@@ -29,8 +29,9 @@ LL | pub fn foo2(x: &mut Vec<&'_ u8>, y: &u8) { x.push(y); }
    = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
 help: consider introducing a named lifetime parameter
    |
-LL | pub fn foo2<'a>(x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); }
-   |            ++++              ~~          ++
+LL - pub fn foo2(x: &mut Vec<&'_ u8>, y: &u8) { x.push(y); }
+LL + pub fn foo2<'a>(x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); }
+   |
 
 error: lifetime may not live long enough
   --> $DIR/issue-90170-elision-mismatch.rs:7:63
diff --git a/tests/ui/lifetimes/raw/immediately-followed-by-lt.e2021.stderr b/tests/ui/lifetimes/raw/immediately-followed-by-lt.e2021.stderr
index e600cc37fc4..f16c18f85d3 100644
--- a/tests/ui/lifetimes/raw/immediately-followed-by-lt.e2021.stderr
+++ b/tests/ui/lifetimes/raw/immediately-followed-by-lt.e2021.stderr
@@ -6,8 +6,9 @@ LL | w!('r#long'id);
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL | w!("r#long"id);
-   |    ~      ~
+LL - w!('r#long'id);
+LL + w!("r#long"id);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lint/ambiguous_wide_pointer_comparisons_suggestions.stderr b/tests/ui/lint/ambiguous_wide_pointer_comparisons_suggestions.stderr
index d9190dbb813..30d7683ef4b 100644
--- a/tests/ui/lint/ambiguous_wide_pointer_comparisons_suggestions.stderr
+++ b/tests/ui/lint/ambiguous_wide_pointer_comparisons_suggestions.stderr
@@ -7,12 +7,14 @@ LL |     let _ = a == b;
    = note: `#[warn(ambiguous_wide_pointer_comparisons)]` on by default
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = std::ptr::addr_eq(a, b);
-   |             ++++++++++++++++++ ~  +
+LL -     let _ = a == b;
+LL +     let _ = std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |     let _ = std::ptr::eq(a, b);
-   |             +++++++++++++ ~  +
+LL -     let _ = a == b;
+LL +     let _ = std::ptr::eq(a, b);
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/lint/clashing-extern-fn.rs b/tests/ui/lint/clashing-extern-fn.rs
index 9bbb20246df..e4477c96202 100644
--- a/tests/ui/lint/clashing-extern-fn.rs
+++ b/tests/ui/lint/clashing-extern-fn.rs
@@ -1,7 +1,7 @@
 //@ check-pass
 //@ aux-build:external_extern_fn.rs
 #![crate_type = "lib"]
-
+#![feature(pattern_type_macro, pattern_types)]
 mod redeclared_different_signature {
     mod a {
         extern "C" {
@@ -490,3 +490,33 @@ mod hidden_niche {
         }
     }
 }
+
+mod pattern_types {
+    mod a {
+        use std::pat::pattern_type;
+        #[repr(transparent)]
+        struct NonZeroUsize(pattern_type!(usize is 1..));
+        extern "C" {
+            fn pt_non_zero_usize() -> pattern_type!(usize is 1..);
+            fn pt_non_zero_usize_opt() -> Option<pattern_type!(usize is 1..)>;
+            fn pt_non_zero_usize_opt_full_range() -> Option<pattern_type!(usize is 0..)>;
+            //~^ WARN not FFI-safe
+            fn pt_non_null_ptr() -> pattern_type!(usize is 1..);
+            fn pt_non_zero_usize_wrapper() -> NonZeroUsize;
+            fn pt_non_zero_usize_wrapper_opt() -> Option<NonZeroUsize>;
+        }
+    }
+    mod b {
+        extern "C" {
+            // If there's a clash in either of these cases you're either gaining an incorrect
+            // invariant that the value is non-zero, or you're missing out on that invariant. Both
+            // cases are warning for, from both a caller-convenience and optimisation perspective.
+            fn pt_non_zero_usize() -> usize;
+            fn pt_non_zero_usize_opt() -> usize;
+            fn pt_non_null_ptr() -> *const ();
+            //~^ WARN `pt_non_null_ptr` redeclared with a different signature
+            fn pt_non_zero_usize_wrapper() -> usize;
+            fn pt_non_zero_usize_wrapper_opt() -> usize;
+        }
+    }
+}
diff --git a/tests/ui/lint/clashing-extern-fn.stderr b/tests/ui/lint/clashing-extern-fn.stderr
index 48dd1adbc1f..118b18b224c 100644
--- a/tests/ui/lint/clashing-extern-fn.stderr
+++ b/tests/ui/lint/clashing-extern-fn.stderr
@@ -17,6 +17,15 @@ LL |             fn hidden_niche_unsafe_cell() -> Option<UnsafeCell<NonZero<usiz
    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
    = note: enum has no representation hint
 
+warning: `extern` block uses type `Option<(usize) is 0..=>`, which is not FFI-safe
+  --> $DIR/clashing-extern-fn.rs:502:54
+   |
+LL |             fn pt_non_zero_usize_opt_full_range() -> Option<pattern_type!(usize is 0..)>;
+   |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
+   |
+   = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
+   = note: enum has no representation hint
+
 warning: `clash` redeclared with a different signature
   --> $DIR/clashing-extern-fn.rs:13:13
    |
@@ -258,5 +267,17 @@ LL |             fn hidden_niche_unsafe_cell() -> Option<UnsafeCell<NonZero<usiz
    = note: expected `unsafe extern "C" fn() -> usize`
               found `unsafe extern "C" fn() -> Option<UnsafeCell<NonZero<usize>>>`
 
-warning: 22 warnings emitted
+warning: `pt_non_null_ptr` redeclared with a different signature
+  --> $DIR/clashing-extern-fn.rs:516:13
+   |
+LL |             fn pt_non_null_ptr() -> pattern_type!(usize is 1..);
+   |             ---------------------------------------------------- `pt_non_null_ptr` previously declared here
+...
+LL |             fn pt_non_null_ptr() -> *const ();
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this signature doesn't match the previous declaration
+   |
+   = note: expected `unsafe extern "C" fn() -> (usize) is 1..=`
+              found `unsafe extern "C" fn() -> *const ()`
+
+warning: 24 warnings emitted
 
diff --git a/tests/ui/lint/dead-code/tuple-struct-field.stderr b/tests/ui/lint/dead-code/tuple-struct-field.stderr
index 434554d7ae5..3e1d4e77274 100644
--- a/tests/ui/lint/dead-code/tuple-struct-field.stderr
+++ b/tests/ui/lint/dead-code/tuple-struct-field.stderr
@@ -33,8 +33,9 @@ LL | struct UnusedInTheMiddle(i32, f32, String, u8, u32);
    |
 help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
    |
-LL | struct UnusedInTheMiddle(i32, (), (), u8, ());
-   |                               ~~  ~~      ~~
+LL - struct UnusedInTheMiddle(i32, f32, String, u8, u32);
+LL + struct UnusedInTheMiddle(i32, (), (), u8, ());
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/lint/elided-named-lifetimes/static.stderr b/tests/ui/lint/elided-named-lifetimes/static.stderr
index fa2a2d3460f..7ad08dbf04b 100644
--- a/tests/ui/lint/elided-named-lifetimes/static.stderr
+++ b/tests/ui/lint/elided-named-lifetimes/static.stderr
@@ -44,8 +44,9 @@ LL | fn underscore(x: &'static u8) -> &'_ u8 {
    |
 help: consider specifying it explicitly
    |
-LL | fn underscore(x: &'static u8) -> &'static u8 {
-   |                                   ~~~~~~~
+LL - fn underscore(x: &'static u8) -> &'_ u8 {
+LL + fn underscore(x: &'static u8) -> &'static u8 {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/lint/fn-ptr-comparisons.stderr b/tests/ui/lint/fn-ptr-comparisons.stderr
index eaba23a461a..e6993323898 100644
--- a/tests/ui/lint/fn-ptr-comparisons.stderr
+++ b/tests/ui/lint/fn-ptr-comparisons.stderr
@@ -10,8 +10,9 @@ LL |     let _ = f == a;
    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(f, a as fn());
-   |             +++++++++++++++++++++ ~   ++++++++
+LL -     let _ = f == a;
+LL +     let _ = std::ptr::fn_addr_eq(f, a as fn());
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:28:13
@@ -24,8 +25,9 @@ LL |     let _ = f != a;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = !std::ptr::fn_addr_eq(f, a as fn());
-   |             ++++++++++++++++++++++ ~   ++++++++
+LL -     let _ = f != a;
+LL +     let _ = !std::ptr::fn_addr_eq(f, a as fn());
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:30:13
@@ -38,8 +40,9 @@ LL |     let _ = f == g;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(f, g);
-   |             +++++++++++++++++++++ ~  +
+LL -     let _ = f == g;
+LL +     let _ = std::ptr::fn_addr_eq(f, g);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:32:13
@@ -52,8 +55,9 @@ LL |     let _ = f == f;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(f, f);
-   |             +++++++++++++++++++++ ~  +
+LL -     let _ = f == f;
+LL +     let _ = std::ptr::fn_addr_eq(f, f);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:34:13
@@ -66,8 +70,9 @@ LL |     let _ = g == g;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(g, g);
-   |             +++++++++++++++++++++ ~  +
+LL -     let _ = g == g;
+LL +     let _ = std::ptr::fn_addr_eq(g, g);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:36:13
@@ -80,8 +85,9 @@ LL |     let _ = g == g;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(g, g);
-   |             +++++++++++++++++++++ ~  +
+LL -     let _ = g == g;
+LL +     let _ = std::ptr::fn_addr_eq(g, g);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:38:13
@@ -94,8 +100,9 @@ LL |     let _ = &g == &g;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(g, g);
-   |             ~~~~~~~~~~~~~~~~~~~~~ ~  +
+LL -     let _ = &g == &g;
+LL +     let _ = std::ptr::fn_addr_eq(g, g);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:40:13
@@ -108,8 +115,9 @@ LL |     let _ = a as fn() == g;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(a as fn(), g);
-   |             +++++++++++++++++++++         ~  +
+LL -     let _ = a as fn() == g;
+LL +     let _ = std::ptr::fn_addr_eq(a as fn(), g);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:44:13
@@ -122,8 +130,9 @@ LL |     let _ = cfn == c;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(cfn, c as extern "C" fn());
-   |             +++++++++++++++++++++   ~   +++++++++++++++++++
+LL -     let _ = cfn == c;
+LL +     let _ = std::ptr::fn_addr_eq(cfn, c as extern "C" fn());
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:48:13
@@ -136,8 +145,9 @@ LL |     let _ = argsfn == args;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(argsfn, args as extern "C" fn(i32) -> i32);
-   |             +++++++++++++++++++++      ~      +++++++++++++++++++++++++++++
+LL -     let _ = argsfn == args;
+LL +     let _ = std::ptr::fn_addr_eq(argsfn, args as extern "C" fn(i32) -> i32);
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:52:13
@@ -150,8 +160,9 @@ LL |     let _ = t == test;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(t, test as unsafe extern "C" fn());
-   |             +++++++++++++++++++++ ~      ++++++++++++++++++++++++++
+LL -     let _ = t == test;
+LL +     let _ = std::ptr::fn_addr_eq(t, test as unsafe extern "C" fn());
+   |
 
 warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
   --> $DIR/fn-ptr-comparisons.rs:56:13
@@ -164,8 +175,9 @@ LL |     let _ = a1.f == a2.f;
    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
 help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
    |
-LL |     let _ = std::ptr::fn_addr_eq(a1.f, a2.f);
-   |             +++++++++++++++++++++    ~     +
+LL -     let _ = a1.f == a2.f;
+LL +     let _ = std::ptr::fn_addr_eq(a1.f, a2.f);
+   |
 
 warning: 12 warnings emitted
 
diff --git a/tests/ui/lint/for_loop_over_fallibles.stderr b/tests/ui/lint/for_loop_over_fallibles.stderr
index f695de08257..dae5e6428c8 100644
--- a/tests/ui/lint/for_loop_over_fallibles.stderr
+++ b/tests/ui/lint/for_loop_over_fallibles.stderr
@@ -7,12 +7,14 @@ LL |     for _ in Some(1) {}
    = note: `#[warn(for_loops_over_fallibles)]` on by default
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Some(_) = Some(1) {}
-   |     ~~~~~~~~~~~~~~~ ~~~
+LL -     for _ in Some(1) {}
+LL +     while let Some(_) = Some(1) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Some(_) = Some(1) {}
-   |     ~~~~~~~~~~~~ ~~~
+LL -     for _ in Some(1) {}
+LL +     if let Some(_) = Some(1) {}
+   |
 
 warning: for loop over a `Result`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:9:14
@@ -22,12 +24,14 @@ LL |     for _ in Ok::<_, ()>(1) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Ok(_) = Ok::<_, ()>(1) {}
-   |     ~~~~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>(1) {}
+LL +     while let Ok(_) = Ok::<_, ()>(1) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Ok(_) = Ok::<_, ()>(1) {}
-   |     ~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>(1) {}
+LL +     if let Ok(_) = Ok::<_, ()>(1) {}
+   |
 
 warning: for loop over an `Option`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:15:14
@@ -37,12 +41,14 @@ LL |     for _ in [0; 0].iter().next() {}
    |
 help: to iterate over `[0; 0].iter()` remove the call to `next`
    |
-LL |     for _ in [0; 0].iter().by_ref() {}
-   |                           ~~~~~~~~~
+LL -     for _ in [0; 0].iter().next() {}
+LL +     for _ in [0; 0].iter().by_ref() {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Some(_) = [0; 0].iter().next() {}
-   |     ~~~~~~~~~~~~ ~~~
+LL -     for _ in [0; 0].iter().next() {}
+LL +     if let Some(_) = [0; 0].iter().next() {}
+   |
 
 warning: for loop over a `Result`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:21:14
@@ -52,12 +58,14 @@ LL |     for _ in Ok::<_, ()>([0; 0].iter()) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
-   |     ~~~~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>([0; 0].iter()) {}
+LL +     while let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
-   |     ~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>([0; 0].iter()) {}
+LL +     if let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
+   |
 
 warning: for loop over a `Result`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:29:14
@@ -67,16 +75,18 @@ LL |     for _ in Ok::<_, ()>([0; 0].iter()) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
-   |     ~~~~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>([0; 0].iter()) {}
+LL +     while let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
+   |
 help: consider unwrapping the `Result` with `?` to iterate over its contents
    |
 LL |     for _ in Ok::<_, ()>([0; 0].iter())? {}
    |                                        +
 help: consider using `if let` to clear intent
    |
-LL |     if let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
-   |     ~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>([0; 0].iter()) {}
+LL +     if let Ok(_) = Ok::<_, ()>([0; 0].iter()) {}
+   |
 
 warning: for loop over a `Result`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:36:14
@@ -86,16 +96,18 @@ LL |     for _ in Ok::<_, ()>([0; 0]) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Ok(_) = Ok::<_, ()>([0; 0]) {}
-   |     ~~~~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>([0; 0]) {}
+LL +     while let Ok(_) = Ok::<_, ()>([0; 0]) {}
+   |
 help: consider unwrapping the `Result` with `?` to iterate over its contents
    |
 LL |     for _ in Ok::<_, ()>([0; 0])? {}
    |                                 +
 help: consider using `if let` to clear intent
    |
-LL |     if let Ok(_) = Ok::<_, ()>([0; 0]) {}
-   |     ~~~~~~~~~~ ~~~
+LL -     for _ in Ok::<_, ()>([0; 0]) {}
+LL +     if let Ok(_) = Ok::<_, ()>([0; 0]) {}
+   |
 
 warning: for loop over a `&Option`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:47:14
@@ -105,12 +117,14 @@ LL |     for _ in &Some(1) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Some(_) = &Some(1) {}
-   |     ~~~~~~~~~~~~~~~ ~~~
+LL -     for _ in &Some(1) {}
+LL +     while let Some(_) = &Some(1) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Some(_) = &Some(1) {}
-   |     ~~~~~~~~~~~~ ~~~
+LL -     for _ in &Some(1) {}
+LL +     if let Some(_) = &Some(1) {}
+   |
 
 warning: for loop over a `&Result`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:51:14
@@ -120,12 +134,14 @@ LL |     for _ in &Ok::<_, ()>(1) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Ok(_) = &Ok::<_, ()>(1) {}
-   |     ~~~~~~~~~~~~~ ~~~
+LL -     for _ in &Ok::<_, ()>(1) {}
+LL +     while let Ok(_) = &Ok::<_, ()>(1) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Ok(_) = &Ok::<_, ()>(1) {}
-   |     ~~~~~~~~~~ ~~~
+LL -     for _ in &Ok::<_, ()>(1) {}
+LL +     if let Ok(_) = &Ok::<_, ()>(1) {}
+   |
 
 warning: for loop over a `&mut Option`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:57:14
@@ -135,12 +151,14 @@ LL |     for _ in &mut Some(1) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Some(_) = &mut Some(1) {}
-   |     ~~~~~~~~~~~~~~~ ~~~
+LL -     for _ in &mut Some(1) {}
+LL +     while let Some(_) = &mut Some(1) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Some(_) = &mut Some(1) {}
-   |     ~~~~~~~~~~~~ ~~~
+LL -     for _ in &mut Some(1) {}
+LL +     if let Some(_) = &mut Some(1) {}
+   |
 
 warning: for loop over a `&mut Result`. This is more readably written as an `if let` statement
   --> $DIR/for_loop_over_fallibles.rs:61:14
@@ -150,12 +168,14 @@ LL |     for _ in &mut Ok::<_, ()>(1) {}
    |
 help: to check pattern in a loop use `while let`
    |
-LL |     while let Ok(_) = &mut Ok::<_, ()>(1) {}
-   |     ~~~~~~~~~~~~~ ~~~
+LL -     for _ in &mut Ok::<_, ()>(1) {}
+LL +     while let Ok(_) = &mut Ok::<_, ()>(1) {}
+   |
 help: consider using `if let` to clear intent
    |
-LL |     if let Ok(_) = &mut Ok::<_, ()>(1) {}
-   |     ~~~~~~~~~~ ~~~
+LL -     for _ in &mut Ok::<_, ()>(1) {}
+LL +     if let Ok(_) = &mut Ok::<_, ()>(1) {}
+   |
 
 warning: 10 warnings emitted
 
diff --git a/tests/ui/lint/issue-109152.stderr b/tests/ui/lint/issue-109152.stderr
index a175964ccf6..01aa9068da5 100644
--- a/tests/ui/lint/issue-109152.stderr
+++ b/tests/ui/lint/issue-109152.stderr
@@ -16,8 +16,9 @@ LL | #![deny(map_unit_fn)]
    |         ^^^^^^^^^^^
 help: you might have meant to use `Iterator::for_each`
    |
-LL |     vec![42].iter().for_each(drop);
-   |                     ~~~~~~~~
+LL -     vec![42].iter().map(drop);
+LL +     vec![42].iter().for_each(drop);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lint/issue-109529.stderr b/tests/ui/lint/issue-109529.stderr
index 9e857d1b0ab..51b71cb1007 100644
--- a/tests/ui/lint/issue-109529.stderr
+++ b/tests/ui/lint/issue-109529.stderr
@@ -16,8 +16,9 @@ LL |     for _ in 0..(256 as u8) {}
    |
 help: use an inclusive range instead
    |
-LL |     for _ in 0..=(255 as u8) {}
-   |                 + ~~~
+LL -     for _ in 0..(256 as u8) {}
+LL +     for _ in 0..=(255 as u8) {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lint/issue-35075.stderr b/tests/ui/lint/issue-35075.stderr
index 08bdaa72858..f02f9e678b4 100644
--- a/tests/ui/lint/issue-35075.stderr
+++ b/tests/ui/lint/issue-35075.stderr
@@ -6,8 +6,9 @@ LL |     inner: Foo<T>
    |
 help: there is an enum variant `Baz::Foo`; try using the variant's enum
    |
-LL |     inner: Baz
-   |            ~~~
+LL -     inner: Foo<T>
+LL +     inner: Baz
+   |
 
 error[E0412]: cannot find type `Foo` in this scope
   --> $DIR/issue-35075.rs:6:9
@@ -17,8 +18,9 @@ LL |     Foo(Foo<T>)
    |
 help: there is an enum variant `Baz::Foo`; try using the variant's enum
    |
-LL |     Foo(Baz)
-   |         ~~~
+LL -     Foo(Foo<T>)
+LL +     Foo(Baz)
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lint/let_underscore/issue-119696-err-on-fn.stderr b/tests/ui/lint/let_underscore/issue-119696-err-on-fn.stderr
index 70f9979556a..a244d7604d7 100644
--- a/tests/ui/lint/let_underscore/issue-119696-err-on-fn.stderr
+++ b/tests/ui/lint/let_underscore/issue-119696-err-on-fn.stderr
@@ -11,12 +11,14 @@ LL | #![deny(let_underscore_drop)]
    |         ^^^^^^^^^^^^^^^^^^^
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let _unused = foo();
-   |         ~~~~~~~
+LL -     let _ = foo();
+LL +     let _unused = foo();
+   |
 help: consider immediately dropping the value
    |
-LL |     drop(foo());
-   |     ~~~~~     +
+LL -     let _ = foo();
+LL +     drop(foo());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lint/let_underscore/issue-119697-extra-let.stderr b/tests/ui/lint/let_underscore/issue-119697-extra-let.stderr
index e4b1872bba5..8773d5df443 100644
--- a/tests/ui/lint/let_underscore/issue-119697-extra-let.stderr
+++ b/tests/ui/lint/let_underscore/issue-119697-extra-let.stderr
@@ -11,12 +11,14 @@ LL | #![deny(let_underscore_drop)]
    |         ^^^^^^^^^^^^^^^^^^^
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let _unused = field;
-   |     ~~~~~~~~~~~
+LL -     _ = field;
+LL +     let _unused = field;
+   |
 help: consider immediately dropping the value
    |
-LL |     drop(field);
-   |     ~~~~~     +
+LL -     _ = field;
+LL +     drop(field);
+   |
 
 error: non-binding let on a type that has a destructor
   --> $DIR/issue-119697-extra-let.rs:17:5
@@ -26,12 +28,14 @@ LL |     let _ = field;
    |
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let _unused = field;
-   |         ~~~~~~~
+LL -     let _ = field;
+LL +     let _unused = field;
+   |
 help: consider immediately dropping the value
    |
-LL |     drop(field);
-   |     ~~~~~     +
+LL -     let _ = field;
+LL +     drop(field);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lint/let_underscore/let_underscore_drop.stderr b/tests/ui/lint/let_underscore/let_underscore_drop.stderr
index 09f2587063b..c7984d629da 100644
--- a/tests/ui/lint/let_underscore/let_underscore_drop.stderr
+++ b/tests/ui/lint/let_underscore/let_underscore_drop.stderr
@@ -11,12 +11,14 @@ LL | #![warn(let_underscore_drop)]
    |         ^^^^^^^^^^^^^^^^^^^
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let _unused = NontrivialDrop;
-   |         ~~~~~~~
+LL -     let _ = NontrivialDrop;
+LL +     let _unused = NontrivialDrop;
+   |
 help: consider immediately dropping the value
    |
-LL |     drop(NontrivialDrop);
-   |     ~~~~~              +
+LL -     let _ = NontrivialDrop;
+LL +     drop(NontrivialDrop);
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/lint/let_underscore/let_underscore_lock.stderr b/tests/ui/lint/let_underscore/let_underscore_lock.stderr
index fb8b9ec2203..60d5ed649f5 100644
--- a/tests/ui/lint/let_underscore/let_underscore_lock.stderr
+++ b/tests/ui/lint/let_underscore/let_underscore_lock.stderr
@@ -7,12 +7,14 @@ LL |     let _ = data.lock().unwrap();
    = note: `#[deny(let_underscore_lock)]` on by default
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let _unused = data.lock().unwrap();
-   |         ~~~~~~~
+LL -     let _ = data.lock().unwrap();
+LL +     let _unused = data.lock().unwrap();
+   |
 help: consider immediately dropping the value
    |
-LL |     drop(data.lock().unwrap());
-   |     ~~~~~                    +
+LL -     let _ = data.lock().unwrap();
+LL +     drop(data.lock().unwrap());
+   |
 
 error: non-binding let on a synchronization lock
   --> $DIR/let_underscore_lock.rs:12:9
@@ -22,12 +24,14 @@ LL |     let _ = data.lock();
    |
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let _unused = data.lock();
-   |         ~~~~~~~
+LL -     let _ = data.lock();
+LL +     let _unused = data.lock();
+   |
 help: consider immediately dropping the value
    |
-LL |     drop(data.lock());
-   |     ~~~~~           +
+LL -     let _ = data.lock();
+LL +     drop(data.lock());
+   |
 
 error: non-binding let on a synchronization lock
   --> $DIR/let_underscore_lock.rs:14:10
@@ -38,8 +42,9 @@ LL |     let (_, _) = (data.lock(), 1);
    = help: consider immediately dropping the value using `drop(..)` after the `let` statement
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let (_unused, _) = (data.lock(), 1);
-   |          ~~~~~~~
+LL -     let (_, _) = (data.lock(), 1);
+LL +     let (_unused, _) = (data.lock(), 1);
+   |
 
 error: non-binding let on a synchronization lock
   --> $DIR/let_underscore_lock.rs:16:26
@@ -50,8 +55,9 @@ LL |     let (_a, Struct { a: _ }) = (0, Struct { a: data.lock() });
    = help: consider immediately dropping the value using `drop(..)` after the `let` statement
 help: consider binding to an unused variable to avoid immediately dropping the value
    |
-LL |     let (_a, Struct { a: _unused }) = (0, Struct { a: data.lock() });
-   |                          ~~~~~~~
+LL -     let (_a, Struct { a: _ }) = (0, Struct { a: data.lock() });
+LL +     let (_a, Struct { a: _unused }) = (0, Struct { a: data.lock() });
+   |
 
 error: non-binding let on a synchronization lock
   --> $DIR/let_underscore_lock.rs:18:6
diff --git a/tests/ui/lint/lint-ctypes-enum.rs b/tests/ui/lint/lint-ctypes-enum.rs
index 19af1de9576..0d19d5b5347 100644
--- a/tests/ui/lint/lint-ctypes-enum.rs
+++ b/tests/ui/lint/lint-ctypes-enum.rs
@@ -94,6 +94,7 @@ extern "C" {
     fn option_transparent_union(x: Option<TransparentUnion<num::NonZero<u8>>>);
     //~^ ERROR `extern` block uses type
     fn option_repr_rust(x: Option<Rust<num::NonZero<u8>>>); //~ ERROR `extern` block uses type
+    fn option_u8(x: Option<u8>); //~ ERROR `extern` block uses type
 
     fn result_ref_t(x: Result<&'static u8, ()>);
     fn result_fn_t(x: Result<extern "C" fn(), ()>);
diff --git a/tests/ui/lint/lint-ctypes-enum.stderr b/tests/ui/lint/lint-ctypes-enum.stderr
index 8e92e7e6946..a491bd19605 100644
--- a/tests/ui/lint/lint-ctypes-enum.stderr
+++ b/tests/ui/lint/lint-ctypes-enum.stderr
@@ -79,8 +79,17 @@ LL |     fn option_repr_rust(x: Option<Rust<num::NonZero<u8>>>);
    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
    = note: enum has no representation hint
 
+error: `extern` block uses type `Option<u8>`, which is not FFI-safe
+  --> $DIR/lint-ctypes-enum.rs:97:21
+   |
+LL |     fn option_u8(x: Option<u8>);
+   |                     ^^^^^^^^^^ not FFI-safe
+   |
+   = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
+   = note: enum has no representation hint
+
 error: `extern` block uses type `u128`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:106:33
+  --> $DIR/lint-ctypes-enum.rs:107:33
    |
 LL |     fn result_nonzero_u128_t(x: Result<num::NonZero<u128>, ()>);
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -88,7 +97,7 @@ LL |     fn result_nonzero_u128_t(x: Result<num::NonZero<u128>, ()>);
    = note: 128-bit integers don't currently have a known stable ABI
 
 error: `extern` block uses type `i128`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:113:33
+  --> $DIR/lint-ctypes-enum.rs:114:33
    |
 LL |     fn result_nonzero_i128_t(x: Result<num::NonZero<i128>, ()>);
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -96,7 +105,7 @@ LL |     fn result_nonzero_i128_t(x: Result<num::NonZero<i128>, ()>);
    = note: 128-bit integers don't currently have a known stable ABI
 
 error: `extern` block uses type `Result<TransparentUnion<NonZero<u8>>, ()>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:118:38
+  --> $DIR/lint-ctypes-enum.rs:119:38
    |
 LL |     fn result_transparent_union_t(x: Result<TransparentUnion<num::NonZero<u8>>, ()>);
    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -105,7 +114,7 @@ LL |     fn result_transparent_union_t(x: Result<TransparentUnion<num::NonZero<u
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<Rust<NonZero<u8>>, ()>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:120:30
+  --> $DIR/lint-ctypes-enum.rs:121:30
    |
 LL |     fn result_repr_rust_t(x: Result<Rust<num::NonZero<u8>>, ()>);
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -114,7 +123,7 @@ LL |     fn result_repr_rust_t(x: Result<Rust<num::NonZero<u8>>, ()>);
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<NonZero<u8>, U>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:124:51
+  --> $DIR/lint-ctypes-enum.rs:125:51
    |
 LL |     fn result_1zst_exhaustive_single_variant_t(x: Result<num::NonZero<u8>, U>);
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -123,7 +132,7 @@ LL |     fn result_1zst_exhaustive_single_variant_t(x: Result<num::NonZero<u8>,
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<NonZero<u8>, B>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:126:53
+  --> $DIR/lint-ctypes-enum.rs:127:53
    |
 LL |     fn result_1zst_exhaustive_multiple_variant_t(x: Result<num::NonZero<u8>, B>);
    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -132,7 +141,7 @@ LL |     fn result_1zst_exhaustive_multiple_variant_t(x: Result<num::NonZero<u8>
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<NonZero<u8>, NonExhaustive>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:128:51
+  --> $DIR/lint-ctypes-enum.rs:129:51
    |
 LL |     fn result_1zst_non_exhaustive_no_variant_t(x: Result<num::NonZero<u8>, NonExhaustive>);
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -141,7 +150,7 @@ LL |     fn result_1zst_non_exhaustive_no_variant_t(x: Result<num::NonZero<u8>,
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<NonZero<u8>, Field>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:131:49
+  --> $DIR/lint-ctypes-enum.rs:132:49
    |
 LL |     fn result_1zst_exhaustive_single_field_t(x: Result<num::NonZero<u8>, Field>);
    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -150,7 +159,7 @@ LL |     fn result_1zst_exhaustive_single_field_t(x: Result<num::NonZero<u8>, Fi
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<Result<(), NonZero<u8>>, ()>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:133:30
+  --> $DIR/lint-ctypes-enum.rs:134:30
    |
 LL |     fn result_cascading_t(x: Result<Result<(), num::NonZero<u8>>, ()>);
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -159,7 +168,7 @@ LL |     fn result_cascading_t(x: Result<Result<(), num::NonZero<u8>>, ()>);
    = note: enum has no representation hint
 
 error: `extern` block uses type `u128`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:144:33
+  --> $DIR/lint-ctypes-enum.rs:145:33
    |
 LL |     fn result_nonzero_u128_e(x: Result<(), num::NonZero<u128>>);
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -167,7 +176,7 @@ LL |     fn result_nonzero_u128_e(x: Result<(), num::NonZero<u128>>);
    = note: 128-bit integers don't currently have a known stable ABI
 
 error: `extern` block uses type `i128`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:151:33
+  --> $DIR/lint-ctypes-enum.rs:152:33
    |
 LL |     fn result_nonzero_i128_e(x: Result<(), num::NonZero<i128>>);
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -175,7 +184,7 @@ LL |     fn result_nonzero_i128_e(x: Result<(), num::NonZero<i128>>);
    = note: 128-bit integers don't currently have a known stable ABI
 
 error: `extern` block uses type `Result<(), TransparentUnion<NonZero<u8>>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:156:38
+  --> $DIR/lint-ctypes-enum.rs:157:38
    |
 LL |     fn result_transparent_union_e(x: Result<(), TransparentUnion<num::NonZero<u8>>>);
    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -184,7 +193,7 @@ LL |     fn result_transparent_union_e(x: Result<(), TransparentUnion<num::NonZe
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<(), Rust<NonZero<u8>>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:158:30
+  --> $DIR/lint-ctypes-enum.rs:159:30
    |
 LL |     fn result_repr_rust_e(x: Result<(), Rust<num::NonZero<u8>>>);
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -193,7 +202,7 @@ LL |     fn result_repr_rust_e(x: Result<(), Rust<num::NonZero<u8>>>);
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<U, NonZero<u8>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:162:51
+  --> $DIR/lint-ctypes-enum.rs:163:51
    |
 LL |     fn result_1zst_exhaustive_single_variant_e(x: Result<U, num::NonZero<u8>>);
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -202,7 +211,7 @@ LL |     fn result_1zst_exhaustive_single_variant_e(x: Result<U, num::NonZero<u8
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<B, NonZero<u8>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:164:53
+  --> $DIR/lint-ctypes-enum.rs:165:53
    |
 LL |     fn result_1zst_exhaustive_multiple_variant_e(x: Result<B, num::NonZero<u8>>);
    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -211,7 +220,7 @@ LL |     fn result_1zst_exhaustive_multiple_variant_e(x: Result<B, num::NonZero<
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<NonExhaustive, NonZero<u8>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:166:51
+  --> $DIR/lint-ctypes-enum.rs:167:51
    |
 LL |     fn result_1zst_non_exhaustive_no_variant_e(x: Result<NonExhaustive, num::NonZero<u8>>);
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -220,7 +229,7 @@ LL |     fn result_1zst_non_exhaustive_no_variant_e(x: Result<NonExhaustive, num
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<Field, NonZero<u8>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:169:49
+  --> $DIR/lint-ctypes-enum.rs:170:49
    |
 LL |     fn result_1zst_exhaustive_single_field_e(x: Result<Field, num::NonZero<u8>>);
    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -229,7 +238,7 @@ LL |     fn result_1zst_exhaustive_single_field_e(x: Result<Field, num::NonZero<
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<(), Result<(), NonZero<u8>>>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:171:30
+  --> $DIR/lint-ctypes-enum.rs:172:30
    |
 LL |     fn result_cascading_e(x: Result<(), Result<(), num::NonZero<u8>>>);
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -238,7 +247,7 @@ LL |     fn result_cascading_e(x: Result<(), Result<(), num::NonZero<u8>>>);
    = note: enum has no representation hint
 
 error: `extern` block uses type `Result<(), ()>`, which is not FFI-safe
-  --> $DIR/lint-ctypes-enum.rs:173:27
+  --> $DIR/lint-ctypes-enum.rs:174:27
    |
 LL |     fn result_unit_t_e(x: Result<(), ()>);
    |                           ^^^^^^^^^^^^^^ not FFI-safe
@@ -246,5 +255,5 @@ LL |     fn result_unit_t_e(x: Result<(), ()>);
    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
    = note: enum has no representation hint
 
-error: aborting due to 26 previous errors
+error: aborting due to 27 previous errors
 
diff --git a/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr b/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr
index 24f2500abf8..f5eec6fc656 100644
--- a/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr
+++ b/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr
@@ -12,8 +12,9 @@ LL | #![deny(fuzzy_provenance_casts)]
    |         ^^^^^^^^^^^^^^^^^^^^^^
 help: use `.with_addr()` to adjust a valid pointer in the same allocation, to this address
    |
-LL |     let dangling = (...).with_addr(16_usize);
-   |                    ++++++++++++++++        ~
+LL -     let dangling = 16_usize as *const u8;
+LL +     let dangling = (...).with_addr(16_usize);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lint/lint-strict-provenance-lossy-casts.stderr b/tests/ui/lint/lint-strict-provenance-lossy-casts.stderr
index 390028b349e..aeee69ae7af 100644
--- a/tests/ui/lint/lint-strict-provenance-lossy-casts.stderr
+++ b/tests/ui/lint/lint-strict-provenance-lossy-casts.stderr
@@ -12,8 +12,9 @@ LL | #![deny(lossy_provenance_casts)]
    |         ^^^^^^^^^^^^^^^^^^^^^^
 help: use `.addr()` to obtain the address of a pointer
    |
-LL |     let addr: usize = (&x as *const u8).addr();
-   |                       +               ~~~~~~~~
+LL -     let addr: usize = &x as *const u8 as usize;
+LL +     let addr: usize = (&x as *const u8).addr();
+   |
 
 error: under strict provenance it is considered bad style to cast pointer `*const u8` to integer `u32`
   --> $DIR/lint-strict-provenance-lossy-casts.rs:9:22
@@ -24,8 +25,9 @@ LL |     let addr_32bit = &x as *const u8 as u32;
    = help: if you can't comply with strict provenance and need to expose the pointer provenance you can use `.expose_provenance()` instead
 help: use `.addr()` to obtain the address of a pointer
    |
-LL |     let addr_32bit = (&x as *const u8).addr() as u32;
-   |                      +               ~~~~~~~~~~~~~~~
+LL -     let addr_32bit = &x as *const u8 as u32;
+LL +     let addr_32bit = (&x as *const u8).addr() as u32;
+   |
 
 error: under strict provenance it is considered bad style to cast pointer `*const u8` to integer `usize`
   --> $DIR/lint-strict-provenance-lossy-casts.rs:14:20
diff --git a/tests/ui/lint/lint_map_unit_fn.stderr b/tests/ui/lint/lint_map_unit_fn.stderr
index fbf689c5421..91542af0f6d 100644
--- a/tests/ui/lint/lint_map_unit_fn.stderr
+++ b/tests/ui/lint/lint_map_unit_fn.stderr
@@ -18,8 +18,9 @@ LL | #![deny(map_unit_fn)]
    |         ^^^^^^^^^^^
 help: you might have meant to use `Iterator::for_each`
    |
-LL |     x.iter_mut().for_each(foo);
-   |                  ~~~~~~~~
+LL -     x.iter_mut().map(foo);
+LL +     x.iter_mut().for_each(foo);
+   |
 
 error: `Iterator::map` call that discard the iterator's values
   --> $DIR/lint_map_unit_fn.rs:11:18
@@ -41,8 +42,9 @@ LL | | |     });
    = note: `Iterator::map`, like many of the methods on `Iterator`, gets executed lazily, meaning that its effects won't be visible until it is iterated
 help: you might have meant to use `Iterator::for_each`
    |
-LL |     x.iter_mut().for_each(|items| {
-   |                  ~~~~~~~~
+LL -     x.iter_mut().map(|items| {
+LL +     x.iter_mut().for_each(|items| {
+   |
 
 error: `Iterator::map` call that discard the iterator's values
   --> $DIR/lint_map_unit_fn.rs:18:18
@@ -59,8 +61,9 @@ LL |     x.iter_mut().map(f);
    = note: `Iterator::map`, like many of the methods on `Iterator`, gets executed lazily, meaning that its effects won't be visible until it is iterated
 help: you might have meant to use `Iterator::for_each`
    |
-LL |     x.iter_mut().for_each(f);
-   |                  ~~~~~~~~
+LL -     x.iter_mut().map(f);
+LL +     x.iter_mut().for_each(f);
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/lint/non-snake-case/lint-non-snake-case-identifiers-suggestion-reserved.stderr b/tests/ui/lint/non-snake-case/lint-non-snake-case-identifiers-suggestion-reserved.stderr
index 2841815ecf2..ae2a00d3f90 100644
--- a/tests/ui/lint/non-snake-case/lint-non-snake-case-identifiers-suggestion-reserved.stderr
+++ b/tests/ui/lint/non-snake-case/lint-non-snake-case-identifiers-suggestion-reserved.stderr
@@ -30,8 +30,9 @@ LL | #![deny(non_snake_case)]
    |         ^^^^^^^^^^^^^^
 help: rename the identifier or convert it to a snake case raw identifier
    |
-LL | mod r#impl {}
-   |     ~~~~~~
+LL - mod Impl {}
+LL + mod r#impl {}
+   |
 
 error: function `While` should have a snake case name
   --> $DIR/lint-non-snake-case-identifiers-suggestion-reserved.rs:8:4
@@ -41,8 +42,9 @@ LL | fn While() {}
    |
 help: rename the identifier or convert it to a snake case raw identifier
    |
-LL | fn r#while() {}
-   |    ~~~~~~~
+LL - fn While() {}
+LL + fn r#while() {}
+   |
 
 error: variable `Mod` should have a snake case name
   --> $DIR/lint-non-snake-case-identifiers-suggestion-reserved.rs:12:9
@@ -52,8 +54,9 @@ LL |     let Mod: usize = 0;
    |
 help: rename the identifier or convert it to a snake case raw identifier
    |
-LL |     let r#mod: usize = 0;
-   |         ~~~~~
+LL -     let Mod: usize = 0;
+LL +     let r#mod: usize = 0;
+   |
 
 error: variable `Super` should have a snake case name
   --> $DIR/lint-non-snake-case-identifiers-suggestion-reserved.rs:16:9
diff --git a/tests/ui/lint/recommend-literal.stderr b/tests/ui/lint/recommend-literal.stderr
index 424ecadd4b8..263071ca9a7 100644
--- a/tests/ui/lint/recommend-literal.stderr
+++ b/tests/ui/lint/recommend-literal.stderr
@@ -33,12 +33,14 @@ LL |     let v2: Bool = true;
    |
 help: a builtin type with a similar name exists
    |
-LL |     let v2: bool = true;
-   |             ~~~~
+LL -     let v2: Bool = true;
+LL +     let v2: bool = true;
+   |
 help: perhaps you intended to use this type
    |
-LL |     let v2: bool = true;
-   |             ~~~~
+LL -     let v2: Bool = true;
+LL +     let v2: bool = true;
+   |
 
 error[E0412]: cannot find type `boolean` in this scope
   --> $DIR/recommend-literal.rs:19:9
@@ -75,8 +77,9 @@ LL |     depth: Option<int>,
    |
 help: perhaps you intended to use this type
    |
-LL |     depth: Option<i32>,
-   |                   ~~~
+LL -     depth: Option<int>,
+LL +     depth: Option<i32>,
+   |
 help: you might be missing a type parameter
    |
 LL | struct Data<int> {
diff --git a/tests/ui/lint/static-mut-refs.e2021.stderr b/tests/ui/lint/static-mut-refs.e2021.stderr
index 5a4e712b3c0..abd579b336f 100644
--- a/tests/ui/lint/static-mut-refs.e2021.stderr
+++ b/tests/ui/lint/static-mut-refs.e2021.stderr
@@ -9,8 +9,9 @@ LL |         let _y = &X;
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let _y = &raw const X;
-   |                  ~~~~~~~~~~
+LL -         let _y = &X;
+LL +         let _y = &raw const X;
+   |
 
 warning: creating a mutable reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:42:18
@@ -22,8 +23,9 @@ LL |         let _y = &mut X;
    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |         let _y = &raw mut X;
-   |                  ~~~~~~~~
+LL -         let _y = &mut X;
+LL +         let _y = &raw mut X;
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:50:22
@@ -44,8 +46,9 @@ LL |         let (_b, _c) = (&X, &Y);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let (_b, _c) = (&raw const X, &Y);
-   |                         ~~~~~~~~~~
+LL -         let (_b, _c) = (&X, &Y);
+LL +         let (_b, _c) = (&raw const X, &Y);
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:54:29
@@ -57,8 +60,9 @@ LL |         let (_b, _c) = (&X, &Y);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let (_b, _c) = (&X, &raw const Y);
-   |                             ~~~~~~~~~~
+LL -         let (_b, _c) = (&X, &Y);
+LL +         let (_b, _c) = (&X, &raw const Y);
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:60:13
@@ -70,8 +74,9 @@ LL |         foo(&X);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         foo(&raw const X);
-   |             ~~~~~~~~~~
+LL -         foo(&X);
+LL +         foo(&raw const X);
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:66:17
@@ -101,8 +106,9 @@ LL |         let _v = &A.value;
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let _v = &raw const A.value;
-   |                  ~~~~~~~~~~
+LL -         let _v = &A.value;
+LL +         let _v = &raw const A.value;
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:80:18
@@ -114,8 +120,9 @@ LL |         let _s = &A.s.value;
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let _s = &raw const A.s.value;
-   |                  ~~~~~~~~~~
+LL -         let _s = &A.s.value;
+LL +         let _s = &raw const A.s.value;
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:84:22
diff --git a/tests/ui/lint/static-mut-refs.e2024.stderr b/tests/ui/lint/static-mut-refs.e2024.stderr
index 1b549272bd5..1387cdf0b32 100644
--- a/tests/ui/lint/static-mut-refs.e2024.stderr
+++ b/tests/ui/lint/static-mut-refs.e2024.stderr
@@ -9,8 +9,9 @@ LL |         let _y = &X;
    = note: `#[deny(static_mut_refs)]` on by default
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let _y = &raw const X;
-   |                  ~~~~~~~~~~
+LL -         let _y = &X;
+LL +         let _y = &raw const X;
+   |
 
 error: creating a mutable reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:42:18
@@ -22,8 +23,9 @@ LL |         let _y = &mut X;
    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |         let _y = &raw mut X;
-   |                  ~~~~~~~~
+LL -         let _y = &mut X;
+LL +         let _y = &raw mut X;
+   |
 
 error: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:50:22
@@ -44,8 +46,9 @@ LL |         let (_b, _c) = (&X, &Y);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let (_b, _c) = (&raw const X, &Y);
-   |                         ~~~~~~~~~~
+LL -         let (_b, _c) = (&X, &Y);
+LL +         let (_b, _c) = (&raw const X, &Y);
+   |
 
 error: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:54:29
@@ -57,8 +60,9 @@ LL |         let (_b, _c) = (&X, &Y);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let (_b, _c) = (&X, &raw const Y);
-   |                             ~~~~~~~~~~
+LL -         let (_b, _c) = (&X, &Y);
+LL +         let (_b, _c) = (&X, &raw const Y);
+   |
 
 error: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:60:13
@@ -70,8 +74,9 @@ LL |         foo(&X);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         foo(&raw const X);
-   |             ~~~~~~~~~~
+LL -         foo(&X);
+LL +         foo(&raw const X);
+   |
 
 error: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:66:17
@@ -101,8 +106,9 @@ LL |         let _v = &A.value;
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let _v = &raw const A.value;
-   |                  ~~~~~~~~~~
+LL -         let _v = &A.value;
+LL +         let _v = &raw const A.value;
+   |
 
 error: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:80:18
@@ -114,8 +120,9 @@ LL |         let _s = &A.s.value;
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |         let _s = &raw const A.s.value;
-   |                  ~~~~~~~~~~
+LL -         let _s = &A.s.value;
+LL +         let _s = &raw const A.s.value;
+   |
 
 error: creating a shared reference to mutable static is discouraged
   --> $DIR/static-mut-refs.rs:84:22
diff --git a/tests/ui/lint/type-overflow.stderr b/tests/ui/lint/type-overflow.stderr
index 9fdb05ed1c0..0ac67fddaa7 100644
--- a/tests/ui/lint/type-overflow.stderr
+++ b/tests/ui/lint/type-overflow.stderr
@@ -21,12 +21,14 @@ LL |     let fail = 0b1000_0001i8;
    = note: the literal `0b1000_0001i8` (decimal `129`) does not fit into the type `i8` and will become `-127i8`
 help: consider using the type `u8` instead
    |
-LL |     let fail = 0b1000_0001u8;
-   |                ~~~~~~~~~~~~~
+LL -     let fail = 0b1000_0001i8;
+LL +     let fail = 0b1000_0001u8;
+   |
 help: to use as a negative number (decimal `-127`), consider using the type `u8` for the literal and cast it to `i8`
    |
-LL |     let fail = 0b1000_0001u8 as i8;
-   |                ~~~~~~~~~~~~~~~~~~~
+LL -     let fail = 0b1000_0001i8;
+LL +     let fail = 0b1000_0001u8 as i8;
+   |
 
 warning: literal out of range for `i64`
   --> $DIR/type-overflow.rs:15:16
@@ -37,12 +39,14 @@ LL |     let fail = 0x8000_0000_0000_0000i64;
    = note: the literal `0x8000_0000_0000_0000i64` (decimal `9223372036854775808`) does not fit into the type `i64` and will become `-9223372036854775808i64`
 help: consider using the type `u64` instead
    |
-LL |     let fail = 0x8000_0000_0000_0000u64;
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let fail = 0x8000_0000_0000_0000i64;
+LL +     let fail = 0x8000_0000_0000_0000u64;
+   |
 help: to use as a negative number (decimal `-9223372036854775808`), consider using the type `u64` for the literal and cast it to `i64`
    |
-LL |     let fail = 0x8000_0000_0000_0000u64 as i64;
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let fail = 0x8000_0000_0000_0000i64;
+LL +     let fail = 0x8000_0000_0000_0000u64 as i64;
+   |
 
 warning: literal out of range for `u32`
   --> $DIR/type-overflow.rs:19:16
@@ -62,8 +66,9 @@ LL |     let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000;
    = help: consider using the type `u128` instead
 help: to use as a negative number (decimal `-170141183460469231731687303715884105728`), consider using the type `u128` for the literal and cast it to `i128`
    |
-LL |     let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000u128 as i128;
-   |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000;
+LL +     let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000u128 as i128;
+   |
 
 warning: literal out of range for `i32`
   --> $DIR/type-overflow.rs:27:16
@@ -112,8 +117,9 @@ LL |     let fail = 0x8FFF_FFFF_FFFF_FFFE;
    = help: consider using the type `u64` instead
 help: to use as a negative number (decimal `-2`), consider using the type `u32` for the literal and cast it to `i32`
    |
-LL |     let fail = 0x8FFF_FFFF_FFFF_FFFEu32 as i32;
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let fail = 0x8FFF_FFFF_FFFF_FFFE;
+LL +     let fail = 0x8FFF_FFFF_FFFF_FFFEu32 as i32;
+   |
 
 warning: literal out of range for `i8`
   --> $DIR/type-overflow.rs:46:17
diff --git a/tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr b/tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr
index 8fc2d1bc88f..8922f484d3e 100644
--- a/tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr
+++ b/tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr
@@ -12,8 +12,9 @@ LL | #![deny(unused)]
    = note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
 help: try ignoring the field
    |
-LL |         A { i, j: _ } | B { i, j: _ } => {
-   |                ~~~~            ~~~~
+LL -         A { i, j } | B { i, j } => {
+LL +         A { i, j: _ } | B { i, j: _ } => {
+   |
 
 error: unused variable: `j`
   --> $DIR/issue-67691-unused-field-in-or-pattern.rs:30:16
@@ -23,8 +24,9 @@ LL |         A { i, ref j } | B { i, ref j } => {
    |
 help: try ignoring the field
    |
-LL |         A { i, j: _ } | B { i, j: _ } => {
-   |                ~~~~            ~~~~
+LL -         A { i, ref j } | B { i, ref j } => {
+LL +         A { i, j: _ } | B { i, j: _ } => {
+   |
 
 error: unused variable: `j`
   --> $DIR/issue-67691-unused-field-in-or-pattern.rs:40:21
@@ -34,8 +36,9 @@ LL |         Some(A { i, j } | B { i, j }) => {
    |
 help: try ignoring the field
    |
-LL |         Some(A { i, j: _ } | B { i, j: _ }) => {
-   |                     ~~~~            ~~~~
+LL -         Some(A { i, j } | B { i, j }) => {
+LL +         Some(A { i, j: _ } | B { i, j: _ }) => {
+   |
 
 error: unused variable: `j`
   --> $DIR/issue-67691-unused-field-in-or-pattern.rs:52:21
@@ -45,8 +48,9 @@ LL |         Some(A { i, ref j } | B { i, ref j }) => {
    |
 help: try ignoring the field
    |
-LL |         Some(A { i, j: _ } | B { i, j: _ }) => {
-   |                     ~~~~            ~~~~
+LL -         Some(A { i, ref j } | B { i, ref j }) => {
+LL +         Some(A { i, j: _ } | B { i, j: _ }) => {
+   |
 
 error: unused variable: `i`
   --> $DIR/issue-67691-unused-field-in-or-pattern.rs:62:24
@@ -56,8 +60,9 @@ LL |         MixedEnum::A { i } | MixedEnum::B(i) => {
    |
 help: try ignoring the field
    |
-LL |         MixedEnum::A { i: _ } | MixedEnum::B(_) => {
-   |                        ~~~~                  ~
+LL -         MixedEnum::A { i } | MixedEnum::B(i) => {
+LL +         MixedEnum::A { i: _ } | MixedEnum::B(_) => {
+   |
 
 error: unused variable: `i`
   --> $DIR/issue-67691-unused-field-in-or-pattern.rs:70:24
@@ -67,8 +72,9 @@ LL |         MixedEnum::A { ref i } | MixedEnum::B(ref i) => {
    |
 help: try ignoring the field
    |
-LL |         MixedEnum::A { i: _ } | MixedEnum::B(_) => {
-   |                        ~~~~                  ~
+LL -         MixedEnum::A { ref i } | MixedEnum::B(ref i) => {
+LL +         MixedEnum::A { i: _ } | MixedEnum::B(_) => {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/lint/wide_pointer_comparisons.stderr b/tests/ui/lint/wide_pointer_comparisons.stderr
index 78548e308ed..f5f8060902b 100644
--- a/tests/ui/lint/wide_pointer_comparisons.stderr
+++ b/tests/ui/lint/wide_pointer_comparisons.stderr
@@ -7,8 +7,9 @@ LL |     let _ = a == b;
    = note: `#[warn(ambiguous_wide_pointer_comparisons)]` on by default
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = std::ptr::addr_eq(a, b);
-   |             ++++++++++++++++++ ~  +
+LL -     let _ = a == b;
+LL +     let _ = std::ptr::addr_eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:22:13
@@ -18,8 +19,9 @@ LL |     let _ = a != b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = !std::ptr::addr_eq(a, b);
-   |             +++++++++++++++++++ ~  +
+LL -     let _ = a != b;
+LL +     let _ = !std::ptr::addr_eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:24:13
@@ -73,8 +75,9 @@ LL |     let _ = PartialEq::eq(&a, &b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = std::ptr::addr_eq(a, b);
-   |             ~~~~~~~~~~~~~~~~~~ ~
+LL -     let _ = PartialEq::eq(&a, &b);
+LL +     let _ = std::ptr::addr_eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:35:13
@@ -84,8 +87,9 @@ LL |     let _ = PartialEq::ne(&a, &b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = !std::ptr::addr_eq(a, b);
-   |             ~~~~~~~~~~~~~~~~~~~ ~
+LL -     let _ = PartialEq::ne(&a, &b);
+LL +     let _ = !std::ptr::addr_eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:37:13
@@ -95,8 +99,9 @@ LL |     let _ = a.eq(&b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = std::ptr::addr_eq(a, b);
-   |             ++++++++++++++++++ ~
+LL -     let _ = a.eq(&b);
+LL +     let _ = std::ptr::addr_eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:39:13
@@ -106,8 +111,9 @@ LL |     let _ = a.ne(&b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = !std::ptr::addr_eq(a, b);
-   |             +++++++++++++++++++ ~
+LL -     let _ = a.ne(&b);
+LL +     let _ = !std::ptr::addr_eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:41:13
@@ -183,8 +189,9 @@ LL |         let _ = a == b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(a.as_ptr(), b.as_ptr());
-   |                 ++++++++++++++++++ ~~~~~~~~~~  ++++++++++
+LL -         let _ = a == b;
+LL +         let _ = std::ptr::addr_eq(a.as_ptr(), b.as_ptr());
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:59:17
@@ -205,8 +212,9 @@ LL |         let _ = &a == &b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(a.as_ptr(), b.as_ptr());
-   |                 ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~  ++++++++++
+LL -         let _ = &a == &b;
+LL +         let _ = std::ptr::addr_eq(a.as_ptr(), b.as_ptr());
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:70:17
@@ -216,8 +224,9 @@ LL |         let _ = a == b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(*a, *b);
-   |                 +++++++++++++++++++ ~~~ +
+LL -         let _ = a == b;
+LL +         let _ = std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:72:17
@@ -227,8 +236,9 @@ LL |         let _ = a != b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(*a, *b);
-   |                 ++++++++++++++++++++ ~~~ +
+LL -         let _ = a != b;
+LL +         let _ = !std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:74:17
@@ -282,8 +292,9 @@ LL |         let _ = PartialEq::eq(a, b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(*a, *b);
-   |                 ~~~~~~~~~~~~~~~~~~~ ~~~
+LL -         let _ = PartialEq::eq(a, b);
+LL +         let _ = std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:85:17
@@ -293,8 +304,9 @@ LL |         let _ = PartialEq::ne(a, b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(*a, *b);
-   |                 ~~~~~~~~~~~~~~~~~~~~ ~~~
+LL -         let _ = PartialEq::ne(a, b);
+LL +         let _ = !std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:87:17
@@ -304,8 +316,9 @@ LL |         let _ = PartialEq::eq(&a, &b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(*a, *b);
-   |                 ~~~~~~~~~~~~~~~~~~~ ~~~
+LL -         let _ = PartialEq::eq(&a, &b);
+LL +         let _ = std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:89:17
@@ -315,8 +328,9 @@ LL |         let _ = PartialEq::ne(&a, &b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(*a, *b);
-   |                 ~~~~~~~~~~~~~~~~~~~~ ~~~
+LL -         let _ = PartialEq::ne(&a, &b);
+LL +         let _ = !std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:91:17
@@ -326,8 +340,9 @@ LL |         let _ = a.eq(b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(*a, *b);
-   |                 +++++++++++++++++++ ~~~
+LL -         let _ = a.eq(b);
+LL +         let _ = std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:93:17
@@ -337,8 +352,9 @@ LL |         let _ = a.ne(b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(*a, *b);
-   |                 ++++++++++++++++++++ ~~~
+LL -         let _ = a.ne(b);
+LL +         let _ = !std::ptr::addr_eq(*a, *b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:95:17
@@ -414,12 +430,14 @@ LL |     let _ = s == s;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = std::ptr::addr_eq(s, s);
-   |             ++++++++++++++++++ ~  +
+LL -     let _ = s == s;
+LL +     let _ = std::ptr::addr_eq(s, s);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |     let _ = std::ptr::eq(s, s);
-   |             +++++++++++++ ~  +
+LL -     let _ = s == s;
+LL +     let _ = std::ptr::eq(s, s);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:114:13
@@ -429,12 +447,14 @@ LL |     let _ = s == s;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |     let _ = std::ptr::addr_eq(s, s);
-   |             ++++++++++++++++++ ~  +
+LL -     let _ = s == s;
+LL +     let _ = std::ptr::addr_eq(s, s);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |     let _ = std::ptr::eq(s, s);
-   |             +++++++++++++ ~  +
+LL -     let _ = s == s;
+LL +     let _ = std::ptr::eq(s, s);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:118:17
@@ -444,12 +464,14 @@ LL |         let _ = a == b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(a, b);
-   |                 ++++++++++++++++++ ~  +
+LL -         let _ = a == b;
+LL +         let _ = std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         let _ = std::ptr::eq(a, b);
-   |                 +++++++++++++ ~  +
+LL -         let _ = a == b;
+LL +         let _ = std::ptr::eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:120:17
@@ -459,12 +481,14 @@ LL |         let _ = a != b;
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(a, b);
-   |                 +++++++++++++++++++ ~  +
+LL -         let _ = a != b;
+LL +         let _ = !std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         let _ = !std::ptr::eq(a, b);
-   |                 ++++++++++++++ ~  +
+LL -         let _ = a != b;
+LL +         let _ = !std::ptr::eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:122:17
@@ -518,12 +542,14 @@ LL |         let _ = PartialEq::eq(&a, &b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(a, b);
-   |                 ~~~~~~~~~~~~~~~~~~ ~
+LL -         let _ = PartialEq::eq(&a, &b);
+LL +         let _ = std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         let _ = std::ptr::eq(a, b);
-   |                 ~~~~~~~~~~~~~ ~
+LL -         let _ = PartialEq::eq(&a, &b);
+LL +         let _ = std::ptr::eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:133:17
@@ -533,12 +559,14 @@ LL |         let _ = PartialEq::ne(&a, &b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(a, b);
-   |                 ~~~~~~~~~~~~~~~~~~~ ~
+LL -         let _ = PartialEq::ne(&a, &b);
+LL +         let _ = !std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         let _ = !std::ptr::eq(a, b);
-   |                 ~~~~~~~~~~~~~~ ~
+LL -         let _ = PartialEq::ne(&a, &b);
+LL +         let _ = !std::ptr::eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:135:17
@@ -548,12 +576,14 @@ LL |         let _ = a.eq(&b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = std::ptr::addr_eq(a, b);
-   |                 ++++++++++++++++++ ~
+LL -         let _ = a.eq(&b);
+LL +         let _ = std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         let _ = std::ptr::eq(a, b);
-   |                 +++++++++++++ ~
+LL -         let _ = a.eq(&b);
+LL +         let _ = std::ptr::eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:137:17
@@ -563,12 +593,14 @@ LL |         let _ = a.ne(&b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         let _ = !std::ptr::addr_eq(a, b);
-   |                 +++++++++++++++++++ ~
+LL -         let _ = a.ne(&b);
+LL +         let _ = !std::ptr::addr_eq(a, b);
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         let _ = !std::ptr::eq(a, b);
-   |                 ++++++++++++++ ~
+LL -         let _ = a.ne(&b);
+LL +         let _ = !std::ptr::eq(a, b);
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:142:9
@@ -578,12 +610,14 @@ LL |         &*a == &*b
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         std::ptr::addr_eq(*a, *b)
-   |         ~~~~~~~~~~~~~~~~~~  ~   +
+LL -         &*a == &*b
+LL +         std::ptr::addr_eq(*a, *b)
+   |
 help: use explicit `std::ptr::eq` method to compare metadata and addresses
    |
-LL |         std::ptr::eq(*a, *b)
-   |         ~~~~~~~~~~~~~  ~   +
+LL -         &*a == &*b
+LL +         std::ptr::eq(*a, *b)
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:153:14
@@ -593,8 +627,9 @@ LL |         cmp!(a, b);
    |
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |         cmp!(std::ptr::addr_eq(a, b));
-   |              ++++++++++++++++++    +
+LL -         cmp!(a, b);
+LL +         cmp!(std::ptr::addr_eq(a, b));
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:159:39
@@ -608,8 +643,9 @@ LL |         cmp!(a, b);
    = note: this warning originates in the macro `cmp` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
    |
-LL |             ($a:ident, $b:ident) => { std::ptr::addr_eq($a, $b) }
-   |                                       ++++++++++++++++++  ~   +
+LL -             ($a:ident, $b:ident) => { $a == $b }
+LL +             ($a:ident, $b:ident) => { std::ptr::addr_eq($a, $b) }
+   |
 
 warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
   --> $DIR/wide_pointer_comparisons.rs:169:37
diff --git a/tests/ui/loops/loop-break-value-no-repeat.stderr b/tests/ui/loops/loop-break-value-no-repeat.stderr
index 946057d0543..918ea81a2ed 100644
--- a/tests/ui/loops/loop-break-value-no-repeat.stderr
+++ b/tests/ui/loops/loop-break-value-no-repeat.stderr
@@ -8,8 +8,9 @@ LL |         break 22
    |
 help: use `break` on its own without a value inside this `for` loop
    |
-LL |         break
-   |         ~~~~~
+LL -         break 22
+LL +         break
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/loops/loop-break-value.stderr b/tests/ui/loops/loop-break-value.stderr
index 0912bdbb221..3b9735510bd 100644
--- a/tests/ui/loops/loop-break-value.stderr
+++ b/tests/ui/loops/loop-break-value.stderr
@@ -46,12 +46,14 @@ LL |         break ();
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break ();
+LL +         break;
+   |
 help: alternatively, you might have meant to use the available loop label
    |
-LL |         break 'while_loop;
-   |               ~~~~~~~~~~~
+LL -         break ();
+LL +         break 'while_loop;
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/loop-break-value.rs:34:13
@@ -64,8 +66,9 @@ LL |             break 'while_loop 123;
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |             break 'while_loop;
-   |             ~~~~~~~~~~~~~~~~~
+LL -             break 'while_loop 123;
+LL +             break 'while_loop;
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/loop-break-value.rs:42:12
@@ -77,8 +80,9 @@ LL |         if break () {
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |         if break {
-   |            ~~~~~
+LL -         if break () {
+LL +         if break {
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/loop-break-value.rs:47:9
@@ -90,8 +94,9 @@ LL |         break None;
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break None;
+LL +         break;
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/loop-break-value.rs:53:13
@@ -104,8 +109,9 @@ LL |             break 'while_let_loop "nope";
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |             break 'while_let_loop;
-   |             ~~~~~~~~~~~~~~~~~~~~~
+LL -             break 'while_let_loop "nope";
+LL +             break 'while_let_loop;
+   |
 
 error[E0571]: `break` with value from a `for` loop
   --> $DIR/loop-break-value.rs:60:9
@@ -117,8 +123,9 @@ LL |         break ();
    |
 help: use `break` on its own without a value inside this `for` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break ();
+LL +         break;
+   |
 
 error[E0571]: `break` with value from a `for` loop
   --> $DIR/loop-break-value.rs:61:9
@@ -131,8 +138,9 @@ LL |         break [()];
    |
 help: use `break` on its own without a value inside this `for` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break [()];
+LL +         break;
+   |
 
 error[E0571]: `break` with value from a `for` loop
   --> $DIR/loop-break-value.rs:68:13
@@ -145,8 +153,9 @@ LL |             break 'for_loop Some(17);
    |
 help: use `break` on its own without a value inside this `for` loop
    |
-LL |             break 'for_loop;
-   |             ~~~~~~~~~~~~~~~
+LL -             break 'for_loop Some(17);
+LL +             break 'for_loop;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/loop-break-value.rs:4:31
diff --git a/tests/ui/macros/expand-full-no-resolution.stderr b/tests/ui/macros/expand-full-no-resolution.stderr
index df6f20332bf..b836ac51ad9 100644
--- a/tests/ui/macros/expand-full-no-resolution.stderr
+++ b/tests/ui/macros/expand-full-no-resolution.stderr
@@ -9,8 +9,9 @@ LL |     format_args!(a!());
    |
 help: the leading underscore in `_a` marks it as unused, consider renaming it to `a`
    |
-LL |         macro_rules! a {
-   |                      ~
+LL -         macro_rules! _a {
+LL +         macro_rules! a {
+   |
 
 error: cannot find macro `a` in this scope
   --> $DIR/expand-full-no-resolution.rs:19:10
@@ -23,8 +24,9 @@ LL |     env!(a!());
    |
 help: the leading underscore in `_a` marks it as unused, consider renaming it to `a`
    |
-LL |         macro_rules! a {
-   |                      ~
+LL -         macro_rules! _a {
+LL +         macro_rules! a {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/macros/expr_2021_cargo_fix_edition.stderr b/tests/ui/macros/expr_2021_cargo_fix_edition.stderr
index fe1fd4a26a0..8ab6938fe19 100644
--- a/tests/ui/macros/expr_2021_cargo_fix_edition.stderr
+++ b/tests/ui/macros/expr_2021_cargo_fix_edition.stderr
@@ -13,8 +13,9 @@ LL | #![warn(edition_2024_expr_fragment_specifier)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: to keep the existing behavior, use the `expr_2021` fragment specifier
    |
-LL |     ($e:expr_2021) => {
-   |         ~~~~~~~~~
+LL -     ($e:expr) => {
+LL +     ($e:expr_2021) => {
+   |
 
 warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
   --> $DIR/expr_2021_cargo_fix_edition.rs:11:11
@@ -26,8 +27,9 @@ LL |     ($($i:expr)*) => { };
    = note: for more information, see Migration Guide <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/macro-fragment-specifiers.html>
 help: to keep the existing behavior, use the `expr_2021` fragment specifier
    |
-LL |     ($($i:expr_2021)*) => { };
-   |           ~~~~~~~~~
+LL -     ($($i:expr)*) => { };
+LL +     ($($i:expr_2021)*) => { };
+   |
 
 warning: 2 warnings emitted
 
diff --git a/tests/ui/macros/format-foreign.stderr b/tests/ui/macros/format-foreign.stderr
index 7971c2ab2b9..ccb6583615c 100644
--- a/tests/ui/macros/format-foreign.stderr
+++ b/tests/ui/macros/format-foreign.stderr
@@ -11,8 +11,9 @@ LL |     println!("%.*3$s %s!\n", "Hello,", "World", 4);
    = note: printf formatting is not supported; see the documentation for `std::fmt`
 help: format specifiers use curly braces
    |
-LL |     println!("{:.2$} {}!\n", "Hello,", "World", 4);
-   |               ~~~~~~ ~~
+LL -     println!("%.*3$s %s!\n", "Hello,", "World", 4);
+LL +     println!("{:.2$} {}!\n", "Hello,", "World", 4);
+   |
 
 error: argument never used
   --> $DIR/format-foreign.rs:3:29
@@ -75,8 +76,9 @@ LL |     println!("$1 $0 $$ $NAME", 1, 2, NAME=3);
    = note: shell formatting is not supported; see the documentation for `std::fmt`
 help: format specifiers use curly braces
    |
-LL |     println!("{1} {0} $$ {NAME}", 1, 2, NAME=3);
-   |               ~~~ ~~~    ~~~~~~
+LL -     println!("$1 $0 $$ $NAME", 1, 2, NAME=3);
+LL +     println!("{1} {0} $$ {NAME}", 1, 2, NAME=3);
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/macros/issue-103529.stderr b/tests/ui/macros/issue-103529.stderr
index 61e322afc77..985d9ace818 100644
--- a/tests/ui/macros/issue-103529.stderr
+++ b/tests/ui/macros/issue-103529.stderr
@@ -21,8 +21,9 @@ LL | m! { auto x }
    |
 help: write `let` instead of `auto` to introduce a new variable
    |
-LL | m! { let x }
-   |      ~~~
+LL - m! { auto x }
+LL + m! { let x }
+   |
 
 error: invalid variable declaration
   --> $DIR/issue-103529.rs:10:6
@@ -32,8 +33,9 @@ LL | m! { var x }
    |
 help: write `let` instead of `var` to introduce a new variable
    |
-LL | m! { let x }
-   |      ~~~
+LL - m! { var x }
+LL + m! { let x }
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/macros/issue-109237.stderr b/tests/ui/macros/issue-109237.stderr
index a335786df86..9d25420af25 100644
--- a/tests/ui/macros/issue-109237.stderr
+++ b/tests/ui/macros/issue-109237.stderr
@@ -11,8 +11,9 @@ LL |     let _ = statement!();
    = note: this error originates in the macro `statement` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: surround the macro invocation with `{}` to interpret the expansion as a statement
    |
-LL |     let _ = { statement!(); };
-   |             ~~~~~~~~~~~~~~~~~
+LL -     let _ = statement!();
+LL +     let _ = { statement!(); };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/macros/issue-118786.stderr b/tests/ui/macros/issue-118786.stderr
index 7fa5c2b83dd..af4cc9ad863 100644
--- a/tests/ui/macros/issue-118786.stderr
+++ b/tests/ui/macros/issue-118786.stderr
@@ -6,8 +6,9 @@ LL | make_macro!((meow));
    |
 help: change the delimiters to curly braces
    |
-LL | make_macro!({meow});
-   |             ~    ~
+LL - make_macro!((meow));
+LL + make_macro!({meow});
+   |
 help: add a semicolon
    |
 LL |         macro_rules! $macro_name; {
diff --git a/tests/ui/macros/issue-99265.stderr b/tests/ui/macros/issue-99265.stderr
index 9185dbff61e..a4200bf02cf 100644
--- a/tests/ui/macros/issue-99265.stderr
+++ b/tests/ui/macros/issue-99265.stderr
@@ -74,8 +74,9 @@ LL |     println!("Hello {:1$}!", "x", width = 5);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {:width$}!", "x", width = 5);
-   |                       ~~~~~~
+LL -     println!("Hello {:1$}!", "x", width = 5);
+LL +     println!("Hello {:width$}!", "x", width = 5);
+   |
 
 warning: named argument `f` is not used by name
   --> $DIR/issue-99265.rs:23:33
@@ -100,8 +101,9 @@ LL |     println!("Hello {:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {:1$.precision$}!", f = 0.02f32, width = 5, precision = 2);
-   |                          ~~~~~~~~~~
+LL -     println!("Hello {:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
+LL +     println!("Hello {:1$.precision$}!", f = 0.02f32, width = 5, precision = 2);
+   |
 
 warning: named argument `width` is not used by name
   --> $DIR/issue-99265.rs:23:46
@@ -113,8 +115,9 @@ LL |     println!("Hello {:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {:width$.2$}!", f = 0.02f32, width = 5, precision = 2);
-   |                       ~~~~~~
+LL -     println!("Hello {:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
+LL +     println!("Hello {:width$.2$}!", f = 0.02f32, width = 5, precision = 2);
+   |
 
 warning: named argument `f` is not used by name
   --> $DIR/issue-99265.rs:31:34
@@ -126,8 +129,9 @@ LL |     println!("Hello {0:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {f:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
-   |                      ~
+LL -     println!("Hello {0:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
+LL +     println!("Hello {f:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
+   |
 
 warning: named argument `precision` is not used by name
   --> $DIR/issue-99265.rs:31:58
@@ -139,8 +143,9 @@ LL |     println!("Hello {0:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {0:1$.precision$}!", f = 0.02f32, width = 5, precision = 2);
-   |                           ~~~~~~~~~~
+LL -     println!("Hello {0:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
+LL +     println!("Hello {0:1$.precision$}!", f = 0.02f32, width = 5, precision = 2);
+   |
 
 warning: named argument `width` is not used by name
   --> $DIR/issue-99265.rs:31:47
@@ -152,8 +157,9 @@ LL |     println!("Hello {0:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {0:width$.2$}!", f = 0.02f32, width = 5, precision = 2);
-   |                        ~~~~~~
+LL -     println!("Hello {0:1$.2$}!", f = 0.02f32, width = 5, precision = 2);
+LL +     println!("Hello {0:width$.2$}!", f = 0.02f32, width = 5, precision = 2);
+   |
 
 warning: named argument `f` is not used by name
   --> $DIR/issue-99265.rs:49:9
@@ -166,8 +172,9 @@ LL |         f = 0.02f32,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {f:2$.3$} {4:5$.6$}! {1}",
-   |                     ~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {f:2$.3$} {4:5$.6$}! {1}",
+   |
 
 warning: named argument `precision` is not used by name
   --> $DIR/issue-99265.rs:54:9
@@ -180,8 +187,9 @@ LL |         precision = 2,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {1:2$.precision$} {4:5$.6$}! {1}",
-   |                          ~~~~~~~~~~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {1:2$.precision$} {4:5$.6$}! {1}",
+   |
 
 warning: named argument `width` is not used by name
   --> $DIR/issue-99265.rs:52:9
@@ -194,8 +202,9 @@ LL |         width = 5,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {1:width$.3$} {4:5$.6$}! {1}",
-   |                       ~~~~~~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {1:width$.3$} {4:5$.6$}! {1}",
+   |
 
 warning: named argument `g` is not used by name
   --> $DIR/issue-99265.rs:56:9
@@ -208,8 +217,9 @@ LL |         g = 0.02f32,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {1:2$.3$} {g:5$.6$}! {1}",
-   |                               ~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {1:2$.3$} {g:5$.6$}! {1}",
+   |
 
 warning: named argument `precision2` is not used by name
   --> $DIR/issue-99265.rs:60:9
@@ -222,8 +232,9 @@ LL |         precision2 = 2
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {1:2$.3$} {4:5$.precision2$}! {1}",
-   |                                    ~~~~~~~~~~~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {1:2$.3$} {4:5$.precision2$}! {1}",
+   |
 
 warning: named argument `width2` is not used by name
   --> $DIR/issue-99265.rs:58:9
@@ -236,8 +247,9 @@ LL |         width2 = 5,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {1:2$.3$} {4:width2$.6$}! {1}",
-   |                                 ~~~~~~~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {1:2$.3$} {4:width2$.6$}! {1}",
+   |
 
 warning: named argument `f` is not used by name
   --> $DIR/issue-99265.rs:49:9
@@ -250,8 +262,9 @@ LL |         f = 0.02f32,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |         "{}, Hello {1:2$.3$} {4:5$.6$}! {f}",
-   |                                          ~
+LL -         "{}, Hello {1:2$.3$} {4:5$.6$}! {1}",
+LL +         "{}, Hello {1:2$.3$} {4:5$.6$}! {f}",
+   |
 
 warning: named argument `f` is not used by name
   --> $DIR/issue-99265.rs:64:31
@@ -276,8 +289,9 @@ LL |     println!("Hello {0:0.1}!", f = 0.02f32);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("Hello {f:0.1}!", f = 0.02f32);
-   |                      ~
+LL -     println!("Hello {0:0.1}!", f = 0.02f32);
+LL +     println!("Hello {f:0.1}!", f = 0.02f32);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:79:23
@@ -302,8 +316,9 @@ LL |     println!("{:0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{:v$}", v = val);
-   |                 ~~
+LL -     println!("{:0$}", v = val);
+LL +     println!("{:v$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:84:24
@@ -315,8 +330,9 @@ LL |     println!("{0:0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{v:0$}", v = val);
-   |                ~
+LL -     println!("{0:0$}", v = val);
+LL +     println!("{v:0$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:84:24
@@ -328,8 +344,9 @@ LL |     println!("{0:0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{0:v$}", v = val);
-   |                  ~~
+LL -     println!("{0:0$}", v = val);
+LL +     println!("{0:v$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:89:26
@@ -354,8 +371,9 @@ LL |     println!("{:0$.0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{:0$.v$}", v = val);
-   |                    ~~
+LL -     println!("{:0$.0$}", v = val);
+LL +     println!("{:0$.v$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:89:26
@@ -367,8 +385,9 @@ LL |     println!("{:0$.0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{:v$.0$}", v = val);
-   |                 ~~
+LL -     println!("{:0$.0$}", v = val);
+LL +     println!("{:v$.0$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:96:27
@@ -380,8 +399,9 @@ LL |     println!("{0:0$.0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{v:0$.0$}", v = val);
-   |                ~
+LL -     println!("{0:0$.0$}", v = val);
+LL +     println!("{v:0$.0$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:96:27
@@ -393,8 +413,9 @@ LL |     println!("{0:0$.0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{0:0$.v$}", v = val);
-   |                     ~~
+LL -     println!("{0:0$.0$}", v = val);
+LL +     println!("{0:0$.v$}", v = val);
+   |
 
 warning: named argument `v` is not used by name
   --> $DIR/issue-99265.rs:96:27
@@ -406,8 +427,9 @@ LL |     println!("{0:0$.0$}", v = val);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{0:v$.0$}", v = val);
-   |                  ~~
+LL -     println!("{0:0$.0$}", v = val);
+LL +     println!("{0:v$.0$}", v = val);
+   |
 
 warning: named argument `a` is not used by name
   --> $DIR/issue-99265.rs:104:28
@@ -432,8 +454,9 @@ LL |     println!("{} {a} {0}", a = 1);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{} {a} {a}", a = 1);
-   |                       ~
+LL -     println!("{} {a} {0}", a = 1);
+LL +     println!("{} {a} {a}", a = 1);
+   |
 
 warning: named argument `a` is not used by name
   --> $DIR/issue-99265.rs:115:14
@@ -460,8 +483,9 @@ LL |              a = 1.0, b = 1, c = 2,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |                 {:1$.c$}",
-   |                      ~~
+LL -                 {:1$.2$}",
+LL +                 {:1$.c$}",
+   |
 
 warning: named argument `b` is not used by name
   --> $DIR/issue-99265.rs:115:23
@@ -474,8 +498,9 @@ LL |              a = 1.0, b = 1, c = 2,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |                 {:b$.2$}",
-   |                   ~~
+LL -                 {:1$.2$}",
+LL +                 {:b$.2$}",
+   |
 
 warning: named argument `a` is not used by name
   --> $DIR/issue-99265.rs:126:14
@@ -488,8 +513,9 @@ LL |              a = 1.0, b = 1, c = 2,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |                 {a:1$.2$}",
-   |                  ~
+LL -                 {0:1$.2$}",
+LL +                 {a:1$.2$}",
+   |
 
 warning: named argument `c` is not used by name
   --> $DIR/issue-99265.rs:126:30
@@ -502,8 +528,9 @@ LL |              a = 1.0, b = 1, c = 2,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |                 {0:1$.c$}",
-   |                       ~~
+LL -                 {0:1$.2$}",
+LL +                 {0:1$.c$}",
+   |
 
 warning: named argument `b` is not used by name
   --> $DIR/issue-99265.rs:126:23
@@ -516,8 +543,9 @@ LL |              a = 1.0, b = 1, c = 2,
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |                 {0:b$.2$}",
-   |                    ~~
+LL -                 {0:1$.2$}",
+LL +                 {0:b$.2$}",
+   |
 
 warning: named argument `x` is not used by name
   --> $DIR/issue-99265.rs:132:30
@@ -542,8 +570,9 @@ LL |     println!("{{{:1$.2$}}}", x = 1.0, width = 3, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{{{:1$.precision$}}}", x = 1.0, width = 3, precision = 2);
-   |                      ~~~~~~~~~~
+LL -     println!("{{{:1$.2$}}}", x = 1.0, width = 3, precision = 2);
+LL +     println!("{{{:1$.precision$}}}", x = 1.0, width = 3, precision = 2);
+   |
 
 warning: named argument `width` is not used by name
   --> $DIR/issue-99265.rs:132:39
@@ -555,8 +584,9 @@ LL |     println!("{{{:1$.2$}}}", x = 1.0, width = 3, precision = 2);
    |
 help: use the named argument by name to avoid ambiguity
    |
-LL |     println!("{{{:width$.2$}}}", x = 1.0, width = 3, precision = 2);
-   |                   ~~~~~~
+LL -     println!("{{{:1$.2$}}}", x = 1.0, width = 3, precision = 2);
+LL +     println!("{{{:width$.2$}}}", x = 1.0, width = 3, precision = 2);
+   |
 
 warning: 42 warnings emitted
 
diff --git a/tests/ui/macros/macro-backtrace-invalid-internals.stderr b/tests/ui/macros/macro-backtrace-invalid-internals.stderr
index aa8f06a0df1..bb8250d58b0 100644
--- a/tests/ui/macros/macro-backtrace-invalid-internals.stderr
+++ b/tests/ui/macros/macro-backtrace-invalid-internals.stderr
@@ -43,8 +43,9 @@ LL |     real_method_stmt!();
    = note: this error originates in the macro `real_method_stmt` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: you must specify a concrete type for this numeric value, like `f32`
    |
-LL |           2.0_f32.neg()
-   |           ~~~~~~~
+LL -           2.0.neg()
+LL +           2.0_f32.neg()
+   |
 
 error[E0599]: no method named `fake` found for type `{integer}` in the current scope
   --> $DIR/macro-backtrace-invalid-internals.rs:23:13
@@ -91,8 +92,9 @@ LL |     let _ = real_method_expr!();
    = note: this error originates in the macro `real_method_expr` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: you must specify a concrete type for this numeric value, like `f32`
    |
-LL |           2.0_f32.neg()
-   |           ~~~~~~~
+LL -           2.0.neg()
+LL +           2.0_f32.neg()
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/macros/macro-inner-attributes.stderr b/tests/ui/macros/macro-inner-attributes.stderr
index 947e33b08f4..d74b64db5ac 100644
--- a/tests/ui/macros/macro-inner-attributes.stderr
+++ b/tests/ui/macros/macro-inner-attributes.stderr
@@ -6,8 +6,9 @@ LL |     a::bar();
    |
 help: there is a crate or module with a similar name
    |
-LL |     b::bar();
-   |     ~
+LL -     a::bar();
+LL +     b::bar();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/macros/macro-use-wrong-name.stderr b/tests/ui/macros/macro-use-wrong-name.stderr
index 89345866be8..c7f214db225 100644
--- a/tests/ui/macros/macro-use-wrong-name.stderr
+++ b/tests/ui/macros/macro-use-wrong-name.stderr
@@ -11,8 +11,9 @@ LL | macro_rules! macro_one { () => ("one") }
    |
 help: a macro with a similar name exists
    |
-LL |     macro_one!();
-   |     ~~~~~~~~~
+LL -     macro_two!();
+LL +     macro_one!();
+   |
 help: consider importing this macro
    |
 LL + use two_macros::macro_two;
diff --git a/tests/ui/macros/recovery-allowed.stderr b/tests/ui/macros/recovery-allowed.stderr
index 825f7a8faf8..00bc65ed914 100644
--- a/tests/ui/macros/recovery-allowed.stderr
+++ b/tests/ui/macros/recovery-allowed.stderr
@@ -6,8 +6,9 @@ LL | please_recover! { not 1 }
    |
 help: use `!` to perform bitwise not
    |
-LL | please_recover! { !1 }
-   |                   ~
+LL - please_recover! { not 1 }
+LL + please_recover! { !1 }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/malformed/malformed-meta-delim.stderr b/tests/ui/malformed/malformed-meta-delim.stderr
index 27636c3d546..3f2357c435f 100644
--- a/tests/ui/malformed/malformed-meta-delim.stderr
+++ b/tests/ui/malformed/malformed-meta-delim.stderr
@@ -6,8 +6,9 @@ LL | #[allow { foo_lint } ]
    |
 help: the delimiters should be `(` and `)`
    |
-LL | #[allow ( foo_lint ) ]
-   |         ~          ~
+LL - #[allow { foo_lint } ]
+LL + #[allow ( foo_lint ) ]
+   |
 
 error: wrong meta list delimiters
   --> $DIR/malformed-meta-delim.rs:8:9
@@ -17,8 +18,9 @@ LL | #[allow [ foo_lint ] ]
    |
 help: the delimiters should be `(` and `)`
    |
-LL | #[allow ( foo_lint ) ]
-   |         ~          ~
+LL - #[allow [ foo_lint ] ]
+LL + #[allow ( foo_lint ) ]
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/malformed/malformed-special-attrs.stderr b/tests/ui/malformed/malformed-special-attrs.stderr
index 8f2ce20593f..a6220710cf9 100644
--- a/tests/ui/malformed/malformed-special-attrs.stderr
+++ b/tests/ui/malformed/malformed-special-attrs.stderr
@@ -7,8 +7,9 @@ LL | #[cfg_attr]
    = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>
 help: missing condition and attribute
    |
-LL | #[cfg_attr(condition, attribute, other_attribute, ...)]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - #[cfg_attr]
+LL + #[cfg_attr(condition, attribute, other_attribute, ...)]
+   |
 
 error: malformed `cfg_attr` attribute input
   --> $DIR/malformed-special-attrs.rs:4:1
@@ -19,8 +20,9 @@ LL | #[cfg_attr = ""]
    = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>
 help: missing condition and attribute
    |
-LL | #[cfg_attr(condition, attribute, other_attribute, ...)]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - #[cfg_attr = ""]
+LL + #[cfg_attr(condition, attribute, other_attribute, ...)]
+   |
 
 error: malformed `derive` attribute input
   --> $DIR/malformed-special-attrs.rs:7:1
diff --git a/tests/ui/match/issue-56685.stderr b/tests/ui/match/issue-56685.stderr
index ccf357d4aa0..9655a380811 100644
--- a/tests/ui/match/issue-56685.stderr
+++ b/tests/ui/match/issue-56685.stderr
@@ -11,8 +11,9 @@ LL | #![deny(unused_variables)]
    |         ^^^^^^^^^^^^^^^^
 help: if this is intentional, prefix it with an underscore
    |
-LL |         E::A(_x) | E::B(_x) => {}
-   |              ~~         ~~
+LL -         E::A(x) | E::B(x) => {}
+LL +         E::A(_x) | E::B(_x) => {}
+   |
 
 error: unused variable: `x`
   --> $DIR/issue-56685.rs:25:14
@@ -22,8 +23,9 @@ LL |         F::A(x, y) | F::B(x, y) => { y },
    |
 help: if this is intentional, prefix it with an underscore
    |
-LL |         F::A(_x, y) | F::B(_x, y) => { y },
-   |              ~~            ~~
+LL -         F::A(x, y) | F::B(x, y) => { y },
+LL +         F::A(_x, y) | F::B(_x, y) => { y },
+   |
 
 error: unused variable: `a`
   --> $DIR/issue-56685.rs:27:14
@@ -45,8 +47,9 @@ LL |     let _ = if let F::A(x, y) | F::B(x, y) = F::A(1, 2) {
    |
 help: if this is intentional, prefix it with an underscore
    |
-LL |     let _ = if let F::A(_x, y) | F::B(_x, y) = F::A(1, 2) {
-   |                         ~~            ~~
+LL -     let _ = if let F::A(x, y) | F::B(x, y) = F::A(1, 2) {
+LL +     let _ = if let F::A(_x, y) | F::B(_x, y) = F::A(1, 2) {
+   |
 
 error: unused variable: `x`
   --> $DIR/issue-56685.rs:39:20
@@ -56,8 +59,9 @@ LL |     while let F::A(x, y) | F::B(x, y) = F::A(1, 2) {
    |
 help: if this is intentional, prefix it with an underscore
    |
-LL |     while let F::A(_x, y) | F::B(_x, y) = F::A(1, 2) {
-   |                    ~~            ~~
+LL -     while let F::A(x, y) | F::B(x, y) = F::A(1, 2) {
+LL +     while let F::A(_x, y) | F::B(_x, y) = F::A(1, 2) {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/match/match-pattern-field-mismatch.stderr b/tests/ui/match/match-pattern-field-mismatch.stderr
index cde7ac972ca..ea5f6f0f22b 100644
--- a/tests/ui/match/match-pattern-field-mismatch.stderr
+++ b/tests/ui/match/match-pattern-field-mismatch.stderr
@@ -13,8 +13,9 @@ LL |           Color::Rgb(_, _, _) => { }
    |                          +++
 help: use `..` to ignore all fields
    |
-LL |           Color::Rgb(..) => { }
-   |                      ~~
+LL -           Color::Rgb(_, _) => { }
+LL +           Color::Rgb(..) => { }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/meta/expected-error-correct-rev.a.stderr b/tests/ui/meta/expected-error-correct-rev.a.stderr
index d5b7603d346..ae8dd86d360 100644
--- a/tests/ui/meta/expected-error-correct-rev.a.stderr
+++ b/tests/ui/meta/expected-error-correct-rev.a.stderr
@@ -8,8 +8,9 @@ LL |     let x: u32 = 22_usize;
    |
 help: change the type of the numeric literal from `usize` to `u32`
    |
-LL |     let x: u32 = 22_u32;
-   |                     ~~~
+LL -     let x: u32 = 22_usize;
+LL +     let x: u32 = 22_u32;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/meta/meta-expected-error-wrong-rev.a.stderr b/tests/ui/meta/meta-expected-error-wrong-rev.a.stderr
index a489040f32d..48fea28024f 100644
--- a/tests/ui/meta/meta-expected-error-wrong-rev.a.stderr
+++ b/tests/ui/meta/meta-expected-error-wrong-rev.a.stderr
@@ -8,8 +8,9 @@ LL |     let x: u32 = 22_usize;
    |
 help: change the type of the numeric literal from `usize` to `u32`
    |
-LL |     let x: u32 = 22_u32;
-   |                     ~~~
+LL -     let x: u32 = 22_usize;
+LL +     let x: u32 = 22_u32;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/disambiguate-associated-function-first-arg.stderr b/tests/ui/methods/disambiguate-associated-function-first-arg.stderr
index 341b7a91003..381e29667c8 100644
--- a/tests/ui/methods/disambiguate-associated-function-first-arg.stderr
+++ b/tests/ui/methods/disambiguate-associated-function-first-arg.stderr
@@ -25,16 +25,19 @@ LL |     fn new(_a: Self, _b: i32);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: disambiguate the associated function for candidate #1
    |
-LL |     <A as M>::new(1);
-   |     ~~~~~~~~~~~~~~~~
+LL -     _a.new(1);
+LL +     <A as M>::new(1);
+   |
 help: disambiguate the associated function for candidate #2
    |
-LL |     <A as N>::new(_a, 1);
-   |     ~~~~~~~~~~~~~~~~~~~~
+LL -     _a.new(1);
+LL +     <A as N>::new(_a, 1);
+   |
 help: disambiguate the associated function for candidate #3
    |
-LL |     <A as O>::new(_a, 1);
-   |     ~~~~~~~~~~~~~~~~~~~~
+LL -     _a.new(1);
+LL +     <A as O>::new(_a, 1);
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-associated-function-first-arg.rs:47:7
@@ -54,12 +57,14 @@ LL |     fn f(self) {}
    |     ^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     TraitA::f(S);
-   |     ~~~~~~~~~~~~
+LL -     S.f();
+LL +     TraitA::f(S);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     TraitB::f(S);
-   |     ~~~~~~~~~~~~
+LL -     S.f();
+LL +     TraitB::f(S);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr b/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr
index ccdd9a95451..1b81dc5aafb 100644
--- a/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr
+++ b/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr
@@ -6,10 +6,12 @@ LL |     let _: S::Type;
    |
 help: use fully-qualified syntax
    |
-LL |     let _: <S as A>::Type;
-   |            ~~~~~~~~~~~~~~
-LL |     let _: <S as B>::Type;
-   |            ~~~~~~~~~~~~~~
+LL -     let _: S::Type;
+LL +     let _: <S as A>::Type;
+   |
+LL -     let _: S::Type;
+LL +     let _: <S as B>::Type;
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-blanket-impl.rs:30:8
@@ -29,10 +31,12 @@ LL |     fn foo(&self) {}
    |     ^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     A::foo(&s);
-   |     ~~~
-LL |     B::foo(&s);
-   |     ~~~
+LL -     S::foo(&s);
+LL +     A::foo(&s);
+   |
+LL -     S::foo(&s);
+LL +     B::foo(&s);
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-blanket-impl.rs:33:8
@@ -52,10 +56,12 @@ LL |     const CONST: usize = 2;
    |     ^^^^^^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <S as A>::CONST;
-   |     ~~~~~~~~~~
-LL |     <S as B>::CONST;
-   |     ~~~~~~~~~~
+LL -     S::CONST;
+LL +     <S as A>::CONST;
+   |
+LL -     S::CONST;
+LL +     <S as B>::CONST;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/methods/disambiguate-multiple-impl.stderr b/tests/ui/methods/disambiguate-multiple-impl.stderr
index 4172120770c..2563c2327b7 100644
--- a/tests/ui/methods/disambiguate-multiple-impl.stderr
+++ b/tests/ui/methods/disambiguate-multiple-impl.stderr
@@ -6,10 +6,12 @@ LL |     let _: S::Type = ();
    |
 help: use fully-qualified syntax
    |
-LL |     let _: <S as A>::Type = ();
-   |            ~~~~~~~~~~~~~~
-LL |     let _: <S as B>::Type = ();
-   |            ~~~~~~~~~~~~~~
+LL -     let _: S::Type = ();
+LL +     let _: <S as A>::Type = ();
+   |
+LL -     let _: S::Type = ();
+LL +     let _: <S as B>::Type = ();
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-impl.rs:29:8
@@ -29,10 +31,12 @@ LL |     fn foo(&self) {}
    |     ^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     A::foo(&s);
-   |     ~~~
-LL |     B::foo(&s);
-   |     ~~~
+LL -     S::foo(&s);
+LL +     A::foo(&s);
+   |
+LL -     S::foo(&s);
+LL +     B::foo(&s);
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-impl.rs:34:16
@@ -52,10 +56,12 @@ LL |     const CONST: usize = 2;
    |     ^^^^^^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     let _ = <S as A>::CONST;
-   |             ~~~~~~~~~~
-LL |     let _ = <S as B>::CONST;
-   |             ~~~~~~~~~~
+LL -     let _ = S::CONST;
+LL +     let _ = <S as A>::CONST;
+   |
+LL -     let _ = S::CONST;
+LL +     let _ = <S as B>::CONST;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/methods/disambiguate-multiple-trait-2.stderr b/tests/ui/methods/disambiguate-multiple-trait-2.stderr
index 2778f254a56..08e264c20c8 100644
--- a/tests/ui/methods/disambiguate-multiple-trait-2.stderr
+++ b/tests/ui/methods/disambiguate-multiple-trait-2.stderr
@@ -12,12 +12,14 @@ LL |     let _: T::Type;
    |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     let _: <T as A>::Type;
-   |            ~~~~~~~~~~
+LL -     let _: T::Type;
+LL +     let _: <T as A>::Type;
+   |
 help: use fully-qualified syntax to disambiguate
    |
-LL |     let _: <T as B>::Type;
-   |            ~~~~~~~~~~
+LL -     let _: T::Type;
+LL +     let _: <T as B>::Type;
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-trait-2.rs:16:7
@@ -37,12 +39,14 @@ LL |     fn foo(&self);
    |     ^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     A::foo(&t);
-   |     ~~~~~~~~~~
+LL -     t.foo();
+LL +     A::foo(&t);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     B::foo(&t);
-   |     ~~~~~~~~~~
+LL -     t.foo();
+LL +     B::foo(&t);
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-trait-2.rs:20:16
@@ -62,10 +66,12 @@ LL |     const CONST: usize;
    |     ^^^^^^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     let _ = <T as A>::CONST;
-   |             ~~~~~~~~~~
-LL |     let _ = <T as B>::CONST;
-   |             ~~~~~~~~~~
+LL -     let _ = T::CONST;
+LL +     let _ = <T as A>::CONST;
+   |
+LL -     let _ = T::CONST;
+LL +     let _ = <T as B>::CONST;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/disambiguate-multiple-trait-2.rs:52:12
@@ -75,10 +81,12 @@ LL |     let _: S::Type;
    |
 help: use fully-qualified syntax
    |
-LL |     let _: <S as A>::Type;
-   |            ~~~~~~~~~~~~~~
-LL |     let _: <S as B>::Type;
-   |            ~~~~~~~~~~~~~~
+LL -     let _: S::Type;
+LL +     let _: <S as A>::Type;
+   |
+LL -     let _: S::Type;
+LL +     let _: <S as B>::Type;
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-trait-2.rs:46:8
@@ -98,10 +106,12 @@ LL |     fn foo(&self) {}
    |     ^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     A::foo(&s);
-   |     ~~~
-LL |     B::foo(&s);
-   |     ~~~
+LL -     S::foo(&s);
+LL +     A::foo(&s);
+   |
+LL -     S::foo(&s);
+LL +     B::foo(&s);
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-trait-2.rs:49:16
@@ -121,10 +131,12 @@ LL |     const CONST: usize = 1;
    |     ^^^^^^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     let _ = <S as A>::CONST;
-   |             ~~~~~~~~~~
-LL |     let _ = <S as B>::CONST;
-   |             ~~~~~~~~~~
+LL -     let _ = S::CONST;
+LL +     let _ = <S as A>::CONST;
+   |
+LL -     let _ = S::CONST;
+LL +     let _ = <S as B>::CONST;
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/methods/disambiguate-multiple-trait.stderr b/tests/ui/methods/disambiguate-multiple-trait.stderr
index e00498ca62b..a977fe2cd03 100644
--- a/tests/ui/methods/disambiguate-multiple-trait.stderr
+++ b/tests/ui/methods/disambiguate-multiple-trait.stderr
@@ -6,10 +6,12 @@ LL |     let _: S::Type;
    |
 help: use fully-qualified syntax
    |
-LL |     let _: <S as A>::Type;
-   |            ~~~~~~~~~~~~~~
-LL |     let _: <S as B>::Type;
-   |            ~~~~~~~~~~~~~~
+LL -     let _: S::Type;
+LL +     let _: <S as A>::Type;
+   |
+LL -     let _: S::Type;
+LL +     let _: <S as B>::Type;
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-trait.rs:24:8
@@ -29,10 +31,12 @@ LL |     fn foo(&self) {}
    |     ^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     A::foo(&s);
-   |     ~~~
-LL |     B::foo(&s);
-   |     ~~~
+LL -     S::foo(&s);
+LL +     A::foo(&s);
+   |
+LL -     S::foo(&s);
+LL +     B::foo(&s);
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/disambiguate-multiple-trait.rs:27:16
@@ -52,10 +56,12 @@ LL |     const CONST: usize = 2;
    |     ^^^^^^^^^^^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     let _ = <S as A>::CONST;
-   |             ~~~~~~~~~~
-LL |     let _ = <S as B>::CONST;
-   |             ~~~~~~~~~~
+LL -     let _ = S::CONST;
+LL +     let _ = <S as A>::CONST;
+   |
+LL -     let _ = S::CONST;
+LL +     let _ = <S as B>::CONST;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/methods/issues/issue-105732.stderr b/tests/ui/methods/issues/issue-105732.stderr
index a4924b3e663..6244f983550 100644
--- a/tests/ui/methods/issues/issue-105732.stderr
+++ b/tests/ui/methods/issues/issue-105732.stderr
@@ -14,8 +14,9 @@ LL |         self.g();
    |
 help: there is a method `f` with a similar name
    |
-LL |         self.f();
-   |              ~
+LL -         self.g();
+LL +         self.f();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/methods/issues/issue-90315.stderr b/tests/ui/methods/issues/issue-90315.stderr
index 0466bb0a0c9..e194a918834 100644
--- a/tests/ui/methods/issues/issue-90315.stderr
+++ b/tests/ui/methods/issues/issue-90315.stderr
@@ -181,8 +181,9 @@ LL |     let _res: i32 = ..6.take(2).sum();
    |
 help: you must specify a concrete type for this numeric value, like `i32`
    |
-LL |     let _res: i32 = ..6_i32.take(2).sum();
-   |                       ~~~~~
+LL -     let _res: i32 = ..6.take(2).sum();
+LL +     let _res: i32 = ..6_i32.take(2).sum();
+   |
 
 error: aborting due to 18 previous errors
 
diff --git a/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr b/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr
index b2d2d039ff6..a5f1b76702f 100644
--- a/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr
+++ b/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr
@@ -25,8 +25,9 @@ LL | impl Foo for Vec<isize> {
    | ^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Vec<T> as Foo>::foo(&x);
-   |     ++++++++++++++++++++++ ~
+LL -     x.foo();
+LL +     <Vec<T> as Foo>::foo(&x);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/method-ambig-one-trait-unknown-int-type.rs:33:20
diff --git a/tests/ui/methods/method-ambig-two-traits-cross-crate.stderr b/tests/ui/methods/method-ambig-two-traits-cross-crate.stderr
index 0fc0c909ea8..707c33c3d94 100644
--- a/tests/ui/methods/method-ambig-two-traits-cross-crate.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-cross-crate.stderr
@@ -12,12 +12,14 @@ LL | impl Me2 for usize { fn me(&self) -> usize { *self } }
    = note: candidate #2 is defined in an impl of the trait `Me` for the type `usize`
 help: disambiguate the method for candidate #1
    |
-LL | fn main() { Me2::me(&1_usize); }
-   |             ~~~~~~~~~~~~~~~~~
+LL - fn main() { 1_usize.me(); }
+LL + fn main() { Me2::me(&1_usize); }
+   |
 help: disambiguate the method for candidate #2
    |
-LL | fn main() { Me::me(&1_usize); }
-   |             ~~~~~~~~~~~~~~~~
+LL - fn main() { 1_usize.me(); }
+LL + fn main() { Me::me(&1_usize); }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr b/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr
index 690f979fa37..f3aa1582398 100644
--- a/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr
@@ -16,12 +16,14 @@ LL | trait B { fn foo(&self); }
    |           ^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     A::foo(&t);
-   |     ~~~~~~~~~~
+LL -     t.foo();
+LL +     A::foo(&t);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     B::foo(&t);
-   |     ~~~~~~~~~~
+LL -     t.foo();
+LL +     B::foo(&t);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-ambig-two-traits-from-impls.stderr b/tests/ui/methods/method-ambig-two-traits-from-impls.stderr
index 8be6d6d64f7..d1c50e8b3d0 100644
--- a/tests/ui/methods/method-ambig-two-traits-from-impls.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-from-impls.stderr
@@ -16,12 +16,14 @@ LL |     fn foo(self) {}
    |     ^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     A::foo(AB {});
-   |     ~~~~~~~~~~~~~
+LL -     AB {}.foo();
+LL +     A::foo(AB {});
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     B::foo(AB {});
-   |     ~~~~~~~~~~~~~
+LL -     AB {}.foo();
+LL +     B::foo(AB {});
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr b/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr
index 333520847f8..788f1a4c4b3 100644
--- a/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr
@@ -16,10 +16,12 @@ LL |     fn foo() {}
    |     ^^^^^^^^
 help: use fully-qualified syntax to disambiguate
    |
-LL |     <AB as A>::foo();
-   |     ~~~~~~~~~~~
-LL |     <AB as B>::foo();
-   |     ~~~~~~~~~~~
+LL -     AB::foo();
+LL +     <AB as A>::foo();
+   |
+LL -     AB::foo();
+LL +     <AB as B>::foo();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-ambig-two-traits-with-default-method.stderr b/tests/ui/methods/method-ambig-two-traits-with-default-method.stderr
index b36ef77fb7e..605c2a85b07 100644
--- a/tests/ui/methods/method-ambig-two-traits-with-default-method.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-with-default-method.stderr
@@ -16,12 +16,14 @@ LL | trait Foo { fn method(&self) {} }
    |             ^^^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     Bar::method(&1_usize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1_usize.method();
+LL +     Bar::method(&1_usize);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     Foo::method(&1_usize);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1_usize.method();
+LL +     Foo::method(&1_usize);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-ambiguity-no-rcvr.stderr b/tests/ui/methods/method-ambiguity-no-rcvr.stderr
index 3b6eb07393a..c1a77a99739 100644
--- a/tests/ui/methods/method-ambiguity-no-rcvr.stderr
+++ b/tests/ui/methods/method-ambiguity-no-rcvr.stderr
@@ -20,12 +20,14 @@ LL |     fn foo() {}
    |     ^^^^^^^^
 help: disambiguate the associated function for candidate #1
    |
-LL |     <Qux as Foo>::foo();
-   |     ~~~~~~~~~~~~~~~~~~~
+LL -     Qux.foo();
+LL +     <Qux as Foo>::foo();
+   |
 help: disambiguate the associated function for candidate #2
    |
-LL |     <Qux as FooBar>::foo();
-   |     ~~~~~~~~~~~~~~~~~~~~~~
+LL -     Qux.foo();
+LL +     <Qux as FooBar>::foo();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-call-err-msg.stderr b/tests/ui/methods/method-call-err-msg.stderr
index c17c4a23a3a..7cda928aca9 100644
--- a/tests/ui/methods/method-call-err-msg.stderr
+++ b/tests/ui/methods/method-call-err-msg.stderr
@@ -28,8 +28,9 @@ LL |     fn one(self, _: isize) -> Foo { self }
    |        ^^^       --------
 help: provide the argument
    |
-LL |      .one(/* isize */)
-   |          ~~~~~~~~~~~~~
+LL -      .one()
+LL +      .one(/* isize */)
+   |
 
 error[E0061]: this method takes 2 arguments but 1 argument was supplied
   --> $DIR/method-call-err-msg.rs:15:7
@@ -44,8 +45,9 @@ LL |     fn two(self, _: isize, _: isize) -> Foo { self }
    |        ^^^                 --------
 help: provide the argument
    |
-LL |      .two(0, /* isize */);
-   |          ~~~~~~~~~~~~~~~~
+LL -      .two(0);
+LL +      .two(0, /* isize */);
+   |
 
 error[E0599]: `Foo` is not an iterator
   --> $DIR/method-call-err-msg.rs:19:7
@@ -82,8 +84,9 @@ LL |     fn three<T>(self, _: T, _: T, _: T) -> Foo { self }
    |        ^^^^^          ----  ----  ----
 help: provide the arguments
    |
-LL |     y.three::<usize>(/* usize */, /* usize */, /* usize */);
-   |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     y.three::<usize>();
+LL +     y.three::<usize>(/* usize */, /* usize */, /* usize */);
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr b/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr
index 6159d87c73e..d6da3f2cc39 100644
--- a/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr
+++ b/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr
@@ -46,16 +46,19 @@ LL |         fn foo(self: Smaht<Self, u64>) -> u64 {
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     let z = FinalFoo::foo(&x);
-   |             ~~~~~~~~~~~~~~~~~
+LL -     let z = x.foo();
+LL +     let z = FinalFoo::foo(&x);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     let z = NuisanceFoo::foo(x);
-   |             ~~~~~~~~~~~~~~~~~~~
+LL -     let z = x.foo();
+LL +     let z = NuisanceFoo::foo(x);
+   |
 help: disambiguate the method for candidate #3
    |
-LL |     let z = X::foo(x);
-   |             ~~~~~~~~~
+LL -     let z = x.foo();
+LL +     let z = X::foo(x);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/method-deref-to-same-trait-object-with-separate-params.rs:139:24
diff --git a/tests/ui/methods/method-not-found-but-doc-alias.stderr b/tests/ui/methods/method-not-found-but-doc-alias.stderr
index c49ffa8971f..2164b7cbbf8 100644
--- a/tests/ui/methods/method-not-found-but-doc-alias.stderr
+++ b/tests/ui/methods/method-not-found-but-doc-alias.stderr
@@ -9,8 +9,9 @@ LL |     Foo.quux();
    |
 help: there is a method `bar` with a similar name
    |
-LL |     Foo.bar();
-   |         ~~~
+LL -     Foo.quux();
+LL +     Foo.bar();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/methods/method-on-ambiguous-numeric-type.stderr b/tests/ui/methods/method-on-ambiguous-numeric-type.stderr
index 12427040272..d688bcc90c8 100644
--- a/tests/ui/methods/method-on-ambiguous-numeric-type.stderr
+++ b/tests/ui/methods/method-on-ambiguous-numeric-type.stderr
@@ -6,8 +6,9 @@ LL |     let x = 2.0.neg();
    |
 help: you must specify a concrete type for this numeric value, like `f32`
    |
-LL |     let x = 2.0_f32.neg();
-   |             ~~~~~~~
+LL -     let x = 2.0.neg();
+LL +     let x = 2.0_f32.neg();
+   |
 
 error[E0689]: can't call method `neg` on ambiguous numeric type `{float}`
   --> $DIR/method-on-ambiguous-numeric-type.rs:17:15
diff --git a/tests/ui/methods/suggest-convert-ptr-to-ref.stderr b/tests/ui/methods/suggest-convert-ptr-to-ref.stderr
index 0e1565e251a..7d52b20121e 100644
--- a/tests/ui/methods/suggest-convert-ptr-to-ref.stderr
+++ b/tests/ui/methods/suggest-convert-ptr-to-ref.stderr
@@ -47,8 +47,9 @@ LL |     let _ = t.as_mut_ref();
    |
 help: there is a method `as_mut` with a similar name
    |
-LL |     let _ = t.as_mut();
-   |               ~~~~~~
+LL -     let _ = t.as_mut_ref();
+LL +     let _ = t.as_mut();
+   |
 
 error[E0599]: no method named `as_ref_mut` found for raw pointer `*mut u8` in the current scope
   --> $DIR/suggest-convert-ptr-to-ref.rs:13:15
@@ -58,8 +59,9 @@ LL |     let _ = t.as_ref_mut();
    |
 help: there is a method `as_mut` with a similar name
    |
-LL |     let _ = t.as_mut();
-   |               ~~~~~~
+LL -     let _ = t.as_ref_mut();
+LL +     let _ = t.as_mut();
+   |
 
 error[E0599]: no method named `make_ascii_lowercase` found for raw pointer `*const u8` in the current scope
   --> $DIR/suggest-convert-ptr-to-ref.rs:16:7
diff --git a/tests/ui/mir/issue-106062.stderr b/tests/ui/mir/issue-106062.stderr
index 30635148dae..19a1d06e0be 100644
--- a/tests/ui/mir/issue-106062.stderr
+++ b/tests/ui/mir/issue-106062.stderr
@@ -6,10 +6,12 @@ LL |     async fn connection_handler(handler: impl Sized) -> Result<Ok, std::io:
    |
 help: try using the variant's enum
    |
-LL |     async fn connection_handler(handler: impl Sized) -> Result<core::result::Result, std::io::Error> {
-   |                                                                ~~~~~~~~~~~~~~~~~~~~
-LL |     async fn connection_handler(handler: impl Sized) -> Result<std::result::Result, std::io::Error> {
-   |                                                                ~~~~~~~~~~~~~~~~~~~
+LL -     async fn connection_handler(handler: impl Sized) -> Result<Ok, std::io::Error> {
+LL +     async fn connection_handler(handler: impl Sized) -> Result<core::result::Result, std::io::Error> {
+   |
+LL -     async fn connection_handler(handler: impl Sized) -> Result<Ok, std::io::Error> {
+LL +     async fn connection_handler(handler: impl Sized) -> Result<std::result::Result, std::io::Error> {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mir/issue-112269.stderr b/tests/ui/mir/issue-112269.stderr
index 80f329e2ce0..29b69cb7e20 100644
--- a/tests/ui/mir/issue-112269.stderr
+++ b/tests/ui/mir/issue-112269.stderr
@@ -11,8 +11,9 @@ LL |     let x: i32 = 3;
    = note: the matched value is of type `i32`
 help: introduce a variable instead
    |
-LL |     let x_var: i32 = 3;
-   |         ~~~~~
+LL -     let x: i32 = 3;
+LL +     let x_var: i32 = 3;
+   |
 
 error[E0005]: refutable pattern in local binding
   --> $DIR/issue-112269.rs:7:9
@@ -27,8 +28,9 @@ LL |     let y = 4;
    = note: the matched value is of type `i32`
 help: introduce a variable instead
    |
-LL |     let y_var = 4;
-   |         ~~~~~
+LL -     let y = 4;
+LL +     let y_var = 4;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/mismatched_types/E0053.stderr b/tests/ui/mismatched_types/E0053.stderr
index 2559d448749..32452af5ced 100644
--- a/tests/ui/mismatched_types/E0053.stderr
+++ b/tests/ui/mismatched_types/E0053.stderr
@@ -13,8 +13,9 @@ LL |     fn foo(x: u16);
               found signature `fn(i16)`
 help: change the parameter type to match the trait
    |
-LL |     fn foo(x: u16) { }
-   |               ~~~
+LL -     fn foo(x: i16) { }
+LL +     fn foo(x: u16) { }
+   |
 
 error[E0053]: method `bar` has an incompatible type for trait
   --> $DIR/E0053.rs:11:12
@@ -31,8 +32,9 @@ LL |     fn bar(&self);
               found signature `fn(&mut Bar)`
 help: change the self-receiver type to match the trait
    |
-LL |     fn bar(&self) { }
-   |            ~~~~~
+LL -     fn bar(&mut self) { }
+LL +     fn bar(&self) { }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/mismatched_types/cast-rfc0401.stderr b/tests/ui/mismatched_types/cast-rfc0401.stderr
index 2e5cbb90036..a4276395944 100644
--- a/tests/ui/mismatched_types/cast-rfc0401.stderr
+++ b/tests/ui/mismatched_types/cast-rfc0401.stderr
@@ -90,8 +90,9 @@ LL |     let _ = 3_i32 as bool;
    |
 help: compare with zero instead
    |
-LL |     let _ = 3_i32 != 0;
-   |                   ~~~~
+LL -     let _ = 3_i32 as bool;
+LL +     let _ = 3_i32 != 0;
+   |
 
 error[E0054]: cannot cast `E` as `bool`
   --> $DIR/cast-rfc0401.rs:40:13
diff --git a/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr b/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr
index 801e8a0ff1d..b29abfe59c5 100644
--- a/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr
+++ b/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr
@@ -8,8 +8,9 @@ LL |     let _n = m.iter().map(|_, b| {
    |
 help: change the closure to accept a tuple instead of individual arguments
    |
-LL |     let _n = m.iter().map(|(_, b)| {
-   |                           ~~~~~~~~
+LL -     let _n = m.iter().map(|_, b| {
+LL +     let _n = m.iter().map(|(_, b)| {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/closure-arg-count.stderr b/tests/ui/mismatched_types/closure-arg-count.stderr
index 0e2ca8feec5..8704d0f661b 100644
--- a/tests/ui/mismatched_types/closure-arg-count.stderr
+++ b/tests/ui/mismatched_types/closure-arg-count.stderr
@@ -8,8 +8,9 @@ LL |     [1, 2, 3].sort_by(|| panic!());
    |
 help: consider changing the closure to take and ignore the expected arguments
    |
-LL |     [1, 2, 3].sort_by(|_, _| panic!());
-   |                       ~~~~~~
+LL -     [1, 2, 3].sort_by(|| panic!());
+LL +     [1, 2, 3].sort_by(|_, _| panic!());
+   |
 
 error[E0593]: closure is expected to take 2 arguments, but it takes 1 argument
   --> $DIR/closure-arg-count.rs:7:15
@@ -29,8 +30,9 @@ LL |     [1, 2, 3].sort_by(|(tuple, tuple2)| panic!());
    |
 help: change the closure to take multiple arguments instead of a single tuple
    |
-LL |     [1, 2, 3].sort_by(|tuple, tuple2| panic!());
-   |                       ~~~~~~~~~~~~~~~
+LL -     [1, 2, 3].sort_by(|(tuple, tuple2)| panic!());
+LL +     [1, 2, 3].sort_by(|tuple, tuple2| panic!());
+   |
 
 error[E0593]: closure is expected to take 2 distinct arguments, but it takes a single 2-tuple as argument
   --> $DIR/closure-arg-count.rs:11:15
@@ -42,8 +44,9 @@ LL |     [1, 2, 3].sort_by(|(tuple, tuple2): (usize, _)| panic!());
    |
 help: change the closure to take multiple arguments instead of a single tuple
    |
-LL |     [1, 2, 3].sort_by(|tuple, tuple2| panic!());
-   |                       ~~~~~~~~~~~~~~~
+LL -     [1, 2, 3].sort_by(|(tuple, tuple2): (usize, _)| panic!());
+LL +     [1, 2, 3].sort_by(|tuple, tuple2| panic!());
+   |
 
 error[E0593]: closure is expected to take 1 argument, but it takes 0 arguments
   --> $DIR/closure-arg-count.rs:13:5
@@ -61,8 +64,9 @@ LL | fn f<F: Fn<(usize,)>>(_: F) {}
    |         ^^^^^^^^^^^^ required by this bound in `f`
 help: consider changing the closure to take and ignore the expected argument
    |
-LL |     f(|_| panic!());
-   |       ~~~
+LL -     f(|| panic!());
+LL +     f(|_| panic!());
+   |
 
 error[E0593]: closure is expected to take 1 argument, but it takes 0 arguments
   --> $DIR/closure-arg-count.rs:15:5
@@ -80,8 +84,9 @@ LL | fn f<F: Fn<(usize,)>>(_: F) {}
    |         ^^^^^^^^^^^^ required by this bound in `f`
 help: consider changing the closure to take and ignore the expected argument
    |
-LL |     f(  move    |_| panic!());
-   |                 ~~~
+LL -     f(  move    || panic!());
+LL +     f(  move    |_| panic!());
+   |
 
 error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 2 distinct arguments
   --> $DIR/closure-arg-count.rs:18:53
@@ -93,8 +98,9 @@ LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x| i);
    |
 help: change the closure to accept a tuple instead of individual arguments
    |
-LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i);
-   |                                                         ~~~~~~~~
+LL -     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x| i);
+LL +     let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i);
+   |
 
 error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 2 distinct arguments
   --> $DIR/closure-arg-count.rs:20:53
@@ -106,8 +112,9 @@ LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i: usize, x| i);
    |
 help: change the closure to accept a tuple instead of individual arguments
    |
-LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i);
-   |                                                         ~~~~~~~~
+LL -     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i: usize, x| i);
+LL +     let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i);
+   |
 
 error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 3 distinct arguments
   --> $DIR/closure-arg-count.rs:22:53
diff --git a/tests/ui/mismatched_types/float-literal-inference-restrictions.stderr b/tests/ui/mismatched_types/float-literal-inference-restrictions.stderr
index 6b3e0cb505f..b345d5e049e 100644
--- a/tests/ui/mismatched_types/float-literal-inference-restrictions.stderr
+++ b/tests/ui/mismatched_types/float-literal-inference-restrictions.stderr
@@ -21,8 +21,9 @@ LL |     let y: f32 = 1f64;
    |
 help: change the type of the numeric literal from `f64` to `f32`
    |
-LL |     let y: f32 = 1f32;
-   |                   ~~~
+LL -     let y: f32 = 1f64;
+LL +     let y: f32 = 1f32;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/mismatched_types/issue-106182.stderr b/tests/ui/mismatched_types/issue-106182.stderr
index 2f33628a491..647a7313344 100644
--- a/tests/ui/mismatched_types/issue-106182.stderr
+++ b/tests/ui/mismatched_types/issue-106182.stderr
@@ -10,8 +10,9 @@ LL |         _S(& (mut _y), _v) => {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |         _S(mut _y, _v) => {
-   |            ~~~~~~
+LL -         _S(& (mut _y), _v) => {
+LL +         _S(mut _y, _v) => {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/issue-112036.stderr b/tests/ui/mismatched_types/issue-112036.stderr
index bd446b3d78c..29559980cb4 100644
--- a/tests/ui/mismatched_types/issue-112036.stderr
+++ b/tests/ui/mismatched_types/issue-112036.stderr
@@ -8,8 +8,9 @@ LL |     fn drop(self) {}
               found signature `fn(Foo)`
 help: change the self-receiver type to match the trait
    |
-LL |     fn drop(&mut self) {}
-   |             ~~~~~~~~~
+LL -     fn drop(self) {}
+LL +     fn drop(&mut self) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/issue-13033.stderr b/tests/ui/mismatched_types/issue-13033.stderr
index 2a266d40e77..7756217b560 100644
--- a/tests/ui/mismatched_types/issue-13033.stderr
+++ b/tests/ui/mismatched_types/issue-13033.stderr
@@ -13,8 +13,9 @@ LL |     fn bar(&mut self, other: &mut dyn Foo);
               found signature `fn(&mut Baz, &dyn Foo)`
 help: change the parameter type to match the trait
    |
-LL |     fn bar(&mut self, other: &mut dyn Foo) {}
-   |                              ~~~~~~~~~~~~
+LL -     fn bar(&mut self, other: &dyn Foo) {}
+LL +     fn bar(&mut self, other: &mut dyn Foo) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/issue-1362.stderr b/tests/ui/mismatched_types/issue-1362.stderr
index 6f6fdff6678..4a2d4c1b459 100644
--- a/tests/ui/mismatched_types/issue-1362.stderr
+++ b/tests/ui/mismatched_types/issue-1362.stderr
@@ -8,8 +8,9 @@ LL |   let x: u32 = 20i32;
    |
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |   let x: u32 = 20u32;
-   |                  ~~~
+LL -   let x: u32 = 20i32;
+LL +   let x: u32 = 20u32;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/issue-1448-2.stderr b/tests/ui/mismatched_types/issue-1448-2.stderr
index a6f1daefe63..85730a18d9d 100644
--- a/tests/ui/mismatched_types/issue-1448-2.stderr
+++ b/tests/ui/mismatched_types/issue-1448-2.stderr
@@ -13,8 +13,9 @@ LL | fn foo(a: u32) -> u32 { a }
    |    ^^^ ------
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |     println!("{}", foo(10u32));
-   |                          ~~~
+LL -     println!("{}", foo(10i32));
+LL +     println!("{}", foo(10u32));
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/mismatch-args-crash-issue-128848.stderr b/tests/ui/mismatched_types/mismatch-args-crash-issue-128848.stderr
index 899cf435ddf..dbd313fada9 100644
--- a/tests/ui/mismatched_types/mismatch-args-crash-issue-128848.stderr
+++ b/tests/ui/mismatched_types/mismatch-args-crash-issue-128848.stderr
@@ -8,8 +8,9 @@ note: method defined here
   --> $SRC_DIR/core/src/ops/function.rs:LL:COL
 help: provide the argument
    |
-LL |     f.call_once(/* args */)
-   |                ~~~~~~~~~~~~
+LL -     f.call_once()
+LL +     f.call_once(/* args */)
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/mismatch-args-crash-issue-130400.stderr b/tests/ui/mismatched_types/mismatch-args-crash-issue-130400.stderr
index 0e4b94b98e2..d9d99f3d1cf 100644
--- a/tests/ui/mismatched_types/mismatch-args-crash-issue-130400.stderr
+++ b/tests/ui/mismatched_types/mismatch-args-crash-issue-130400.stderr
@@ -11,8 +11,9 @@ LL |     fn foo(&mut self) -> _ {
    |        ^^^ ---------
 help: provide the argument
    |
-LL |         Self::foo(/* value */)
-   |                  ~~~~~~~~~~~~~
+LL -         Self::foo()
+LL +         Self::foo(/* value */)
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
   --> $DIR/mismatch-args-crash-issue-130400.rs:2:26
diff --git a/tests/ui/mismatched_types/mismatch-args-vargs-issue-130372.stderr b/tests/ui/mismatched_types/mismatch-args-vargs-issue-130372.stderr
index 38f76970358..7acc361fdb8 100644
--- a/tests/ui/mismatched_types/mismatch-args-vargs-issue-130372.stderr
+++ b/tests/ui/mismatched_types/mismatch-args-vargs-issue-130372.stderr
@@ -11,8 +11,9 @@ LL | unsafe extern "C" fn test_va_copy(_: u64, mut ap: ...) {}
    |                      ^^^^^^^^^^^^ ------
 help: provide the argument
    |
-LL |         test_va_copy(/* u64 */);
-   |                     ~~~~~~~~~~~
+LL -         test_va_copy();
+LL +         test_va_copy(/* u64 */);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/mismatched_types/numeric-literal-cast.stderr b/tests/ui/mismatched_types/numeric-literal-cast.stderr
index fcf3eccbcba..8ddadcc5a94 100644
--- a/tests/ui/mismatched_types/numeric-literal-cast.stderr
+++ b/tests/ui/mismatched_types/numeric-literal-cast.stderr
@@ -13,8 +13,9 @@ LL | fn foo(_: u16) {}
    |    ^^^ ------
 help: change the type of the numeric literal from `u8` to `u16`
    |
-LL |     foo(1u16);
-   |          ~~~
+LL -     foo(1u8);
+LL +     foo(1u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-literal-cast.rs:8:10
@@ -31,8 +32,9 @@ LL | fn foo1(_: f64) {}
    |    ^^^^ ------
 help: change the type of the numeric literal from `f32` to `f64`
    |
-LL |     foo1(2f64);
-   |           ~~~
+LL -     foo1(2f32);
+LL +     foo1(2f64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-literal-cast.rs:10:10
@@ -49,8 +51,9 @@ LL | fn foo2(_: i32) {}
    |    ^^^^ ------
 help: change the type of the numeric literal from `i16` to `i32`
    |
-LL |     foo2(3i32);
-   |           ~~~
+LL -     foo2(3i16);
+LL +     foo2(3i32);
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/mismatched_types/overloaded-calls-bad.stderr b/tests/ui/mismatched_types/overloaded-calls-bad.stderr
index c52fa713615..9f5c35a3009 100644
--- a/tests/ui/mismatched_types/overloaded-calls-bad.stderr
+++ b/tests/ui/mismatched_types/overloaded-calls-bad.stderr
@@ -25,8 +25,9 @@ LL | impl FnMut<(isize,)> for S {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: provide the argument
    |
-LL |     let ans = s(/* isize */);
-   |                ~~~~~~~~~~~~~
+LL -     let ans = s();
+LL +     let ans = s(/* isize */);
+   |
 
 error[E0057]: this function takes 1 argument but 2 arguments were supplied
   --> $DIR/overloaded-calls-bad.rs:37:15
diff --git a/tests/ui/mismatched_types/ref-pat-suggestions.stderr b/tests/ui/mismatched_types/ref-pat-suggestions.stderr
index 148ed00b01d..d3b605fabf5 100644
--- a/tests/ui/mismatched_types/ref-pat-suggestions.stderr
+++ b/tests/ui/mismatched_types/ref-pat-suggestions.stderr
@@ -336,8 +336,9 @@ LL |         let S(&mut _b) = S(0);
    |               ^^^^^^^
 help: consider removing `&mut` from the pattern
    |
-LL |         let S(_b) = S(0);
-   |               ~~
+LL -         let S(&mut _b) = S(0);
+LL +         let S(_b) = S(0);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ref-pat-suggestions.rs:31:14
diff --git a/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr b/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr
index 40182a75a98..3f58efe19f5 100644
--- a/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr
+++ b/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr
@@ -12,8 +12,9 @@ LL | |     }
    |
 help: you could change the return type to be a boxed trait object
    |
-LL | fn foo() -> Box<dyn Trait> {
-   |             ~~~~~~~      +
+LL - fn foo() -> impl Trait {
+LL + fn foo() -> Box<dyn Trait> {
+   |
 help: if you change the return type to expect trait objects, box the returned expressions
    |
 LL ~         Box::new(S)
@@ -34,8 +35,9 @@ LL | |     }
    |
 help: you could change the return type to be a boxed trait object
    |
-LL | fn bar() -> Box<dyn Trait> {
-   |             ~~~~~~~      +
+LL - fn bar() -> impl Trait {
+LL + fn bar() -> Box<dyn Trait> {
+   |
 help: if you change the return type to expect trait objects, box the returned expressions
    |
 LL ~         true => Box::new(S),
diff --git a/tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr b/tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr
index 2e544a62223..d232cc50e52 100644
--- a/tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr
+++ b/tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr
@@ -13,8 +13,9 @@ LL |     fn foo(x: u16);
               found signature `fn(i16)`
 help: change the parameter type to match the trait
    |
-LL |     fn foo(x: u16) { }
-   |               ~~~
+LL -     fn foo(x: i16) { }
+LL +     fn foo(x: u16) { }
+   |
 
 error[E0053]: method `bar` has an incompatible type for trait
   --> $DIR/trait-impl-fn-incompatibility.rs:10:28
@@ -31,8 +32,9 @@ LL |     fn bar(&mut self, bar: &mut Bar);
               found signature `fn(&mut Bar, &Bar)`
 help: change the parameter type to match the trait
    |
-LL |     fn bar(&mut self, bar: &mut Bar) { }
-   |                            ~~~~~~~~
+LL -     fn bar(&mut self, bar: &Bar) { }
+LL +     fn bar(&mut self, bar: &mut Bar) { }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/mismatched_types/transforming-option-ref-issue-127545.stderr b/tests/ui/mismatched_types/transforming-option-ref-issue-127545.stderr
index ad423f86ef9..9a18798db21 100644
--- a/tests/ui/mismatched_types/transforming-option-ref-issue-127545.stderr
+++ b/tests/ui/mismatched_types/transforming-option-ref-issue-127545.stderr
@@ -34,8 +34,9 @@ note: method defined here
   --> $SRC_DIR/core/src/option.rs:LL:COL
 help: use `Option::map_or` to deref inner value of `Option`
    |
-LL |     arg.map_or(&[], |v| v)
-   |         ~~~~~~    +++++++
+LL -     arg.unwrap_or(&[])
+LL +     arg.map_or(&[], |v| v)
+   |
 
 error[E0308]: mismatched types
   --> $DIR/transforming-option-ref-issue-127545.rs:13:19
@@ -58,8 +59,9 @@ note: method defined here
   --> $SRC_DIR/core/src/option.rs:LL:COL
 help: use `Option::map_or` to deref inner value of `Option`
    |
-LL |     arg.map_or(v, |v| v)
-   |         ~~~~~~  +++++++
+LL -     arg.unwrap_or(v)
+LL +     arg.map_or(v, |v| v)
+   |
 
 error[E0308]: mismatched types
   --> $DIR/transforming-option-ref-issue-127545.rs:17:19
@@ -82,8 +84,9 @@ note: method defined here
   --> $SRC_DIR/core/src/result.rs:LL:COL
 help: use `Result::map_or` to deref inner value of `Result`
    |
-LL |     arg.map_or(&[], |v| v)
-   |         ~~~~~~    +++++++
+LL -     arg.unwrap_or(&[])
+LL +     arg.map_or(&[], |v| v)
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/missing/missing-block-hint.stderr b/tests/ui/missing/missing-block-hint.stderr
index 7a08d70d0ce..15bf59f1482 100644
--- a/tests/ui/missing/missing-block-hint.stderr
+++ b/tests/ui/missing/missing-block-hint.stderr
@@ -11,8 +11,9 @@ LL |         if (foo) => {}
    |            ^^^^^
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |         if (foo) >= {}
-   |                  ~~
+LL -         if (foo) => {}
+LL +         if (foo) >= {}
+   |
 
 error: expected `{`, found `bar`
   --> $DIR/missing-block-hint.rs:7:13
diff --git a/tests/ui/missing/missing-fields-in-struct-pattern.stderr b/tests/ui/missing/missing-fields-in-struct-pattern.stderr
index 91a7bd3540e..1c69592985f 100644
--- a/tests/ui/missing/missing-fields-in-struct-pattern.stderr
+++ b/tests/ui/missing/missing-fields-in-struct-pattern.stderr
@@ -6,8 +6,9 @@ LL |     if let S { a, b, c, d } = S(1, 2, 3, 4) {
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |     if let S(a, b, c, d) = S(1, 2, 3, 4) {
-   |             ~~~~~~~~~~~~
+LL -     if let S { a, b, c, d } = S(1, 2, 3, 4) {
+LL +     if let S(a, b, c, d) = S(1, 2, 3, 4) {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/missing/missing-items/missing-const-parameter.stderr b/tests/ui/missing/missing-items/missing-const-parameter.stderr
index d9fea130651..c873e244815 100644
--- a/tests/ui/missing/missing-items/missing-const-parameter.stderr
+++ b/tests/ui/missing/missing-items/missing-const-parameter.stderr
@@ -52,8 +52,9 @@ LL | struct Image<const R: usize>([[u32; C]; R]);
    |
 help: a const parameter with a similar name exists
    |
-LL | struct Image<const R: usize>([[u32; R]; R]);
-   |                                     ~
+LL - struct Image<const R: usize>([[u32; C]; R]);
+LL + struct Image<const R: usize>([[u32; R]; R]);
+   |
 help: you might be missing a const parameter
    |
 LL | struct Image<const R: usize, const C: /* Type */>([[u32; C]; R]);
diff --git a/tests/ui/missing/missing-items/missing-type-parameter2.stderr b/tests/ui/missing/missing-items/missing-type-parameter2.stderr
index f33951c98bf..f6418de20b6 100644
--- a/tests/ui/missing/missing-items/missing-type-parameter2.stderr
+++ b/tests/ui/missing/missing-items/missing-type-parameter2.stderr
@@ -9,8 +9,9 @@ LL | impl X<N> {}
    |
 help: a struct with a similar name exists
    |
-LL | impl X<X> {}
-   |        ~
+LL - impl X<N> {}
+LL + impl X<X> {}
+   |
 help: you might be missing a type parameter
    |
 LL | impl<N> X<N> {}
@@ -26,8 +27,9 @@ LL | impl<T, const A: u8 = 2> X<N> {}
    |
 help: a type parameter with a similar name exists
    |
-LL | impl<T, const A: u8 = 2> X<T> {}
-   |                            ~
+LL - impl<T, const A: u8 = 2> X<N> {}
+LL + impl<T, const A: u8 = 2> X<T> {}
+   |
 help: you might be missing a type parameter
    |
 LL | impl<T, const A: u8 = 2, N> X<N> {}
@@ -44,8 +46,9 @@ LL | fn foo(_: T) where T: Send {}
    |
 help: a struct with a similar name exists
    |
-LL | fn foo(_: T) where X: Send {}
-   |                    ~
+LL - fn foo(_: T) where T: Send {}
+LL + fn foo(_: T) where X: Send {}
+   |
 help: you might be missing a type parameter
    |
 LL | fn foo<T>(_: T) where T: Send {}
@@ -62,8 +65,9 @@ LL | fn foo(_: T) where T: Send {}
    |
 help: a struct with a similar name exists
    |
-LL | fn foo(_: X) where T: Send {}
-   |           ~
+LL - fn foo(_: T) where T: Send {}
+LL + fn foo(_: X) where T: Send {}
+   |
 help: you might be missing a type parameter
    |
 LL | fn foo<T>(_: T) where T: Send {}
@@ -80,8 +84,9 @@ LL | fn bar<const N: u8>(_: A) {}
    |
 help: a struct with a similar name exists
    |
-LL | fn bar<const N: u8>(_: X) {}
-   |                        ~
+LL - fn bar<const N: u8>(_: A) {}
+LL + fn bar<const N: u8>(_: X) {}
+   |
 help: you might be missing a type parameter
    |
 LL | fn bar<const N: u8, A>(_: A) {}
diff --git a/tests/ui/moves/needs-clone-through-deref.stderr b/tests/ui/moves/needs-clone-through-deref.stderr
index 1f9aefeb4dd..9890ad480a6 100644
--- a/tests/ui/moves/needs-clone-through-deref.stderr
+++ b/tests/ui/moves/needs-clone-through-deref.stderr
@@ -10,8 +10,9 @@ note: `into_iter` takes ownership of the receiver `self`, which moves value
   --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL
 help: you can `clone` the value and consume it, but this might not be your desired behavior
    |
-LL |         for _ in <Vec<usize> as Clone>::clone(&self).into_iter() {}
-   |                  ++++++++++++++++++++++++++++++    ~
+LL -         for _ in self.clone().into_iter() {}
+LL +         for _ in <Vec<usize> as Clone>::clone(&self).into_iter() {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/moves/suggest-clone-when-some-obligation-is-unmet.stderr b/tests/ui/moves/suggest-clone-when-some-obligation-is-unmet.stderr
index 755bbc5c21b..c626796e01d 100644
--- a/tests/ui/moves/suggest-clone-when-some-obligation-is-unmet.stderr
+++ b/tests/ui/moves/suggest-clone-when-some-obligation-is-unmet.stderr
@@ -10,8 +10,9 @@ note: `HashMap::<K, V, S>::into_values` takes ownership of the receiver `self`,
   --> $SRC_DIR/std/src/collections/hash/map.rs:LL:COL
 help: you could `clone` the value and consume it, if the `Hash128_1: Clone` trait bound could be satisfied
    |
-LL |     let mut copy: Vec<U> = <HashMap<T, U, Hash128_1> as Clone>::clone(&map).into_values().collect();
-   |                            ++++++++++++++++++++++++++++++++++++++++++++   ~
+LL -     let mut copy: Vec<U> = map.clone().into_values().collect();
+LL +     let mut copy: Vec<U> = <HashMap<T, U, Hash128_1> as Clone>::clone(&map).into_values().collect();
+   |
 help: consider annotating `Hash128_1` with `#[derive(Clone)]`
    |
 LL + #[derive(Clone)]
diff --git a/tests/ui/moves/use_of_moved_value_copy_suggestions.stderr b/tests/ui/moves/use_of_moved_value_copy_suggestions.stderr
index 784945dbbae..62f087ca6b7 100644
--- a/tests/ui/moves/use_of_moved_value_copy_suggestions.stderr
+++ b/tests/ui/moves/use_of_moved_value_copy_suggestions.stderr
@@ -195,8 +195,9 @@ LL |     [t, t];
    |      - you could clone this value
 help: consider further restricting type parameter `T` with trait `Copy`
    |
-LL |     T:, T: Copy
-   |       ~~~~~~~~~
+LL -     T:,
+LL +     T:, T: Copy
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/namespace/namespace-mix.stderr b/tests/ui/namespace/namespace-mix.stderr
index b80363fe8f8..41891c5144b 100644
--- a/tests/ui/namespace/namespace-mix.stderr
+++ b/tests/ui/namespace/namespace-mix.stderr
@@ -10,8 +10,9 @@ LL |     check(m1::S);
    = note: can't use a type alias as a constructor
 help: a tuple struct with a similar name exists
    |
-LL |     check(m1::TS);
-   |               ~~
+LL -     check(m1::S);
+LL +     check(m1::TS);
+   |
 help: consider importing one of these constants instead
    |
 LL + use m2::S;
@@ -38,8 +39,9 @@ LL |     pub struct TS();
    = note: can't use a type alias as a constructor
 help: a tuple struct with a similar name exists
    |
-LL |     check(xm1::TS);
-   |                ~~
+LL -     check(xm1::S);
+LL +     check(xm1::TS);
+   |
 help: consider importing one of these constants instead
    |
 LL + use m2::S;
@@ -64,8 +66,9 @@ LL |     check(m7::V);
    = note: can't use a type alias as a constructor
 help: a tuple variant with a similar name exists
    |
-LL |     check(m7::TV);
-   |               ~~
+LL -     check(m7::V);
+LL +     check(m7::TV);
+   |
 help: consider importing one of these constants instead
    |
 LL + use m8::V;
@@ -92,8 +95,9 @@ LL |         TV(),
    = note: can't use a type alias as a constructor
 help: a tuple variant with a similar name exists
    |
-LL |     check(xm7::TV);
-   |                ~~
+LL -     check(xm7::V);
+LL +     check(xm7::TV);
+   |
 help: consider importing one of these constants instead
    |
 LL + use m8::V;
diff --git a/tests/ui/never_type/dependency-on-fallback-to-unit.stderr b/tests/ui/never_type/dependency-on-fallback-to-unit.stderr
index ea3b39c3000..bf37cc7b4b4 100644
--- a/tests/ui/never_type/dependency-on-fallback-to-unit.stderr
+++ b/tests/ui/never_type/dependency-on-fallback-to-unit.stderr
@@ -15,8 +15,9 @@ LL |         false => <_>::default(),
    = note: `#[warn(dependency_on_unit_never_type_fallback)]` on by default
 help: use `()` annotations to avoid fallback changes
    |
-LL |         false => <()>::default(),
-   |                   ~~
+LL -         false => <_>::default(),
+LL +         false => <()>::default(),
+   |
 
 warning: this function depends on never type fallback being `()`
   --> $DIR/dependency-on-fallback-to-unit.rs:19:1
diff --git a/tests/ui/never_type/issue-96335.stderr b/tests/ui/never_type/issue-96335.stderr
index c3d80a425e0..1193973d5ee 100644
--- a/tests/ui/never_type/issue-96335.stderr
+++ b/tests/ui/never_type/issue-96335.stderr
@@ -6,12 +6,14 @@ LL |     0.....{loop{}1};
    |
 help: use `..` for an exclusive range
    |
-LL |     0....{loop{}1};
-   |      ~~
+LL -     0.....{loop{}1};
+LL +     0....{loop{}1};
+   |
 help: or `..=` for an inclusive range
    |
-LL |     0..=..{loop{}1};
-   |      ~~~
+LL -     0.....{loop{}1};
+LL +     0..=..{loop{}1};
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-96335.rs:2:9
diff --git a/tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.stderr b/tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.stderr
index 1f01d3e8260..7e11b23d681 100644
--- a/tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.stderr
+++ b/tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.stderr
@@ -9,8 +9,9 @@ LL |         S1 { a: unsafe { &mut X1 } }
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |         S1 { a: unsafe { &raw mut X1 } }
-   |                          ~~~~~~~~
+LL -         S1 { a: unsafe { &mut X1 } }
+LL +         S1 { a: unsafe { &raw mut X1 } }
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/nll/check-normalized-sig-for-wf.stderr b/tests/ui/nll/check-normalized-sig-for-wf.current.stderr
index 5c96b0c6561..b25ae72f7fb 100644
--- a/tests/ui/nll/check-normalized-sig-for-wf.stderr
+++ b/tests/ui/nll/check-normalized-sig-for-wf.current.stderr
@@ -1,5 +1,5 @@
 error[E0597]: `s` does not live long enough
-  --> $DIR/check-normalized-sig-for-wf.rs:7:7
+  --> $DIR/check-normalized-sig-for-wf.rs:11:7
    |
 LL |     s: String,
    |     - binding `s` declared here
@@ -14,7 +14,7 @@ LL | }
    | - `s` dropped here while still borrowed
 
 error[E0521]: borrowed data escapes outside of function
-  --> $DIR/check-normalized-sig-for-wf.rs:15:5
+  --> $DIR/check-normalized-sig-for-wf.rs:19:5
    |
 LL | fn extend<T>(input: &T) -> &'static T {
    |              -----  - let's call the lifetime of this reference `'1`
@@ -28,7 +28,7 @@ LL |     n(input).0
    |     argument requires that `'1` must outlive `'static`
 
 error[E0521]: borrowed data escapes outside of function
-  --> $DIR/check-normalized-sig-for-wf.rs:23:5
+  --> $DIR/check-normalized-sig-for-wf.rs:27:5
    |
 LL | fn extend_mut<'a, T>(input: &'a mut T) -> &'static mut T {
    |               --     ----- `input` is a reference that is only valid in the function body
diff --git a/tests/ui/nll/check-normalized-sig-for-wf.next.stderr b/tests/ui/nll/check-normalized-sig-for-wf.next.stderr
new file mode 100644
index 00000000000..b25ae72f7fb
--- /dev/null
+++ b/tests/ui/nll/check-normalized-sig-for-wf.next.stderr
@@ -0,0 +1,47 @@
+error[E0597]: `s` does not live long enough
+  --> $DIR/check-normalized-sig-for-wf.rs:11:7
+   |
+LL |     s: String,
+   |     - binding `s` declared here
+...
+LL |     f(&s).0
+   |     --^^-
+   |     | |
+   |     | borrowed value does not live long enough
+   |     argument requires that `s` is borrowed for `'static`
+LL |
+LL | }
+   | - `s` dropped here while still borrowed
+
+error[E0521]: borrowed data escapes outside of function
+  --> $DIR/check-normalized-sig-for-wf.rs:19:5
+   |
+LL | fn extend<T>(input: &T) -> &'static T {
+   |              -----  - let's call the lifetime of this reference `'1`
+   |              |
+   |              `input` is a reference that is only valid in the function body
+...
+LL |     n(input).0
+   |     ^^^^^^^^
+   |     |
+   |     `input` escapes the function body here
+   |     argument requires that `'1` must outlive `'static`
+
+error[E0521]: borrowed data escapes outside of function
+  --> $DIR/check-normalized-sig-for-wf.rs:27:5
+   |
+LL | fn extend_mut<'a, T>(input: &'a mut T) -> &'static mut T {
+   |               --     ----- `input` is a reference that is only valid in the function body
+   |               |
+   |               lifetime `'a` defined here
+...
+LL |     n(input).0
+   |     ^^^^^^^^
+   |     |
+   |     `input` escapes the function body here
+   |     argument requires that `'a` must outlive `'static`
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0521, E0597.
+For more information about an error, try `rustc --explain E0521`.
diff --git a/tests/ui/nll/check-normalized-sig-for-wf.rs b/tests/ui/nll/check-normalized-sig-for-wf.rs
index cb0f34ce02f..9d7411fd812 100644
--- a/tests/ui/nll/check-normalized-sig-for-wf.rs
+++ b/tests/ui/nll/check-normalized-sig-for-wf.rs
@@ -1,3 +1,7 @@
+//@ revisions: current next
+//@ ignore-compare-mode-next-solver (explicit revisions)
+//@[next] compile-flags: -Znext-solver
+
 // <https://github.com/rust-lang/rust/issues/114936>
 fn whoops(
     s: String,
diff --git a/tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr b/tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr
index 4f93fb4eaea..980670fee69 100644
--- a/tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr
+++ b/tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr
@@ -33,8 +33,9 @@ LL |     with_signature(x, |mut y| Box::new(y.next()))
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     T: Iterator, <T as Iterator>::Item: 'a
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: Iterator,
+LL +     T: Iterator, <T as Iterator>::Item: 'a
+   |
 
 note: external requirements
   --> $DIR/projection-no-regions-closure.rs:34:23
@@ -95,8 +96,9 @@ LL |     with_signature(x, |mut y| Box::new(y.next()))
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     T: 'b + Iterator, <T as Iterator>::Item: 'a
-   |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: 'b + Iterator,
+LL +     T: 'b + Iterator, <T as Iterator>::Item: 'a
+   |
 
 note: external requirements
   --> $DIR/projection-no-regions-closure.rs:52:23
diff --git a/tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr b/tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr
index da76ac1c474..53da981d702 100644
--- a/tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr
+++ b/tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr
@@ -9,8 +9,9 @@ LL |     Box::new(x.next())
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     T: Iterator, <T as Iterator>::Item: 'a
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: Iterator,
+LL +     T: Iterator, <T as Iterator>::Item: 'a
+   |
 
 error[E0309]: the associated type `<T as Iterator>::Item` may not live long enough
   --> $DIR/projection-no-regions-fn.rs:28:5
@@ -23,8 +24,9 @@ LL |     Box::new(x.next())
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     T: 'b + Iterator, <T as Iterator>::Item: 'a
-   |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: 'b + Iterator,
+LL +     T: 'b + Iterator, <T as Iterator>::Item: 'a
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/non-fmt-panic.stderr b/tests/ui/non-fmt-panic.stderr
index 162802b7f61..0134a8ddf29 100644
--- a/tests/ui/non-fmt-panic.stderr
+++ b/tests/ui/non-fmt-panic.stderr
@@ -184,8 +184,9 @@ LL |     std::panic!("{}", 123);
    |                 +++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(123);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     std::panic!(123);
+LL +     std::panic::panic_any(123);
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:31:18
@@ -214,8 +215,9 @@ LL |     panic!("{:?}", Some(123));
    |            +++++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(Some(123));
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     panic!(Some(123));
+LL +     std::panic::panic_any(Some(123));
+   |
 
 warning: panic message contains an unused formatting placeholder
   --> $DIR/non-fmt-panic.rs:33:12
@@ -267,8 +269,9 @@ LL |     panic!("{}", a!());
    |            +++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(a!());
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     panic!(a!());
+LL +     std::panic::panic_any(a!());
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:47:18
@@ -357,8 +360,9 @@ LL |     panic!["{}", 123];
    |            +++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(123);
-   |     ~~~~~~~~~~~~~~~~~~~~~~   ~
+LL -     panic![123];
+LL +     std::panic::panic_any(123);
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:55:12
@@ -374,8 +378,9 @@ LL |     panic!{"{}", 123};
    |            +++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(123);
-   |     ~~~~~~~~~~~~~~~~~~~~~~   ~
+LL -     panic!{123};
+LL +     std::panic::panic_any(123);
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:72:12
@@ -411,8 +416,9 @@ LL |     panic!("{:?}", v);
    |            +++++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(v);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     panic!(v);
+LL +     std::panic::panic_any(v);
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:78:20
@@ -441,8 +447,9 @@ LL |     panic!("{}", v);
    |            +++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(v);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     panic!(v);
+LL +     std::panic::panic_any(v);
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:83:20
@@ -471,8 +478,9 @@ LL |     panic!("{}", v);
    |            +++++
 help: or use std::panic::panic_any instead
    |
-LL |     std::panic::panic_any(v);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     panic!(v);
+LL +     std::panic::panic_any(v);
+   |
 
 warning: panic message is not a string literal
   --> $DIR/non-fmt-panic.rs:88:20
diff --git a/tests/ui/not-enough-arguments.stderr b/tests/ui/not-enough-arguments.stderr
index 66c96ba43c8..637c2774d5a 100644
--- a/tests/ui/not-enough-arguments.stderr
+++ b/tests/ui/not-enough-arguments.stderr
@@ -11,8 +11,9 @@ LL | fn foo(a: isize, b: isize, c: isize, d:isize) {
    |    ^^^                               -------
 help: provide the argument
    |
-LL |   foo(1, 2, 3, /* isize */);
-   |      ~~~~~~~~~~~~~~~~~~~~~~
+LL -   foo(1, 2, 3);
+LL +   foo(1, 2, 3, /* isize */);
+   |
 
 error[E0061]: this function takes 6 arguments but 3 arguments were supplied
   --> $DIR/not-enough-arguments.rs:29:3
@@ -34,8 +35,9 @@ LL |     f: i32,
    |     ------
 help: provide the arguments
    |
-LL |   bar(1, 2, 3, /* i32 */, /* i32 */, /* i32 */);
-   |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -   bar(1, 2, 3);
+LL +   bar(1, 2, 3, /* i32 */, /* i32 */, /* i32 */);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/numeric/const-scope.stderr b/tests/ui/numeric/const-scope.stderr
index 4e4bcdf234d..2c8d4da9d21 100644
--- a/tests/ui/numeric/const-scope.stderr
+++ b/tests/ui/numeric/const-scope.stderr
@@ -6,8 +6,9 @@ LL | const C: i32 = 1i8;
    |
 help: change the type of the numeric literal from `i8` to `i32`
    |
-LL | const C: i32 = 1i32;
-   |                 ~~~
+LL - const C: i32 = 1i8;
+LL + const C: i32 = 1i32;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/const-scope.rs:2:15
@@ -25,8 +26,9 @@ LL |     let c: i32 = 1i8;
    |
 help: change the type of the numeric literal from `i8` to `i32`
    |
-LL |     let c: i32 = 1i32;
-   |                   ~~~
+LL -     let c: i32 = 1i8;
+LL +     let c: i32 = 1i32;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/const-scope.rs:6:17
@@ -46,8 +48,9 @@ LL |     let c: i32 = 1i8;
    |
 help: change the type of the numeric literal from `i8` to `i32`
    |
-LL |     let c: i32 = 1i32;
-   |                   ~~~
+LL -     let c: i32 = 1i8;
+LL +     let c: i32 = 1i32;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/const-scope.rs:11:17
diff --git a/tests/ui/numeric/numeric-fields.stderr b/tests/ui/numeric/numeric-fields.stderr
index 8ab1718ff5e..6877bb3bef4 100644
--- a/tests/ui/numeric/numeric-fields.stderr
+++ b/tests/ui/numeric/numeric-fields.stderr
@@ -9,8 +9,9 @@ LL |     let s = S{0b1: 10, 0: 11};
    |
 help: `S` is a tuple struct, use the appropriate syntax
    |
-LL |     let s = S(/* u8 */, /* u16 */);
-   |             ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let s = S{0b1: 10, 0: 11};
+LL +     let s = S(/* u8 */, /* u16 */);
+   |
 
 error[E0026]: struct `S` does not have a field named `0x1`
   --> $DIR/numeric-fields.rs:7:17
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr
index f4fb14e7992..6c6b8b51c22 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_usize);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:32:16
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_u64);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:36:16
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_u32);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:40:16
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_u16);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:44:16
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_u8);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:48:16
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_isize);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:52:16
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_i64);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:57:16
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_i16);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:61:16
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `i32`
    |
-LL |     foo::<i32>(42_i32);
-   |                   ~~~
+LL -     foo::<i32>(42_i8);
+LL +     foo::<i32>(42_i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:65:16
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `i32`
    |
-LL |     foo::<i32>(42i32);
-   |                  ~~~
+LL -     foo::<i32>(42.0_f64);
+LL +     foo::<i32>(42i32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i32.rs:69:16
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `i32`
    |
-LL |     foo::<i32>(42i32);
-   |                  ~~~
+LL -     foo::<i32>(42.0_f32);
+LL +     foo::<i32>(42i32);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr
index 47efe9f08bb..7c26dd7be1c 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_usize);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:32:16
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_u64);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:36:16
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_u32);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:40:16
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_u16);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:44:16
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_u8);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:48:16
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_isize);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:53:16
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_i32);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:57:16
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_i16);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:61:16
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `i64`
    |
-LL |     foo::<i64>(42_i64);
-   |                   ~~~
+LL -     foo::<i64>(42_i8);
+LL +     foo::<i64>(42_i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:65:16
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `i64`
    |
-LL |     foo::<i64>(42i64);
-   |                  ~~~
+LL -     foo::<i64>(42.0_f64);
+LL +     foo::<i64>(42i64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-i64.rs:69:16
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `i64`
    |
-LL |     foo::<i64>(42i64);
-   |                  ~~~
+LL -     foo::<i64>(42.0_f32);
+LL +     foo::<i64>(42i64);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr
index 28b79413f68..8365350f2bf 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_usize);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:32:18
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_u64);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:36:18
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_u32);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:40:18
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_u16);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:44:18
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_u8);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:49:18
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_i64);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:53:18
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_i32);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:57:18
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_i16);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:61:18
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `isize`
    |
-LL |     foo::<isize>(42_isize);
-   |                     ~~~~~
+LL -     foo::<isize>(42_i8);
+LL +     foo::<isize>(42_isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:65:18
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `isize`
    |
-LL |     foo::<isize>(42isize);
-   |                    ~~~~~
+LL -     foo::<isize>(42.0_f64);
+LL +     foo::<isize>(42isize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-isize.rs:69:18
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `isize`
    |
-LL |     foo::<isize>(42isize);
-   |                    ~~~~~
+LL -     foo::<isize>(42.0_f32);
+LL +     foo::<isize>(42isize);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr
index d966893a83b..610e6ece276 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_usize);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:32:16
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_u64);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:37:16
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_u16);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:41:16
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_u8);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:45:16
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_isize);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:49:16
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_i64);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:53:16
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_i32);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:57:16
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_i16);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:61:16
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `u32`
    |
-LL |     foo::<u32>(42_u32);
-   |                   ~~~
+LL -     foo::<u32>(42_i8);
+LL +     foo::<u32>(42_u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:65:16
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `u32`
    |
-LL |     foo::<u32>(42u32);
-   |                  ~~~
+LL -     foo::<u32>(42.0_f64);
+LL +     foo::<u32>(42u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u32.rs:69:16
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `u32`
    |
-LL |     foo::<u32>(42u32);
-   |                  ~~~
+LL -     foo::<u32>(42.0_f32);
+LL +     foo::<u32>(42u32);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr
index ff332fa914d..112dddccd6f 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_usize);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:33:16
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_u32);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:37:16
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_u16);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:41:16
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_u8);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:45:16
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_isize);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:49:16
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_i64);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:53:16
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_i32);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:57:16
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_i16);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:61:16
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `u64`
    |
-LL |     foo::<u64>(42_u64);
-   |                   ~~~
+LL -     foo::<u64>(42_i8);
+LL +     foo::<u64>(42_u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:65:16
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `u64`
    |
-LL |     foo::<u64>(42u64);
-   |                  ~~~
+LL -     foo::<u64>(42.0_f64);
+LL +     foo::<u64>(42u64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-u64.rs:69:16
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `u64`
    |
-LL |     foo::<u64>(42u64);
-   |                  ~~~
+LL -     foo::<u64>(42.0_f32);
+LL +     foo::<u64>(42u64);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr
index 4889abee69c..e7d6a04f18e 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_u64);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:33:18
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_u32);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:37:18
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_u16);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:41:18
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_u8);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:45:18
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_isize);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:49:18
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_i64);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:53:18
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_i32);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:57:18
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_i16);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:61:18
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `usize`
    |
-LL |     foo::<usize>(42_usize);
-   |                     ~~~~~
+LL -     foo::<usize>(42_i8);
+LL +     foo::<usize>(42_usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:65:18
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `usize`
    |
-LL |     foo::<usize>(42usize);
-   |                    ~~~~~
+LL -     foo::<usize>(42.0_f64);
+LL +     foo::<usize>(42usize);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix-usize.rs:69:18
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `usize`
    |
-LL |     foo::<usize>(42usize);
-   |                    ~~~~~
+LL -     foo::<usize>(42.0_f32);
+LL +     foo::<usize>(42usize);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/numeric/numeric-suffix/numeric-suffix.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix.stderr
index e05913b9c62..d26639a76f0 100644
--- a/tests/ui/numeric/numeric-suffix/numeric-suffix.stderr
+++ b/tests/ui/numeric/numeric-suffix/numeric-suffix.stderr
@@ -13,8 +13,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_usize);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:147:16
@@ -31,8 +32,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_u64);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:151:16
@@ -49,8 +51,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_u32);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:156:16
@@ -67,8 +70,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_u8);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:160:16
@@ -85,8 +89,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_isize);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:164:16
@@ -103,8 +108,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_i64);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:168:16
@@ -121,8 +127,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_i32);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:172:16
@@ -139,8 +146,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_i16);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:176:16
@@ -157,8 +165,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `u16`
    |
-LL |     foo::<u16>(42_u16);
-   |                   ~~~
+LL -     foo::<u16>(42_i8);
+LL +     foo::<u16>(42_u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:180:16
@@ -175,8 +184,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `u16`
    |
-LL |     foo::<u16>(42u16);
-   |                  ~~~
+LL -     foo::<u16>(42.0_f64);
+LL +     foo::<u16>(42u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:184:16
@@ -193,8 +203,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `u16`
    |
-LL |     foo::<u16>(42u16);
-   |                  ~~~
+LL -     foo::<u16>(42.0_f32);
+LL +     foo::<u16>(42u16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:189:16
@@ -211,8 +222,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_usize);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:193:16
@@ -229,8 +241,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_u64);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:197:16
@@ -247,8 +260,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_u32);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:201:16
@@ -265,8 +279,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_u16);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:205:16
@@ -283,8 +298,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_u8);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:209:16
@@ -301,8 +317,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_isize);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:213:16
@@ -319,8 +336,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_i64);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:217:16
@@ -337,8 +355,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_i32);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:222:16
@@ -355,8 +374,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `i16`
    |
-LL |     foo::<i16>(42_i16);
-   |                   ~~~
+LL -     foo::<i16>(42_i8);
+LL +     foo::<i16>(42_i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:226:16
@@ -373,8 +393,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `i16`
    |
-LL |     foo::<i16>(42i16);
-   |                  ~~~
+LL -     foo::<i16>(42.0_f64);
+LL +     foo::<i16>(42i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:230:16
@@ -391,8 +412,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `i16`
    |
-LL |     foo::<i16>(42i16);
-   |                  ~~~
+LL -     foo::<i16>(42.0_f32);
+LL +     foo::<i16>(42i16);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:235:15
@@ -409,8 +431,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_usize);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:239:15
@@ -427,8 +450,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_u64);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:243:15
@@ -445,8 +469,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_u32);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:247:15
@@ -463,8 +488,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_u16);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:252:15
@@ -481,8 +507,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_isize);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:256:15
@@ -499,8 +526,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_i64);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:260:15
@@ -517,8 +545,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_i32);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:264:15
@@ -535,8 +564,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_i16);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:268:15
@@ -553,8 +583,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i8` to `u8`
    |
-LL |     foo::<u8>(42_u8);
-   |                  ~~
+LL -     foo::<u8>(42_i8);
+LL +     foo::<u8>(42_u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:272:15
@@ -571,8 +602,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `u8`
    |
-LL |     foo::<u8>(42u8);
-   |                 ~~
+LL -     foo::<u8>(42.0_f64);
+LL +     foo::<u8>(42u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:276:15
@@ -589,8 +621,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `u8`
    |
-LL |     foo::<u8>(42u8);
-   |                 ~~
+LL -     foo::<u8>(42.0_f32);
+LL +     foo::<u8>(42u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:281:15
@@ -607,8 +640,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_usize);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:285:15
@@ -625,8 +659,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_u64);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:289:15
@@ -643,8 +678,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_u32);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:293:15
@@ -661,8 +697,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u16` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_u16);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:297:15
@@ -679,8 +716,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u8` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_u8);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:301:15
@@ -697,8 +735,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_isize);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:305:15
@@ -715,8 +754,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_i64);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:309:15
@@ -733,8 +773,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_i32);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:313:15
@@ -751,8 +792,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i16` to `i8`
    |
-LL |     foo::<i8>(42_i8);
-   |                  ~~
+LL -     foo::<i8>(42_i16);
+LL +     foo::<i8>(42_i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:318:15
@@ -769,8 +811,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `i8`
    |
-LL |     foo::<i8>(42i8);
-   |                 ~~
+LL -     foo::<i8>(42.0_f64);
+LL +     foo::<i8>(42i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:322:15
@@ -787,8 +830,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `i8`
    |
-LL |     foo::<i8>(42i8);
-   |                 ~~
+LL -     foo::<i8>(42.0_f32);
+LL +     foo::<i8>(42i8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:327:16
@@ -805,8 +849,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `f64`
    |
-LL |     foo::<f64>(42_f64);
-   |                   ~~~
+LL -     foo::<f64>(42_usize);
+LL +     foo::<f64>(42_f64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:331:16
@@ -823,8 +868,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `f64`
    |
-LL |     foo::<f64>(42_f64);
-   |                   ~~~
+LL -     foo::<f64>(42_u64);
+LL +     foo::<f64>(42_f64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:335:16
@@ -895,8 +941,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `f64`
    |
-LL |     foo::<f64>(42_f64);
-   |                   ~~~
+LL -     foo::<f64>(42_isize);
+LL +     foo::<f64>(42_f64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:351:16
@@ -913,8 +960,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `f64`
    |
-LL |     foo::<f64>(42_f64);
-   |                   ~~~
+LL -     foo::<f64>(42_i64);
+LL +     foo::<f64>(42_f64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:355:16
@@ -985,8 +1033,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f32` to `f64`
    |
-LL |     foo::<f64>(42.0_f64);
-   |                     ~~~
+LL -     foo::<f64>(42.0_f32);
+LL +     foo::<f64>(42.0_f64);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:373:16
@@ -1003,8 +1052,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `usize` to `f32`
    |
-LL |     foo::<f32>(42_f32);
-   |                   ~~~
+LL -     foo::<f32>(42_usize);
+LL +     foo::<f32>(42_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:377:16
@@ -1021,8 +1071,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u64` to `f32`
    |
-LL |     foo::<f32>(42_f32);
-   |                   ~~~
+LL -     foo::<f32>(42_u64);
+LL +     foo::<f32>(42_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:381:16
@@ -1039,8 +1090,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `u32` to `f32`
    |
-LL |     foo::<f32>(42_f32);
-   |                   ~~~
+LL -     foo::<f32>(42_u32);
+LL +     foo::<f32>(42_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:385:16
@@ -1093,8 +1145,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `isize` to `f32`
    |
-LL |     foo::<f32>(42_f32);
-   |                   ~~~
+LL -     foo::<f32>(42_isize);
+LL +     foo::<f32>(42_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:397:16
@@ -1111,8 +1164,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i64` to `f32`
    |
-LL |     foo::<f32>(42_f32);
-   |                   ~~~
+LL -     foo::<f32>(42_i64);
+LL +     foo::<f32>(42_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:401:16
@@ -1129,8 +1183,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `i32` to `f32`
    |
-LL |     foo::<f32>(42_f32);
-   |                   ~~~
+LL -     foo::<f32>(42_i32);
+LL +     foo::<f32>(42_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:405:16
@@ -1183,8 +1238,9 @@ LL | fn foo<N>(_x: N) {}
    |    ^^^    -----
 help: change the type of the numeric literal from `f64` to `f32`
    |
-LL |     foo::<f32>(42.0_f32);
-   |                     ~~~
+LL -     foo::<f32>(42.0_f64);
+LL +     foo::<f32>(42.0_f32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/numeric-suffix.rs:419:16
diff --git a/tests/ui/object-pointer-types.stderr b/tests/ui/object-pointer-types.stderr
index 7d915ebdab6..7e3a13dd90b 100644
--- a/tests/ui/object-pointer-types.stderr
+++ b/tests/ui/object-pointer-types.stderr
@@ -9,8 +9,9 @@ LL |     x.owned();
    |
 help: there is a method `to_owned` with a similar name
    |
-LL |     x.to_owned();
-   |       ~~~~~~~~
+LL -     x.owned();
+LL +     x.to_owned();
+   |
 
 error[E0599]: no method named `owned` found for mutable reference `&mut dyn Foo` in the current scope
   --> $DIR/object-pointer-types.rs:17:7
diff --git a/tests/ui/obsolete-in-place/bad.stderr b/tests/ui/obsolete-in-place/bad.stderr
index 363dfb77628..1409a663789 100644
--- a/tests/ui/obsolete-in-place/bad.stderr
+++ b/tests/ui/obsolete-in-place/bad.stderr
@@ -6,8 +6,9 @@ LL |     x <- y;
    |
 help: if you meant to write a comparison against a negative value, add a space in between `<` and `-`
    |
-LL |     x < - y;
-   |       ~~~
+LL -     x <- y;
+LL +     x < - y;
+   |
 
 error: expected expression, found keyword `in`
   --> $DIR/bad.rs:10:5
diff --git a/tests/ui/on-unimplemented/bad-annotation.stderr b/tests/ui/on-unimplemented/bad-annotation.stderr
index 9bb9423788c..0482a5c5855 100644
--- a/tests/ui/on-unimplemented/bad-annotation.stderr
+++ b/tests/ui/on-unimplemented/bad-annotation.stderr
@@ -6,9 +6,11 @@ LL | #[rustc_on_unimplemented]
    |
 help: the following are the possible correct uses
    |
-LL | #[rustc_on_unimplemented = "message"]
+LL - #[rustc_on_unimplemented]
+LL + #[rustc_on_unimplemented = "message"]
    |
-LL | #[rustc_on_unimplemented(/*opt*/ message = "...", /*opt*/ label = "...", /*opt*/ note = "...")]
+LL - #[rustc_on_unimplemented]
+LL + #[rustc_on_unimplemented(/*opt*/ message = "...", /*opt*/ label = "...", /*opt*/ note = "...")]
    |
 
 error[E0230]: there is no parameter `C` on trait `BadAnnotation2`
diff --git a/tests/ui/on-unimplemented/issue-104140.stderr b/tests/ui/on-unimplemented/issue-104140.stderr
index 4ba5475d9ec..5c9d5e8d553 100644
--- a/tests/ui/on-unimplemented/issue-104140.stderr
+++ b/tests/ui/on-unimplemented/issue-104140.stderr
@@ -6,10 +6,12 @@ LL | #[rustc_on_unimplemented]
    |
 help: the following are the possible correct uses
    |
-LL | #[rustc_on_unimplemented = "message"]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | #[rustc_on_unimplemented(/*opt*/ message = "...", /*opt*/ label = "...", /*opt*/ note = "...")]
-   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - #[rustc_on_unimplemented]
+LL + #[rustc_on_unimplemented = "message"]
+   |
+LL - #[rustc_on_unimplemented]
+LL + #[rustc_on_unimplemented(/*opt*/ message = "...", /*opt*/ label = "...", /*opt*/ note = "...")]
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/operator-recovery/less-than-greater-than.stderr b/tests/ui/operator-recovery/less-than-greater-than.stderr
index 36a4a81035f..429bda9cefc 100644
--- a/tests/ui/operator-recovery/less-than-greater-than.stderr
+++ b/tests/ui/operator-recovery/less-than-greater-than.stderr
@@ -6,8 +6,9 @@ LL |     println!("{}", 1 <> 2);
    |
 help: `<>` is not a valid comparison operator, use `!=`
    |
-LL |     println!("{}", 1 != 2);
-   |                      ~~
+LL -     println!("{}", 1 <> 2);
+LL +     println!("{}", 1 != 2);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/or-patterns/multiple-pattern-typo.stderr b/tests/ui/or-patterns/multiple-pattern-typo.stderr
index 2e66f54979b..fea3ed76691 100644
--- a/tests/ui/or-patterns/multiple-pattern-typo.stderr
+++ b/tests/ui/or-patterns/multiple-pattern-typo.stderr
@@ -8,8 +8,9 @@ LL |         1 | 2 || 3 => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         1 | 2 | 3 => (),
-   |               ~
+LL -         1 | 2 || 3 => (),
+LL +         1 | 2 | 3 => (),
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/multiple-pattern-typo.rs:12:16
@@ -21,8 +22,9 @@ LL |         (1 | 2 || 3) => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         (1 | 2 | 3) => (),
-   |                ~
+LL -         (1 | 2 || 3) => (),
+LL +         (1 | 2 | 3) => (),
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/multiple-pattern-typo.rs:17:16
@@ -34,8 +36,9 @@ LL |         (1 | 2 || 3,) => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         (1 | 2 | 3,) => (),
-   |                ~
+LL -         (1 | 2 || 3,) => (),
+LL +         (1 | 2 | 3,) => (),
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/multiple-pattern-typo.rs:24:18
@@ -47,8 +50,9 @@ LL |         TS(1 | 2 || 3) => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         TS(1 | 2 | 3) => (),
-   |                  ~
+LL -         TS(1 | 2 || 3) => (),
+LL +         TS(1 | 2 | 3) => (),
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/multiple-pattern-typo.rs:31:23
@@ -60,8 +64,9 @@ LL |         NS { f: 1 | 2 || 3 } => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         NS { f: 1 | 2 | 3 } => (),
-   |                       ~
+LL -         NS { f: 1 | 2 || 3 } => (),
+LL +         NS { f: 1 | 2 | 3 } => (),
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/multiple-pattern-typo.rs:36:16
@@ -73,8 +78,9 @@ LL |         [1 | 2 || 3] => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         [1 | 2 | 3] => (),
-   |                ~
+LL -         [1 | 2 || 3] => (),
+LL +         [1 | 2 | 3] => (),
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/multiple-pattern-typo.rs:41:9
@@ -84,8 +90,9 @@ LL |         || 1 | 2 | 3 => (),
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         | 1 | 2 | 3 => (),
-   |         ~
+LL -         || 1 | 2 | 3 => (),
+LL +         | 1 | 2 | 3 => (),
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/or-patterns/remove-leading-vert.stderr b/tests/ui/or-patterns/remove-leading-vert.stderr
index 5177e98f0d9..b92fcb89a40 100644
--- a/tests/ui/or-patterns/remove-leading-vert.stderr
+++ b/tests/ui/or-patterns/remove-leading-vert.stderr
@@ -31,8 +31,9 @@ LL |     let ( || A): (E);
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |     let ( | A): (E);
-   |           ~
+LL -     let ( || A): (E);
+LL +     let ( | A): (E);
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/remove-leading-vert.rs:17:11
@@ -42,8 +43,9 @@ LL |     let [ || A ]: [E; 1];
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |     let [ | A ]: [E; 1];
-   |           ~
+LL -     let [ || A ]: [E; 1];
+LL +     let [ | A ]: [E; 1];
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/remove-leading-vert.rs:19:13
@@ -53,8 +55,9 @@ LL |     let TS( || A ): TS;
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |     let TS( | A ): TS;
-   |             ~
+LL -     let TS( || A ): TS;
+LL +     let TS( | A ): TS;
+   |
 
 error: unexpected token `||` in pattern
   --> $DIR/remove-leading-vert.rs:21:17
@@ -64,8 +67,9 @@ LL |     let NS { f: || A }: NS;
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |     let NS { f: | A }: NS;
-   |                 ~
+LL -     let NS { f: || A }: NS;
+LL +     let NS { f: | A }: NS;
+   |
 
 error: a trailing `|` is not allowed in an or-pattern
   --> $DIR/remove-leading-vert.rs:26:13
@@ -147,8 +151,9 @@ LL |     let ( A || B | ): E;
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |     let ( A | B | ): E;
-   |             ~
+LL -     let ( A || B | ): E;
+LL +     let ( A | B | ): E;
+   |
 
 error: a trailing `|` is not allowed in an or-pattern
   --> $DIR/remove-leading-vert.rs:31:18
@@ -203,8 +208,9 @@ LL |         A || B | => {}
    |
 help: use a single `|` to separate multiple alternative patterns
    |
-LL |         A | B | => {}
-   |           ~
+LL -         A || B | => {}
+LL +         A | B | => {}
+   |
 
 error: a trailing `|` is not allowed in an or-pattern
   --> $DIR/remove-leading-vert.rs:36:16
diff --git a/tests/ui/panic-handler/weak-lang-item.stderr b/tests/ui/panic-handler/weak-lang-item.stderr
index de351d2c3e4..e9d444c1c4d 100644
--- a/tests/ui/panic-handler/weak-lang-item.stderr
+++ b/tests/ui/panic-handler/weak-lang-item.stderr
@@ -7,7 +7,8 @@ LL | extern crate core;
    = note: `core` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate core as other_core;
+LL - extern crate core;
+LL + extern crate core as other_core;
    |
 
 error: `#[panic_handler]` function required, but not found
diff --git a/tests/ui/parser/bad-char-literals.stderr b/tests/ui/parser/bad-char-literals.stderr
index 5a81ede0336..3513055cb55 100644
--- a/tests/ui/parser/bad-char-literals.stderr
+++ b/tests/ui/parser/bad-char-literals.stderr
@@ -6,8 +6,9 @@ LL |     ''';
    |
 help: escape the character
    |
-LL |     '\'';
-   |      ~~
+LL -     ''';
+LL +     '\'';
+   |
 
 error: character constant must be escaped: `\n`
   --> $DIR/bad-char-literals.rs:10:6
@@ -41,8 +42,9 @@ LL |     '-␀-';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     "-␀-";
-   |     ~   ~
+LL -     '-␀-';
+LL +     "-␀-";
+   |
 
 error: character constant must be escaped: `\t`
   --> $DIR/bad-char-literals.rs:21:6
diff --git a/tests/ui/parser/bad-crate-name.stderr b/tests/ui/parser/bad-crate-name.stderr
index c98a620f123..2218062fa28 100644
--- a/tests/ui/parser/bad-crate-name.stderr
+++ b/tests/ui/parser/bad-crate-name.stderr
@@ -6,8 +6,9 @@ LL | extern crate krate-name-here;
    |
 help: if the original crate name uses dashes you need to use underscores in the code
    |
-LL | extern crate krate_name_here;
-   |                   ~    ~
+LL - extern crate krate-name-here;
+LL + extern crate krate_name_here;
+   |
 
 error[E0463]: can't find crate for `krate_name_here`
   --> $DIR/bad-crate-name.rs:1:1
diff --git a/tests/ui/parser/bad-escape-suggest-raw-string.stderr b/tests/ui/parser/bad-escape-suggest-raw-string.stderr
index 6dd4ad512a8..5afa1f4a7f8 100644
--- a/tests/ui/parser/bad-escape-suggest-raw-string.stderr
+++ b/tests/ui/parser/bad-escape-suggest-raw-string.stderr
@@ -7,8 +7,9 @@ LL |     let bad = "ab\[c";
    = help: for more information, visit <https://doc.rust-lang.org/reference/tokens.html#literals>
 help: if you meant to write a literal backslash (perhaps escaping in a regular expression), consider a raw string literal
    |
-LL |     let bad = r"ab\[c";
-   |               ~~~~~~~~
+LL -     let bad = "ab\[c";
+LL +     let bad = r"ab\[c";
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/bad-let-else-statement.stderr b/tests/ui/parser/bad-let-else-statement.stderr
index 79d722bb7ac..ba564529983 100644
--- a/tests/ui/parser/bad-let-else-statement.stderr
+++ b/tests/ui/parser/bad-let-else-statement.stderr
@@ -225,8 +225,9 @@ LL |     let bad = format_args! {""} else { return; };
    |
 help: use parentheses instead of braces for this macro
    |
-LL |     let bad = format_args! ("") else { return; };
-   |                            ~  ~
+LL -     let bad = format_args! {""} else { return; };
+LL +     let bad = format_args! ("") else { return; };
+   |
 
 error: right curly brace `}` before `else` in a `let...else` statement not allowed
   --> $DIR/bad-let-else-statement.rs:207:5
@@ -254,8 +255,9 @@ LL |     b!(2);
    = note: this error originates in the macro `b` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use parentheses instead of braces for this macro
    |
-LL |             let 0 = a! () else { return; };
-   |                        ~~
+LL -             let 0 = a! {} else { return; };
+LL +             let 0 = a! () else { return; };
+   |
 
 warning: irrefutable `let...else` pattern
   --> $DIR/bad-let-else-statement.rs:95:5
diff --git a/tests/ui/parser/bad-lit-suffixes.stderr b/tests/ui/parser/bad-lit-suffixes.stderr
index 121db2058f1..704f7363e81 100644
--- a/tests/ui/parser/bad-lit-suffixes.stderr
+++ b/tests/ui/parser/bad-lit-suffixes.stderr
@@ -30,9 +30,11 @@ LL | #[must_use = "string"suffix]
    |
 help: the following are the possible correct uses
    |
-LL | #[must_use = "reason"]
+LL - #[must_use = "string"suffix]
+LL + #[must_use = "reason"]
    |
-LL | #[must_use]
+LL - #[must_use = "string"suffix]
+LL + #[must_use]
    |
 
 error: suffixes on string literals are invalid
diff --git a/tests/ui/parser/byte-literals.stderr b/tests/ui/parser/byte-literals.stderr
index 25e31995441..fe3cfb23de8 100644
--- a/tests/ui/parser/byte-literals.stderr
+++ b/tests/ui/parser/byte-literals.stderr
@@ -39,8 +39,9 @@ LL |     b''';
    |
 help: escape the character
    |
-LL |     b'\'';
-   |       ~~
+LL -     b''';
+LL +     b'\'';
+   |
 
 error: non-ASCII character in byte literal
   --> $DIR/byte-literals.rs:10:7
@@ -50,8 +51,9 @@ LL |     b'é';
    |
 help: if you meant to use the unicode code point for 'é', use a \xHH escape
    |
-LL |     b'\xE9';
-   |       ~~~~
+LL -     b'é';
+LL +     b'\xE9';
+   |
 
 error[E0763]: unterminated byte constant
   --> $DIR/byte-literals.rs:11:6
diff --git a/tests/ui/parser/byte-string-literals.stderr b/tests/ui/parser/byte-string-literals.stderr
index 24e0eaac8fa..08633742557 100644
--- a/tests/ui/parser/byte-string-literals.stderr
+++ b/tests/ui/parser/byte-string-literals.stderr
@@ -28,8 +28,9 @@ LL |     b"é";
    |
 help: if you meant to use the unicode code point for 'é', use a \xHH escape
    |
-LL |     b"\xE9";
-   |       ~~~~
+LL -     b"é";
+LL +     b"\xE9";
+   |
 
 error: non-ASCII character in raw byte string literal
   --> $DIR/byte-string-literals.rs:7:10
diff --git a/tests/ui/parser/char/whitespace-character-literal.stderr b/tests/ui/parser/char/whitespace-character-literal.stderr
index f273b5d61d5..53f2eb3ecba 100644
--- a/tests/ui/parser/char/whitespace-character-literal.stderr
+++ b/tests/ui/parser/char/whitespace-character-literal.stderr
@@ -11,8 +11,9 @@ LL |     let _hair_space_around = ' x​';
    |                               ^^
 help: consider removing the non-printing characters
    |
-LL |     let _hair_space_around = 'x​';
-   |                               ~
+LL -     let _hair_space_around = ' x​';
+LL +     let _hair_space_around = 'x​';
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr b/tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr
index 104dbd02685..855163e3d3b 100644
--- a/tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr
+++ b/tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr
@@ -6,8 +6,9 @@ LL | impl NInts<const N: usize> {}
    |
 help: `const` parameters must be declared for the `impl`
    |
-LL | impl<const N: usize> NInts<N> {}
-   |     ++++++++++++++++       ~
+LL - impl NInts<const N: usize> {}
+LL + impl<const N: usize> NInts<N> {}
+   |
 
 error: unexpected `const` parameter declaration
   --> $DIR/const-param-decl-on-type-instead-of-impl.rs:8:17
diff --git a/tests/ui/parser/default-on-wrong-item-kind.stderr b/tests/ui/parser/default-on-wrong-item-kind.stderr
index 392c85e0c43..56641565b16 100644
--- a/tests/ui/parser/default-on-wrong-item-kind.stderr
+++ b/tests/ui/parser/default-on-wrong-item-kind.stderr
@@ -159,8 +159,9 @@ LL |     default const foo: u8;
    = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
 help: try using a static value
    |
-LL |     static foo: u8;
-   |     ~~~~~~
+LL -     default const foo: u8;
+LL +     static foo: u8;
+   |
 
 error: a module cannot be `default`
   --> $DIR/default-on-wrong-item-kind.rs:41:5
diff --git a/tests/ui/parser/do-catch-suggests-try.stderr b/tests/ui/parser/do-catch-suggests-try.stderr
index fd3406ae29f..2eaab836075 100644
--- a/tests/ui/parser/do-catch-suggests-try.stderr
+++ b/tests/ui/parser/do-catch-suggests-try.stderr
@@ -7,8 +7,9 @@ LL |     let _: Option<()> = do catch {};
    = note: following RFC #2388, the new non-placeholder syntax is `try`
 help: replace with the new syntax
    |
-LL |     let _: Option<()> = try {};
-   |                         ~~~
+LL -     let _: Option<()> = do catch {};
+LL +     let _: Option<()> = try {};
+   |
 
 error[E0308]: mismatched types
   --> $DIR/do-catch-suggests-try.rs:9:33
diff --git a/tests/ui/parser/dotdotdot-expr.stderr b/tests/ui/parser/dotdotdot-expr.stderr
index 208c04bd3df..f0bc57264a6 100644
--- a/tests/ui/parser/dotdotdot-expr.stderr
+++ b/tests/ui/parser/dotdotdot-expr.stderr
@@ -6,12 +6,14 @@ LL |     let _redemptive = 1...21;
    |
 help: use `..` for an exclusive range
    |
-LL |     let _redemptive = 1..21;
-   |                        ~~
+LL -     let _redemptive = 1...21;
+LL +     let _redemptive = 1..21;
+   |
 help: or `..=` for an inclusive range
    |
-LL |     let _redemptive = 1..=21;
-   |                        ~~~
+LL -     let _redemptive = 1...21;
+LL +     let _redemptive = 1..=21;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/duplicate-where-clauses.stderr b/tests/ui/parser/duplicate-where-clauses.stderr
index 8250d4f1e05..298cdab0c68 100644
--- a/tests/ui/parser/duplicate-where-clauses.stderr
+++ b/tests/ui/parser/duplicate-where-clauses.stderr
@@ -8,8 +8,9 @@ LL | struct A where (): Sized where (): Sized {}
    |
 help: consider joining the two `where` clauses into one
    |
-LL | struct A where (): Sized, (): Sized {}
-   |                         ~
+LL - struct A where (): Sized where (): Sized {}
+LL + struct A where (): Sized, (): Sized {}
+   |
 
 error: cannot define duplicate `where` clauses on an item
   --> $DIR/duplicate-where-clauses.rs:4:30
@@ -21,8 +22,9 @@ LL | fn b() where (): Sized where (): Sized {}
    |
 help: consider joining the two `where` clauses into one
    |
-LL | fn b() where (): Sized, (): Sized {}
-   |                       ~
+LL - fn b() where (): Sized where (): Sized {}
+LL + fn b() where (): Sized, (): Sized {}
+   |
 
 error: cannot define duplicate `where` clauses on an item
   --> $DIR/duplicate-where-clauses.rs:7:30
@@ -34,8 +36,9 @@ LL | enum C where (): Sized where (): Sized {}
    |
 help: consider joining the two `where` clauses into one
    |
-LL | enum C where (): Sized, (): Sized {}
-   |                       ~
+LL - enum C where (): Sized where (): Sized {}
+LL + enum C where (): Sized, (): Sized {}
+   |
 
 error: cannot define duplicate `where` clauses on an item
   --> $DIR/duplicate-where-clauses.rs:10:33
@@ -47,8 +50,9 @@ LL | struct D where (): Sized, where (): Sized {}
    |
 help: consider joining the two `where` clauses into one
    |
-LL | struct D where (): Sized, (): Sized {}
-   |                         ~
+LL - struct D where (): Sized, where (): Sized {}
+LL + struct D where (): Sized, (): Sized {}
+   |
 
 error: cannot define duplicate `where` clauses on an item
   --> $DIR/duplicate-where-clauses.rs:13:31
@@ -60,8 +64,9 @@ LL | fn e() where (): Sized, where (): Sized {}
    |
 help: consider joining the two `where` clauses into one
    |
-LL | fn e() where (): Sized, (): Sized {}
-   |                       ~
+LL - fn e() where (): Sized, where (): Sized {}
+LL + fn e() where (): Sized, (): Sized {}
+   |
 
 error: cannot define duplicate `where` clauses on an item
   --> $DIR/duplicate-where-clauses.rs:16:31
@@ -73,8 +78,9 @@ LL | enum F where (): Sized, where (): Sized {}
    |
 help: consider joining the two `where` clauses into one
    |
-LL | enum F where (): Sized, (): Sized {}
-   |                       ~
+LL - enum F where (): Sized, where (): Sized {}
+LL + enum F where (): Sized, (): Sized {}
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/parser/emoji-identifiers.stderr b/tests/ui/parser/emoji-identifiers.stderr
index 536afc53f0c..f0e90082bff 100644
--- a/tests/ui/parser/emoji-identifiers.stderr
+++ b/tests/ui/parser/emoji-identifiers.stderr
@@ -6,8 +6,9 @@ LL |     let _ = i_like_to_😄_a_lot() ➖ 4;
    |
 help: Unicode character '➖' (Heavy Minus Sign) looks like '-' (Minus/Hyphen), but it is not
    |
-LL |     let _ = i_like_to_😄_a_lot() - 4;
-   |                                  ~
+LL -     let _ = i_like_to_😄_a_lot() ➖ 4;
+LL +     let _ = i_like_to_😄_a_lot() - 4;
+   |
 
 error: identifiers cannot contain emoji: `ABig👩👩👧👧Family`
   --> $DIR/emoji-identifiers.rs:1:8
@@ -80,8 +81,9 @@ LL |     fn full_of_✨() -> 👀 {
    |     ^^^^^^^^^^^^^^^^^^^^^
 help: there is an associated function `full_of_✨` with a similar name
    |
-LL |     👀::full_of_✨()
-   |         ~~~~~~~~~~
+LL -     👀::full_of✨()
+LL +     👀::full_of_✨()
+   |
 
 error[E0425]: cannot find function `i_like_to_😄_a_lot` in this scope
   --> $DIR/emoji-identifiers.rs:13:13
diff --git a/tests/ui/parser/eq-gt-to-gt-eq.stderr b/tests/ui/parser/eq-gt-to-gt-eq.stderr
index 73f465f7b9b..aa47ddecce9 100644
--- a/tests/ui/parser/eq-gt-to-gt-eq.stderr
+++ b/tests/ui/parser/eq-gt-to-gt-eq.stderr
@@ -11,8 +11,9 @@ LL |     if a => b {}
    |        ^
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     if a >= b {}
-   |          ~~
+LL -     if a => b {}
+LL +     if a >= b {}
+   |
 
 error: expected `{`, found `=>`
   --> $DIR/eq-gt-to-gt-eq.rs:13:10
@@ -27,8 +28,9 @@ LL |     if a => 1 {}
    |        ^
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     if a >= 1 {}
-   |          ~~
+LL -     if a => 1 {}
+LL +     if a >= 1 {}
+   |
 
 error: expected `{`, found `=>`
   --> $DIR/eq-gt-to-gt-eq.rs:18:10
@@ -43,8 +45,9 @@ LL |     if 1 => a {}
    |        ^
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     if 1 >= a {}
-   |          ~~
+LL -     if 1 => a {}
+LL +     if 1 >= a {}
+   |
 
 error: expected `{`, found `=>`
   --> $DIR/eq-gt-to-gt-eq.rs:24:10
@@ -59,8 +62,9 @@ LL |     if a => b && a != b {}
    |        ^
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     if a >= b && a != b {}
-   |          ~~
+LL -     if a => b && a != b {}
+LL +     if a >= b && a != b {}
+   |
 
 error: expected `{`, found `=>`
   --> $DIR/eq-gt-to-gt-eq.rs:30:20
@@ -75,8 +79,9 @@ LL |     if a != b && a => b {}
    |        ^^^^^^^^^^^
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     if a != b && a >= b {}
-   |                    ~~
+LL -     if a != b && a => b {}
+LL +     if a != b && a >= b {}
+   |
 
 error: expected one of `!`, `.`, `::`, `;`, `?`, `else`, `{`, or an operator, found `=>`
   --> $DIR/eq-gt-to-gt-eq.rs:36:15
@@ -86,8 +91,9 @@ LL |     let _ = a => b;
    |
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     let _ = a >= b;
-   |               ~~
+LL -     let _ = a => b;
+LL +     let _ = a >= b;
+   |
 
 error: expected one of `!`, `.`, `::`, `?`, `{`, or an operator, found `=>`
   --> $DIR/eq-gt-to-gt-eq.rs:42:13
@@ -99,8 +105,9 @@ LL |     match a => b {
    |
 help: you might have meant to write a "greater than or equal to" comparison
    |
-LL |     match a >= b {
-   |             ~~
+LL -     match a => b {
+LL +     match a >= b {
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/parser/expr-rarrow-call.stderr b/tests/ui/parser/expr-rarrow-call.stderr
index 221e3a74d79..2e168ca26fe 100644
--- a/tests/ui/parser/expr-rarrow-call.stderr
+++ b/tests/ui/parser/expr-rarrow-call.stderr
@@ -7,8 +7,9 @@ LL |     named->foo;
    = help: the `.` operator will dereference the value if needed
 help: try using `.` instead
    |
-LL |     named.foo;
-   |          ~
+LL -     named->foo;
+LL +     named.foo;
+   |
 
 error: `->` used for field access or method call
   --> $DIR/expr-rarrow-call.rs:18:12
@@ -19,8 +20,9 @@ LL |     unnamed->0;
    = help: the `.` operator will dereference the value if needed
 help: try using `.` instead
    |
-LL |     unnamed.0;
-   |            ~
+LL -     unnamed->0;
+LL +     unnamed.0;
+   |
 
 error: `->` used for field access or method call
   --> $DIR/expr-rarrow-call.rs:22:6
@@ -31,8 +33,9 @@ LL |     t->0;
    = help: the `.` operator will dereference the value if needed
 help: try using `.` instead
    |
-LL |     t.0;
-   |      ~
+LL -     t->0;
+LL +     t.0;
+   |
 
 error: `->` used for field access or method call
   --> $DIR/expr-rarrow-call.rs:23:6
@@ -43,8 +46,9 @@ LL |     t->1;
    = help: the `.` operator will dereference the value if needed
 help: try using `.` instead
    |
-LL |     t.1;
-   |      ~
+LL -     t->1;
+LL +     t.1;
+   |
 
 error: `->` used for field access or method call
   --> $DIR/expr-rarrow-call.rs:30:8
@@ -55,8 +59,9 @@ LL |     foo->clone();
    = help: the `.` operator will dereference the value if needed
 help: try using `.` instead
    |
-LL |     foo.clone();
-   |        ~
+LL -     foo->clone();
+LL +     foo.clone();
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/parser/extern-crate-unexpected-token.stderr b/tests/ui/parser/extern-crate-unexpected-token.stderr
index 951b0274b0d..3d48f0adfa1 100644
--- a/tests/ui/parser/extern-crate-unexpected-token.stderr
+++ b/tests/ui/parser/extern-crate-unexpected-token.stderr
@@ -6,8 +6,9 @@ LL | extern crte foo;
    |
 help: there is a keyword `crate` with a similar name
    |
-LL | extern crate foo;
-   |        ~~~~~
+LL - extern crte foo;
+LL + extern crate foo;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/extern-no-fn.stderr b/tests/ui/parser/extern-no-fn.stderr
index 03826e4a93b..2ee905429c4 100644
--- a/tests/ui/parser/extern-no-fn.stderr
+++ b/tests/ui/parser/extern-no-fn.stderr
@@ -11,8 +11,9 @@ LL | }
    |
 help: if you meant to call a macro, try
    |
-LL |     f!();
-   |     ~~
+LL -     f();
+LL +     f!();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/fn-body-eq-expr-semi.stderr b/tests/ui/parser/fn-body-eq-expr-semi.stderr
index f1255d8642a..adcb4fef0a3 100644
--- a/tests/ui/parser/fn-body-eq-expr-semi.stderr
+++ b/tests/ui/parser/fn-body-eq-expr-semi.stderr
@@ -6,8 +6,9 @@ LL |     fn foo() = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn foo() { 42 }
-   |              ~    ~
+LL -     fn foo() = 42;
+LL +     fn foo() { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:5:20
@@ -17,8 +18,9 @@ LL |     fn bar() -> u8 = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn bar() -> u8 { 42 }
-   |                    ~    ~
+LL -     fn bar() -> u8 = 42;
+LL +     fn bar() -> u8 { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:9:14
@@ -28,8 +30,9 @@ LL |     fn foo() = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn foo() { 42 }
-   |              ~    ~
+LL -     fn foo() = 42;
+LL +     fn foo() { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:11:20
@@ -39,8 +42,9 @@ LL |     fn bar() -> u8 = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn bar() -> u8 { 42 }
-   |                    ~    ~
+LL -     fn bar() -> u8 = 42;
+LL +     fn bar() -> u8 { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:16:14
@@ -50,8 +54,9 @@ LL |     fn foo() = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn foo() { 42 }
-   |              ~    ~
+LL -     fn foo() = 42;
+LL +     fn foo() { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:17:20
@@ -61,8 +66,9 @@ LL |     fn bar() -> u8 = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn bar() -> u8 { 42 }
-   |                    ~    ~
+LL -     fn bar() -> u8 = 42;
+LL +     fn bar() -> u8 { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:21:14
@@ -72,8 +78,9 @@ LL |     fn foo() = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn foo() { 42 }
-   |              ~    ~
+LL -     fn foo() = 42;
+LL +     fn foo() { 42 }
+   |
 
 error: function body cannot be `= expression;`
   --> $DIR/fn-body-eq-expr-semi.rs:22:20
@@ -83,8 +90,9 @@ LL |     fn bar() -> u8 = 42;
    |
 help: surround the expression with `{` and `}` instead of `=` and `;`
    |
-LL |     fn bar() -> u8 { 42 }
-   |                    ~    ~
+LL -     fn bar() -> u8 = 42;
+LL +     fn bar() -> u8 { 42 }
+   |
 
 error: incorrect function inside `extern` block
   --> $DIR/fn-body-eq-expr-semi.rs:9:8
diff --git a/tests/ui/parser/fn-colon-return-type.stderr b/tests/ui/parser/fn-colon-return-type.stderr
index c1cdf4d4975..d6d30c5fd07 100644
--- a/tests/ui/parser/fn-colon-return-type.stderr
+++ b/tests/ui/parser/fn-colon-return-type.stderr
@@ -6,8 +6,9 @@ LL | fn foo(x: i32): i32 {
    |
 help: use `->` instead
    |
-LL | fn foo(x: i32) -> i32 {
-   |                ~~
+LL - fn foo(x: i32): i32 {
+LL + fn foo(x: i32) -> i32 {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/foreign-const-semantic-fail.stderr b/tests/ui/parser/foreign-const-semantic-fail.stderr
index d317847f98a..b2240738c49 100644
--- a/tests/ui/parser/foreign-const-semantic-fail.stderr
+++ b/tests/ui/parser/foreign-const-semantic-fail.stderr
@@ -7,8 +7,9 @@ LL |     const A: isize;
    = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
 help: try using a static value
    |
-LL |     static A: isize;
-   |     ~~~~~~
+LL -     const A: isize;
+LL +     static A: isize;
+   |
 
 error: extern items cannot be `const`
   --> $DIR/foreign-const-semantic-fail.rs:6:11
@@ -19,8 +20,9 @@ LL |     const B: isize = 42;
    = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
 help: try using a static value
    |
-LL |     static B: isize = 42;
-   |     ~~~~~~
+LL -     const B: isize = 42;
+LL +     static B: isize = 42;
+   |
 
 error: incorrect `static` inside `extern` block
   --> $DIR/foreign-const-semantic-fail.rs:6:11
diff --git a/tests/ui/parser/foreign-const-syntactic-fail.stderr b/tests/ui/parser/foreign-const-syntactic-fail.stderr
index 7da2c019022..f7466d5d6cd 100644
--- a/tests/ui/parser/foreign-const-syntactic-fail.stderr
+++ b/tests/ui/parser/foreign-const-syntactic-fail.stderr
@@ -7,8 +7,9 @@ LL |     const A: isize;
    = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
 help: try using a static value
    |
-LL |     static A: isize;
-   |     ~~~~~~
+LL -     const A: isize;
+LL +     static A: isize;
+   |
 
 error: extern items cannot be `const`
   --> $DIR/foreign-const-syntactic-fail.rs:8:11
@@ -19,8 +20,9 @@ LL |     const B: isize = 42;
    = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
 help: try using a static value
    |
-LL |     static B: isize = 42;
-   |     ~~~~~~
+LL -     const B: isize = 42;
+LL +     static B: isize = 42;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/increment-autofix-2.stderr b/tests/ui/parser/increment-autofix-2.stderr
index 11e985480d6..3fee9672796 100644
--- a/tests/ui/parser/increment-autofix-2.stderr
+++ b/tests/ui/parser/increment-autofix-2.stderr
@@ -6,8 +6,9 @@ LL |     i++;
    |
 help: use `+= 1` instead
    |
-LL |     i += 1;
-   |       ~~~~
+LL -     i++;
+LL +     i += 1;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/increment-autofix-2.rs:19:12
@@ -19,8 +20,9 @@ LL |     while i++ < 5 {
    |
 help: use `+= 1` instead
    |
-LL |     while { let tmp = i; i += 1; tmp } < 5 {
-   |           +++++++++++  ~~~~~~~~~~~~~~~
+LL -     while i++ < 5 {
+LL +     while { let tmp = i; i += 1; tmp } < 5 {
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/increment-autofix-2.rs:27:8
@@ -30,8 +32,9 @@ LL |     tmp++;
    |
 help: use `+= 1` instead
    |
-LL |     tmp += 1;
-   |         ~~~~
+LL -     tmp++;
+LL +     tmp += 1;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/increment-autofix-2.rs:33:14
@@ -43,8 +46,9 @@ LL |     while tmp++ < 5 {
    |
 help: use `+= 1` instead
    |
-LL |     while { let tmp_ = tmp; tmp += 1; tmp_ } < 5 {
-   |           ++++++++++++    ~~~~~~~~~~~~~~~~~~
+LL -     while tmp++ < 5 {
+LL +     while { let tmp_ = tmp; tmp += 1; tmp_ } < 5 {
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/increment-autofix-2.rs:41:16
@@ -54,8 +58,9 @@ LL |     foo.bar.qux++;
    |
 help: use `+= 1` instead
    |
-LL |     foo.bar.qux += 1;
-   |                 ~~~~
+LL -     foo.bar.qux++;
+LL +     foo.bar.qux += 1;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/increment-autofix-2.rs:51:10
@@ -65,8 +70,9 @@ LL |     s.tmp++;
    |
 help: use `+= 1` instead
    |
-LL |     s.tmp += 1;
-   |           ~~~~
+LL -     s.tmp++;
+LL +     s.tmp += 1;
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/increment-autofix-2.rs:58:5
diff --git a/tests/ui/parser/increment-autofix.stderr b/tests/ui/parser/increment-autofix.stderr
index 1dc69fd9f46..ffff91abee9 100644
--- a/tests/ui/parser/increment-autofix.stderr
+++ b/tests/ui/parser/increment-autofix.stderr
@@ -20,8 +20,9 @@ LL |     while ++i < 5 {
    |
 help: use `+= 1` instead
    |
-LL |     while { i += 1; i } < 5 {
-   |           ~   +++++++++
+LL -     while ++i < 5 {
+LL +     while { i += 1; i } < 5 {
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/increment-autofix.rs:19:5
@@ -45,8 +46,9 @@ LL |     while ++tmp < 5 {
    |
 help: use `+= 1` instead
    |
-LL |     while { tmp += 1; tmp } < 5 {
-   |           ~     +++++++++++
+LL -     while ++tmp < 5 {
+LL +     while { tmp += 1; tmp } < 5 {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/parser/intersection-patterns-1.stderr b/tests/ui/parser/intersection-patterns-1.stderr
index ed2466b21a7..c191b46fa45 100644
--- a/tests/ui/parser/intersection-patterns-1.stderr
+++ b/tests/ui/parser/intersection-patterns-1.stderr
@@ -9,8 +9,9 @@ LL |         Some(x) @ y => {}
    |
 help: switch the order
    |
-LL |         y @ Some(x) => {}
-   |         ~~~~~~~~~~~
+LL -         Some(x) @ y => {}
+LL +         y @ Some(x) => {}
+   |
 
 error: pattern on wrong side of `@`
   --> $DIR/intersection-patterns-1.rs:27:9
@@ -23,8 +24,9 @@ LL |         1 ..= 5 @ e => {}
    |
 help: switch the order
    |
-LL |         e @ 1..=5 => {}
-   |         ~~~~~~~~~
+LL -         1 ..= 5 @ e => {}
+LL +         e @ 1..=5 => {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/issues/issue-100197-mut-let.stderr b/tests/ui/parser/issues/issue-100197-mut-let.stderr
index 252ed7d0715..e43d5f68607 100644
--- a/tests/ui/parser/issues/issue-100197-mut-let.stderr
+++ b/tests/ui/parser/issues/issue-100197-mut-let.stderr
@@ -6,8 +6,9 @@ LL |     mut let _x = 123;
    |
 help: switch the order of `mut` and `let`
    |
-LL |     let mut _x = 123;
-   |     ~~~~~~~
+LL -     mut let _x = 123;
+LL +     let mut _x = 123;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/issues/issue-101477-enum.stderr b/tests/ui/parser/issues/issue-101477-enum.stderr
index 8d4efdd17f7..c6dadeab8b3 100644
--- a/tests/ui/parser/issues/issue-101477-enum.stderr
+++ b/tests/ui/parser/issues/issue-101477-enum.stderr
@@ -7,8 +7,9 @@ LL |     B == 2
    = help: enum variants can be `Variant`, `Variant = <integer>`, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }`
 help: try using `=` instead
    |
-LL |     B = 2
-   |       ~
+LL -     B == 2
+LL +     B = 2
+   |
 
 error: expected item, found `==`
   --> $DIR/issue-101477-enum.rs:6:7
diff --git a/tests/ui/parser/issues/issue-101477-let.stderr b/tests/ui/parser/issues/issue-101477-let.stderr
index d2671abbdea..59e90c8102f 100644
--- a/tests/ui/parser/issues/issue-101477-let.stderr
+++ b/tests/ui/parser/issues/issue-101477-let.stderr
@@ -6,8 +6,9 @@ LL |     let x == 2;
    |
 help: try using `=` instead
    |
-LL |     let x = 2;
-   |           ~
+LL -     let x == 2;
+LL +     let x = 2;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/issues/issue-102806.stderr b/tests/ui/parser/issues/issue-102806.stderr
index ba8174a823b..cd447c6dec0 100644
--- a/tests/ui/parser/issues/issue-102806.stderr
+++ b/tests/ui/parser/issues/issue-102806.stderr
@@ -6,8 +6,9 @@ LL |     let _ = V3 { z: 0.0, ...v};
    |
 help: use `..` to fill in the rest of the fields
    |
-LL |     let _ = V3 { z: 0.0, ..v};
-   |                          ~~
+LL -     let _ = V3 { z: 0.0, ...v};
+LL +     let _ = V3 { z: 0.0, ..v};
+   |
 
 error: expected `..`, found `...`
   --> $DIR/issue-102806.rs:14:26
@@ -17,8 +18,9 @@ LL |     let _ = V3 { z: 0.0, ...Default::default() };
    |
 help: use `..` to fill in the rest of the fields
    |
-LL |     let _ = V3 { z: 0.0, ..Default::default() };
-   |                          ~~
+LL -     let _ = V3 { z: 0.0, ...Default::default() };
+LL +     let _ = V3 { z: 0.0, ..Default::default() };
+   |
 
 error: expected identifier, found `...`
   --> $DIR/issue-102806.rs:17:26
@@ -36,8 +38,9 @@ LL |     let V3 { z: val, ... } = v;
    |
 help: to omit remaining fields, use `..`
    |
-LL |     let V3 { z: val, .. } = v;
-   |                      ~~
+LL -     let V3 { z: val, ... } = v;
+LL +     let V3 { z: val, .. } = v;
+   |
 
 error[E0063]: missing fields `x` and `y` in initializer of `V3`
   --> $DIR/issue-102806.rs:17:13
diff --git a/tests/ui/parser/issues/issue-103748-ICE-wrong-braces.stderr b/tests/ui/parser/issues/issue-103748-ICE-wrong-braces.stderr
index b0d8b03ae08..97a73b4fd5e 100644
--- a/tests/ui/parser/issues/issue-103748-ICE-wrong-braces.stderr
+++ b/tests/ui/parser/issues/issue-103748-ICE-wrong-braces.stderr
@@ -6,8 +6,9 @@ LL | struct Apple((Apple, Option(Banana ? Citron)));
    |
 help: if you meant to express that the type might not contain a value, use the `Option` wrapper type
    |
-LL | struct Apple((Apple, Option(Option<Banana > Citron)));
-   |                             +++++++       ~
+LL - struct Apple((Apple, Option(Banana ? Citron)));
+LL + struct Apple((Apple, Option(Option<Banana > Citron)));
+   |
 
 error: expected one of `)` or `,`, found `Citron`
   --> $DIR/issue-103748-ICE-wrong-braces.rs:3:38
@@ -31,8 +32,9 @@ LL | struct Apple((Apple, Option(Banana ? Citron)));
    |
 help: use angle brackets instead
    |
-LL | struct Apple((Apple, Option<Banana ? Citron>));
-   |                            ~               ~
+LL - struct Apple((Apple, Option(Banana ? Citron)));
+LL + struct Apple((Apple, Option<Banana ? Citron>));
+   |
 
 error[E0072]: recursive type `Apple` has infinite size
   --> $DIR/issue-103748-ICE-wrong-braces.rs:3:1
diff --git a/tests/ui/parser/issues/issue-104867-inc-dec-2.stderr b/tests/ui/parser/issues/issue-104867-inc-dec-2.stderr
index 4e2d0546851..f2412dda050 100644
--- a/tests/ui/parser/issues/issue-104867-inc-dec-2.stderr
+++ b/tests/ui/parser/issues/issue-104867-inc-dec-2.stderr
@@ -6,8 +6,9 @@ LL |     let _ = i + ++i;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = i + { i += 1; i };
-   |                 ~   +++++++++
+LL -     let _ = i + ++i;
+LL +     let _ = i + { i += 1; i };
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:8:13
@@ -17,8 +18,9 @@ LL |     let _ = ++i + i;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { i += 1; i } + i;
-   |             ~   +++++++++
+LL -     let _ = ++i + i;
+LL +     let _ = { i += 1; i } + i;
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:13:13
@@ -28,8 +30,9 @@ LL |     let _ = ++i + ++i;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { i += 1; i } + ++i;
-   |             ~   +++++++++
+LL -     let _ = ++i + ++i;
+LL +     let _ = { i += 1; i } + ++i;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:18:18
@@ -45,8 +48,9 @@ LL |     let _ = i++ + i;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { let tmp = i; i += 1; tmp } + i;
-   |             +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = i++ + i;
+LL +     let _ = { let tmp = i; i += 1; tmp } + i;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:29:14
@@ -56,8 +60,9 @@ LL |     let _ = i++ + i++;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { let tmp = i; i += 1; tmp } + i++;
-   |             +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = i++ + i++;
+LL +     let _ = { let tmp = i; i += 1; tmp } + i++;
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:34:13
@@ -67,8 +72,9 @@ LL |     let _ = ++i + i++;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { i += 1; i } + i++;
-   |             ~   +++++++++
+LL -     let _ = ++i + i++;
+LL +     let _ = { i += 1; i } + i++;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:39:14
@@ -78,8 +84,9 @@ LL |     let _ = i++ + ++i;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { let tmp = i; i += 1; tmp } + ++i;
-   |             +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = i++ + ++i;
+LL +     let _ = { let tmp = i; i += 1; tmp } + ++i;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:44:24
@@ -89,8 +96,9 @@ LL |     let _ = (1 + 2 + i)++;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = { let tmp = (1 + 2 + i); (1 + 2 + i) += 1; tmp };
-   |             +++++++++++            ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = (1 + 2 + i)++;
+LL +     let _ = { let tmp = (1 + 2 + i); (1 + 2 + i) += 1; tmp };
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec-2.rs:49:15
@@ -100,8 +108,9 @@ LL |     let _ = (i++ + 1) + 2;
    |
 help: use `+= 1` instead
    |
-LL |     let _ = ({ let tmp = i; i += 1; tmp } + 1) + 2;
-   |              +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = (i++ + 1) + 2;
+LL +     let _ = ({ let tmp = i; i += 1; tmp } + 1) + 2;
+   |
 
 error: aborting due to 10 previous errors
 
diff --git a/tests/ui/parser/issues/issue-104867-inc-dec.stderr b/tests/ui/parser/issues/issue-104867-inc-dec.stderr
index 78bfd3e82f0..309f8b56933 100644
--- a/tests/ui/parser/issues/issue-104867-inc-dec.stderr
+++ b/tests/ui/parser/issues/issue-104867-inc-dec.stderr
@@ -6,8 +6,9 @@ LL |     i++;
    |
 help: use `+= 1` instead
    |
-LL |     i += 1;
-   |       ~~~~
+LL -     i++;
+LL +     i += 1;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec.rs:12:8
@@ -17,8 +18,9 @@ LL |     s.x++;
    |
 help: use `+= 1` instead
    |
-LL |     s.x += 1;
-   |         ~~~~
+LL -     s.x++;
+LL +     s.x += 1;
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec.rs:17:9
@@ -28,8 +30,9 @@ LL |     if i++ == 1 {}
    |
 help: use `+= 1` instead
    |
-LL |     if { let tmp = i; i += 1; tmp } == 1 {}
-   |        +++++++++++  ~~~~~~~~~~~~~~~
+LL -     if i++ == 1 {}
+LL +     if { let tmp = i; i += 1; tmp } == 1 {}
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/issue-104867-inc-dec.rs:22:5
@@ -51,8 +54,9 @@ LL |     if ++i == 1 { }
    |
 help: use `+= 1` instead
    |
-LL |     if { i += 1; i } == 1 { }
-   |        ~   +++++++++
+LL -     if ++i == 1 { }
+LL +     if { i += 1; i } == 1 { }
+   |
 
 error: Rust has no postfix increment operator
   --> $DIR/issue-104867-inc-dec.rs:33:6
@@ -62,8 +66,9 @@ LL |     i++;
    |
 help: use `+= 1` instead
    |
-LL |     i += 1;
-   |       ~~~~
+LL -     i++;
+LL +     i += 1;
+   |
 
 error: Rust has no prefix increment operator
   --> $DIR/issue-104867-inc-dec.rs:41:5
diff --git a/tests/ui/parser/issues/issue-105366.stderr b/tests/ui/parser/issues/issue-105366.stderr
index 18c04dfaf20..d8c79a0e0ea 100644
--- a/tests/ui/parser/issues/issue-105366.stderr
+++ b/tests/ui/parser/issues/issue-105366.stderr
@@ -6,8 +6,9 @@ LL | fn From<i32> for Foo {
    |
 help: replace `fn` with `impl` here
    |
-LL | impl From<i32> for Foo {
-   | ~~~~
+LL - fn From<i32> for Foo {
+LL + impl From<i32> for Foo {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/issues/issue-108495-dec.stderr b/tests/ui/parser/issues/issue-108495-dec.stderr
index 85b29038f7c..b058dae4a6f 100644
--- a/tests/ui/parser/issues/issue-108495-dec.stderr
+++ b/tests/ui/parser/issues/issue-108495-dec.stderr
@@ -12,8 +12,9 @@ LL |     let _ = i-- + i--;
    |
 help: use `-= 1` instead
    |
-LL |     let _ = { let tmp = i; i -= 1; tmp } + i--;
-   |             +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = i-- + i--;
+LL +     let _ = { let tmp = i; i -= 1; tmp } + i--;
+   |
 
 error: Rust has no postfix decrement operator
   --> $DIR/issue-108495-dec.rs:14:20
@@ -29,8 +30,9 @@ LL |     let _ = i-- + --i;
    |
 help: use `-= 1` instead
    |
-LL |     let _ = { let tmp = i; i -= 1; tmp } + --i;
-   |             +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = i-- + --i;
+LL +     let _ = { let tmp = i; i -= 1; tmp } + --i;
+   |
 
 error: Rust has no postfix decrement operator
   --> $DIR/issue-108495-dec.rs:24:24
@@ -40,8 +42,9 @@ LL |     let _ = (1 + 2 + i)--;
    |
 help: use `-= 1` instead
    |
-LL |     let _ = { let tmp = (1 + 2 + i); (1 + 2 + i) -= 1; tmp };
-   |             +++++++++++            ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = (1 + 2 + i)--;
+LL +     let _ = { let tmp = (1 + 2 + i); (1 + 2 + i) -= 1; tmp };
+   |
 
 error: Rust has no postfix decrement operator
   --> $DIR/issue-108495-dec.rs:29:15
@@ -51,8 +54,9 @@ LL |     let _ = (i-- + 1) + 2;
    |
 help: use `-= 1` instead
    |
-LL |     let _ = ({ let tmp = i; i -= 1; tmp } + 1) + 2;
-   |              +++++++++++  ~~~~~~~~~~~~~~~
+LL -     let _ = (i-- + 1) + 2;
+LL +     let _ = ({ let tmp = i; i -= 1; tmp } + 1) + 2;
+   |
 
 error: Rust has no postfix decrement operator
   --> $DIR/issue-108495-dec.rs:35:10
@@ -62,8 +66,9 @@ LL |         i--;
    |
 help: use `-= 1` instead
    |
-LL |         i -= 1;
-   |           ~~~~
+LL -         i--;
+LL +         i -= 1;
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/parser/issues/issue-110014.stderr b/tests/ui/parser/issues/issue-110014.stderr
index 7f1dd592e12..57420bb3496 100644
--- a/tests/ui/parser/issues/issue-110014.stderr
+++ b/tests/ui/parser/issues/issue-110014.stderr
@@ -6,8 +6,9 @@ LL | fn`2222222222222222222222222222222222222222() {}
    |
 help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
    |
-LL | fn'2222222222222222222222222222222222222222() {}
-   |   ~
+LL - fn`2222222222222222222222222222222222222222() {}
+LL + fn'2222222222222222222222222222222222222222() {}
+   |
 
 error: expected identifier, found `2222222222222222222222222222222222222222`
   --> $DIR/issue-110014.rs:1:4
diff --git a/tests/ui/parser/issues/issue-111416.stderr b/tests/ui/parser/issues/issue-111416.stderr
index 36f6c5b018f..50ff209afff 100644
--- a/tests/ui/parser/issues/issue-111416.stderr
+++ b/tests/ui/parser/issues/issue-111416.stderr
@@ -6,8 +6,9 @@ LL |     let my = monad_bind(mx, T: Try);
    |
 help: if `monad_bind` is a struct, use braces as delimiters
    |
-LL |     let my = monad_bind { mx, T: Try };
-   |                         ~            ~
+LL -     let my = monad_bind(mx, T: Try);
+LL +     let my = monad_bind { mx, T: Try };
+   |
 help: if `monad_bind` is a function, use the arguments directly
    |
 LL -     let my = monad_bind(mx, T: Try);
diff --git a/tests/ui/parser/issues/issue-118530-ice.stderr b/tests/ui/parser/issues/issue-118530-ice.stderr
index 3519fb8777f..72c0397e9c9 100644
--- a/tests/ui/parser/issues/issue-118530-ice.stderr
+++ b/tests/ui/parser/issues/issue-118530-ice.stderr
@@ -42,8 +42,9 @@ LL |     attr::fn bar() -> String {
    = help: the `.` operator will dereference the value if needed
 help: try using `.` instead
    |
-LL |     attr::fn bar() . String {
-   |                    ~
+LL -     attr::fn bar() -> String {
+LL +     attr::fn bar() . String {
+   |
 
 error: expected one of `(`, `.`, `::`, `;`, `?`, `}`, or an operator, found `{`
   --> $DIR/issue-118530-ice.rs:5:30
diff --git a/tests/ui/parser/issues/issue-17718-const-mut.stderr b/tests/ui/parser/issues/issue-17718-const-mut.stderr
index 54b819c3cfb..16eb773e7f6 100644
--- a/tests/ui/parser/issues/issue-17718-const-mut.stderr
+++ b/tests/ui/parser/issues/issue-17718-const-mut.stderr
@@ -6,7 +6,8 @@ LL | mut
    |
 help: you might want to declare a static instead
    |
-LL | static
+LL - const
+LL + static
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/parser/issues/issue-23620-invalid-escapes.stderr b/tests/ui/parser/issues/issue-23620-invalid-escapes.stderr
index 4a3743579e7..0cedc178001 100644
--- a/tests/ui/parser/issues/issue-23620-invalid-escapes.stderr
+++ b/tests/ui/parser/issues/issue-23620-invalid-escapes.stderr
@@ -90,8 +90,9 @@ LL |     let _ = "\u8f";
    |
 help: format of unicode escape sequences uses braces
    |
-LL |     let _ = "\u{8f}";
-   |              ~~~~~~
+LL -     let _ = "\u8f";
+LL +     let _ = "\u{8f}";
+   |
 
 error: aborting due to 13 previous errors
 
diff --git a/tests/ui/parser/issues/issue-24375.stderr b/tests/ui/parser/issues/issue-24375.stderr
index 03cd33f1875..2af57a52035 100644
--- a/tests/ui/parser/issues/issue-24375.stderr
+++ b/tests/ui/parser/issues/issue-24375.stderr
@@ -7,8 +7,9 @@ LL |         tmp[0] => {}
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == tmp[0] => {}
-   |         ~~~ ++++++++++++++++
+LL -         tmp[0] => {}
+LL +         val if val == tmp[0] => {}
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = tmp[0];
diff --git a/tests/ui/parser/issues/issue-30318.stderr b/tests/ui/parser/issues/issue-30318.stderr
index 56bc200db1d..cd03bd5fecc 100644
--- a/tests/ui/parser/issues/issue-30318.stderr
+++ b/tests/ui/parser/issues/issue-30318.stderr
@@ -9,8 +9,9 @@ LL | fn bar() { }
    |
 help: to annotate the function, change the doc comment from inner to outer style
    |
-LL | /// Misplaced comment...
-   |   ~
+LL - //! Misplaced comment...
+LL + /// Misplaced comment...
+   |
 
 error: an inner attribute is not permitted in this context
   --> $DIR/issue-30318.rs:9:1
@@ -38,8 +39,9 @@ LL | fn bat() { }
    |
 help: to annotate the function, change the doc comment from inner to outer style
    |
-LL | /** Misplaced comment... */
-   |   ~
+LL - /*! Misplaced comment... */
+LL + /** Misplaced comment... */
+   |
 
 error[E0753]: expected outer doc comment
   --> $DIR/issue-30318.rs:19:1
diff --git a/tests/ui/parser/issues/issue-32214.stderr b/tests/ui/parser/issues/issue-32214.stderr
index 2ef4305dfd0..5ccd651bb96 100644
--- a/tests/ui/parser/issues/issue-32214.stderr
+++ b/tests/ui/parser/issues/issue-32214.stderr
@@ -8,8 +8,9 @@ LL | pub fn test<W, I: Trait<Item=(), W> >() {}
    |
 help: move the constraint after the generic argument
    |
-LL | pub fn test<W, I: Trait<W, Item = ()> >() {}
-   |                        ~~~~~~~~~~~~~~
+LL - pub fn test<W, I: Trait<Item=(), W> >() {}
+LL + pub fn test<W, I: Trait<W, Item = ()> >() {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/issues/issue-34255-1.stderr b/tests/ui/parser/issues/issue-34255-1.stderr
index 1e72f040b03..cd2baaee408 100644
--- a/tests/ui/parser/issues/issue-34255-1.stderr
+++ b/tests/ui/parser/issues/issue-34255-1.stderr
@@ -6,8 +6,9 @@ LL |     Test::Drill(field: 42);
    |
 help: if `Test::Drill` is a struct, use braces as delimiters
    |
-LL |     Test::Drill { field: 42 };
-   |                 ~           ~
+LL -     Test::Drill(field: 42);
+LL +     Test::Drill { field: 42 };
+   |
 help: if `Test::Drill` is a function, use the arguments directly
    |
 LL -     Test::Drill(field: 42);
diff --git a/tests/ui/parser/issues/issue-44406.stderr b/tests/ui/parser/issues/issue-44406.stderr
index 78cde9b6dca..b2367ce15ea 100644
--- a/tests/ui/parser/issues/issue-44406.stderr
+++ b/tests/ui/parser/issues/issue-44406.stderr
@@ -10,8 +10,9 @@ LL |     foo!(true);
    = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: if `bar` is a struct, use braces as delimiters
    |
-LL |         bar { baz: $rest }
-   |             ~            ~
+LL -         bar(baz: $rest)
+LL +         bar { baz: $rest }
+   |
 help: if `bar` is a function, use the arguments directly
    |
 LL -         bar(baz: $rest)
diff --git a/tests/ui/parser/issues/issue-57684.stderr b/tests/ui/parser/issues/issue-57684.stderr
index 39e1c8cd7cc..5fc55efff0a 100644
--- a/tests/ui/parser/issues/issue-57684.stderr
+++ b/tests/ui/parser/issues/issue-57684.stderr
@@ -6,8 +6,9 @@ LL |     let _ = X { f1 = 5 };
    |
 help: replace equals symbol with a colon
    |
-LL |     let _ = X { f1: 5 };
-   |                   ~
+LL -     let _ = X { f1 = 5 };
+LL +     let _ = X { f1: 5 };
+   |
 
 error: expected `:`, found `=`
   --> $DIR/issue-57684.rs:32:12
@@ -17,8 +18,9 @@ LL |         f1 = 5,
    |
 help: replace equals symbol with a colon
    |
-LL |         f1: 5,
-   |           ~
+LL -         f1 = 5,
+LL +         f1: 5,
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/issues/issue-64732.stderr b/tests/ui/parser/issues/issue-64732.stderr
index 7ec2df6d3bf..d9f8091d2df 100644
--- a/tests/ui/parser/issues/issue-64732.stderr
+++ b/tests/ui/parser/issues/issue-64732.stderr
@@ -6,8 +6,9 @@ LL |     let _foo = b'hello\0';
    |
 help: if you meant to write a byte string literal, use double quotes
    |
-LL |     let _foo = b"hello\0";
-   |                ~~       ~
+LL -     let _foo = b'hello\0';
+LL +     let _foo = b"hello\0";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/issue-64732.rs:6:16
@@ -17,8 +18,9 @@ LL |     let _bar = 'hello';
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _bar = "hello";
-   |                ~     ~
+LL -     let _bar = 'hello';
+LL +     let _bar = "hello";
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr b/tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr
index 49d091cf391..767f63d6958 100644
--- a/tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr
+++ b/tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr
@@ -6,8 +6,9 @@ LL |     auto n = 0;
    |
 help: write `let` instead of `auto` to introduce a new variable
    |
-LL |     let n = 0;
-   |     ~~~
+LL -     auto n = 0;
+LL +     let n = 0;
+   |
 
 error: invalid variable declaration
   --> $DIR/issue-65257-invalid-var-decl-recovery.rs:4:5
@@ -17,8 +18,9 @@ LL |     auto m;
    |
 help: write `let` instead of `auto` to introduce a new variable
    |
-LL |     let m;
-   |     ~~~
+LL -     auto m;
+LL +     let m;
+   |
 
 error: invalid variable declaration
   --> $DIR/issue-65257-invalid-var-decl-recovery.rs:8:5
@@ -28,8 +30,9 @@ LL |     var n = 0;
    |
 help: write `let` instead of `var` to introduce a new variable
    |
-LL |     let n = 0;
-   |     ~~~
+LL -     var n = 0;
+LL +     let n = 0;
+   |
 
 error: invalid variable declaration
   --> $DIR/issue-65257-invalid-var-decl-recovery.rs:10:5
@@ -39,8 +42,9 @@ LL |     var m;
    |
 help: write `let` instead of `var` to introduce a new variable
    |
-LL |     let m;
-   |     ~~~
+LL -     var m;
+LL +     let m;
+   |
 
 error: invalid variable declaration
   --> $DIR/issue-65257-invalid-var-decl-recovery.rs:14:5
@@ -50,8 +54,9 @@ LL |     mut n = 0;
    |
 help: missing keyword
    |
-LL |     let mut n = 0;
-   |     ~~~~~~~
+LL -     mut n = 0;
+LL +     let mut n = 0;
+   |
 
 error: invalid variable declaration
   --> $DIR/issue-65257-invalid-var-decl-recovery.rs:16:5
@@ -61,8 +66,9 @@ LL |     mut var;
    |
 help: missing keyword
    |
-LL |     let mut var;
-   |     ~~~~~~~
+LL -     mut var;
+LL +     let mut var;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/issue-65257-invalid-var-decl-recovery.rs:20:33
diff --git a/tests/ui/parser/issues/issue-68730.stderr b/tests/ui/parser/issues/issue-68730.stderr
index 9bd98287db3..838a6569bdc 100644
--- a/tests/ui/parser/issues/issue-68730.stderr
+++ b/tests/ui/parser/issues/issue-68730.stderr
@@ -23,8 +23,9 @@ LL | enum␀em␀˂˂
    = note: character appears once more
 help: Unicode character '˂' (Modifier Letter Left Arrowhead) looks like '<' (Less-Than Sign), but it is not
    |
-LL | enum␀em␀<<
-   |         ~~
+LL - enum␀em␀˂˂
+LL + enum␀em␀<<
+   |
 
 error: unknown start of token: \u{2c2}
   --> $DIR/issue-68730.rs:5:10
@@ -34,8 +35,9 @@ LL | enum␀em␀˂˂
    |
 help: Unicode character '˂' (Modifier Letter Left Arrowhead) looks like '<' (Less-Than Sign), but it is not
    |
-LL | enum␀em␀˂<
-   |          ~
+LL - enum␀em␀˂˂
+LL + enum␀em␀˂<
+   |
 
 error: expected one of `#`, `>`, `const`, identifier, or lifetime, found `<`
   --> $DIR/issue-68730.rs:5:10
diff --git a/tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr b/tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr
index c2c0faa21d1..9c632a8332a 100644
--- a/tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr
+++ b/tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr
@@ -12,8 +12,9 @@ LL |     fn foo(&mur Self) {}
    |
 help: there is a keyword `mut` with a similar name
    |
-LL |     fn foo(&mut Self) {}
-   |             ~~~
+LL -     fn foo(&mur Self) {}
+LL +     fn foo(&mut Self) {}
+   |
 
 error: unexpected lifetime `'static` in pattern
   --> $DIR/issue-70549-resolve-after-recovered-self-ctor.rs:8:13
@@ -41,8 +42,9 @@ LL |     fn bar(&'static mur Self) {}
    |
 help: there is a keyword `mut` with a similar name
    |
-LL |     fn bar(&'static mut Self) {}
-   |                     ~~~
+LL -     fn bar(&'static mur Self) {}
+LL +     fn bar(&'static mut Self) {}
+   |
 
 error: expected one of `:`, `@`, or `|`, found keyword `Self`
   --> $DIR/issue-70549-resolve-after-recovered-self-ctor.rs:14:17
@@ -52,8 +54,9 @@ LL |     fn baz(&mur Self @ _) {}
    |
 help: there is a keyword `mut` with a similar name
    |
-LL |     fn baz(&mut Self @ _) {}
-   |             ~~~
+LL -     fn baz(&mur Self @ _) {}
+LL +     fn baz(&mut Self @ _) {}
+   |
 
 error[E0533]: expected unit struct, found self constructor `Self`
   --> $DIR/issue-70549-resolve-after-recovered-self-ctor.rs:4:17
diff --git a/tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr b/tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr
index 2f8728bd78b..6b8f8e4fe4e 100644
--- a/tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr
+++ b/tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr
@@ -6,8 +6,9 @@ LL | fn x<'a>(x: &mut 'a i32){}
    |
 help: place the lifetime before `mut`
    |
-LL | fn x<'a>(x: &'a mut i32){}
-   |             ~~~~~~~
+LL - fn x<'a>(x: &mut 'a i32){}
+LL + fn x<'a>(x: &'a mut i32){}
+   |
 
 error[E0178]: expected a path on the left-hand side of `+`, not `&mut 'a`
   --> $DIR/issue-73568-lifetime-after-mut.rs:14:13
@@ -32,8 +33,9 @@ LL | mac!('a);
    = note: this error originates in the macro `mac` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: place the lifetime before `mut`
    |
-LL |         fn w<$lt>(w: &$lt mut i32) {}
-   |                      ~~~~~~~~
+LL -         fn w<$lt>(w: &mut $lt i32) {}
+LL +         fn w<$lt>(w: &$lt mut i32) {}
+   |
 
 error[E0423]: expected value, found trait `Send`
   --> $DIR/issue-73568-lifetime-after-mut.rs:17:28
diff --git a/tests/ui/parser/issues/issue-84117.stderr b/tests/ui/parser/issues/issue-84117.stderr
index 9f603b84434..e358bc4a2fb 100644
--- a/tests/ui/parser/issues/issue-84117.stderr
+++ b/tests/ui/parser/issues/issue-84117.stderr
@@ -12,8 +12,9 @@ LL |     let outer_local:e_outer<&str, { let inner_local:e_inner<&str>, }
    |                                                                 +
 help: use `=` if you meant to assign
    |
-LL |     let outer_local:e_outer<&str, { let inner_local =e_inner<&str, }
-   |                                                     ~
+LL -     let outer_local:e_outer<&str, { let inner_local:e_inner<&str, }
+LL +     let outer_local:e_outer<&str, { let inner_local =e_inner<&str, }
+   |
 
 error: expected one of `!`, `.`, `::`, `;`, `?`, `else`, `{`, or an operator, found `,`
   --> $DIR/issue-84117.rs:2:65
@@ -36,8 +37,9 @@ LL |     let outer_local:e_outer<&str, { let inner_local:e_inner<&str, }>
    |                                                                    +
 help: use `=` if you meant to assign
    |
-LL |     let outer_local =e_outer<&str, { let inner_local:e_inner<&str, }
-   |                     ~
+LL -     let outer_local:e_outer<&str, { let inner_local:e_inner<&str, }
+LL +     let outer_local =e_outer<&str, { let inner_local:e_inner<&str, }
+   |
 
 error: expected one of `>`, a const expression, lifetime, or type, found `}`
   --> $DIR/issue-84117.rs:2:67
@@ -54,8 +56,9 @@ LL |     let outer_local:e_outer<&str, { let inner_local:e_inner<&str>, }
    |                                                                 +
 help: use `=` if you meant to assign
    |
-LL |     let outer_local:e_outer<&str, { let inner_local =e_inner<&str, }
-   |                                                     ~
+LL -     let outer_local:e_outer<&str, { let inner_local:e_inner<&str, }
+LL +     let outer_local:e_outer<&str, { let inner_local =e_inner<&str, }
+   |
 
 error: expected one of `!`, `.`, `::`, `;`, `?`, `else`, `{`, or an operator, found `,`
   --> $DIR/issue-84117.rs:2:65
diff --git a/tests/ui/parser/issues/issue-84148-1.stderr b/tests/ui/parser/issues/issue-84148-1.stderr
index 9261067c221..ebe9807dfe3 100644
--- a/tests/ui/parser/issues/issue-84148-1.stderr
+++ b/tests/ui/parser/issues/issue-84148-1.stderr
@@ -6,8 +6,9 @@ LL | fn f(t:for<>t?)
    |
 help: if you meant to express that the type might not contain a value, use the `Option` wrapper type
    |
-LL | fn f(t:Option<for<>t>)
-   |        +++++++      ~
+LL - fn f(t:for<>t?)
+LL + fn f(t:Option<for<>t>)
+   |
 
 error: expected one of `->`, `where`, or `{`, found `<eof>`
   --> $DIR/issue-84148-1.rs:1:15
diff --git a/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr b/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr
index b6e24faf5da..fa848368945 100644
--- a/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr
+++ b/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr
@@ -8,8 +8,9 @@ LL |         Foo:Bar => {}
    |
 help: maybe write a path separator here
    |
-LL |         Foo::Bar => {}
-   |            ~~
+LL -         Foo:Bar => {}
+LL +         Foo::Bar => {}
+   |
 
 error: expected one of `!`, `(`, `...`, `..=`, `..`, `::`, `{`, or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:23:17
@@ -21,8 +22,9 @@ LL |         qux::Foo:Bar => {}
    |
 help: maybe write a path separator here
    |
-LL |         qux::Foo::Bar => {}
-   |                 ~~
+LL -         qux::Foo:Bar => {}
+LL +         qux::Foo::Bar => {}
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:29:12
@@ -34,8 +36,9 @@ LL |         qux:Foo::Baz => {}
    |
 help: maybe write a path separator here
    |
-LL |         qux::Foo::Baz => {}
-   |            ~~
+LL -         qux:Foo::Baz => {}
+LL +         qux::Foo::Baz => {}
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:35:12
@@ -47,8 +50,9 @@ LL |         qux: Foo::Baz if true => {}
    |
 help: maybe write a path separator here
    |
-LL |         qux::Foo::Baz if true => {}
-   |            ~~
+LL -         qux: Foo::Baz if true => {}
+LL +         qux::Foo::Baz if true => {}
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:40:15
@@ -60,8 +64,9 @@ LL |     if let Foo:Bar = f() {
    |
 help: maybe write a path separator here
    |
-LL |     if let Foo::Bar = f() {
-   |               ~~
+LL -     if let Foo:Bar = f() {
+LL +     if let Foo::Bar = f() {
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:49:16
@@ -73,8 +78,9 @@ LL |         ref qux: Foo::Baz => {}
    |
 help: maybe write a path separator here
    |
-LL |         ref qux::Foo::Baz => {}
-   |                ~~
+LL -         ref qux: Foo::Baz => {}
+LL +         ref qux::Foo::Baz => {}
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:58:16
@@ -86,8 +92,9 @@ LL |         mut qux: Foo::Baz => {}
    |
 help: maybe write a path separator here
    |
-LL |         mut qux::Foo::Baz => {}
-   |                ~~
+LL -         mut qux: Foo::Baz => {}
+LL +         mut qux::Foo::Baz => {}
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:69:12
@@ -99,8 +106,9 @@ LL |         Foo:Bar::Baz => {}
    |
 help: maybe write a path separator here
    |
-LL |         Foo::Bar::Baz => {}
-   |            ~~
+LL -         Foo:Bar::Baz => {}
+LL +         Foo::Bar::Baz => {}
+   |
 
 error: expected one of `@` or `|`, found `:`
   --> $DIR/issue-87086-colon-path-sep.rs:75:12
@@ -112,8 +120,9 @@ LL |         Foo:Bar => {}
    |
 help: maybe write a path separator here
    |
-LL |         Foo::Bar => {}
-   |            ~~
+LL -         Foo:Bar => {}
+LL +         Foo::Bar => {}
+   |
 
 warning: irrefutable `if let` pattern
   --> $DIR/issue-87086-colon-path-sep.rs:40:8
diff --git a/tests/ui/parser/issues/issue-90993.stderr b/tests/ui/parser/issues/issue-90993.stderr
index a18e93f1f1a..e9ecc59ec49 100644
--- a/tests/ui/parser/issues/issue-90993.stderr
+++ b/tests/ui/parser/issues/issue-90993.stderr
@@ -6,12 +6,14 @@ LL |     ...=.
    |
 help: use `..` for an exclusive range
    |
-LL |     ..=.
-   |     ~~
+LL -     ...=.
+LL +     ..=.
+   |
 help: or `..=` for an inclusive range
    |
-LL |     ..==.
-   |     ~~~
+LL -     ...=.
+LL +     ..==.
+   |
 
 error: unexpected `=` after inclusive range
   --> $DIR/issue-90993.rs:2:5
@@ -22,8 +24,9 @@ LL |     ...=.
    = note: inclusive ranges end with a single equals sign (`..=`)
 help: use `..=` instead
    |
-LL |     ..=.
-   |     ~~~
+LL -     ...=.
+LL +     ..=.
+   |
 
 error: expected one of `-`, `;`, `}`, or path, found `.`
   --> $DIR/issue-90993.rs:2:9
diff --git a/tests/ui/parser/issues/issue-99625-enum-struct-mutually-exclusive.stderr b/tests/ui/parser/issues/issue-99625-enum-struct-mutually-exclusive.stderr
index c98b8fa1f1e..a4e0efcaeb0 100644
--- a/tests/ui/parser/issues/issue-99625-enum-struct-mutually-exclusive.stderr
+++ b/tests/ui/parser/issues/issue-99625-enum-struct-mutually-exclusive.stderr
@@ -6,8 +6,9 @@ LL | pub enum struct Range {
    |
 help: replace `enum struct` with
    |
-LL | pub enum Range {
-   |     ~~~~
+LL - pub enum struct Range {
+LL + pub enum Range {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/issues/issue-99910-const-let-mutually-exclusive.stderr b/tests/ui/parser/issues/issue-99910-const-let-mutually-exclusive.stderr
index 1ccf44a350d..73043de5290 100644
--- a/tests/ui/parser/issues/issue-99910-const-let-mutually-exclusive.stderr
+++ b/tests/ui/parser/issues/issue-99910-const-let-mutually-exclusive.stderr
@@ -6,8 +6,9 @@ LL |     const let _FOO: i32 = 123;
    |
 help: remove `let`
    |
-LL |     const _FOO: i32 = 123;
-   |     ~~~~~
+LL -     const let _FOO: i32 = 123;
+LL +     const _FOO: i32 = 123;
+   |
 
 error: `const` and `let` are mutually exclusive
   --> $DIR/issue-99910-const-let-mutually-exclusive.rs:6:5
@@ -17,8 +18,9 @@ LL |     let const _BAR: i32 = 123;
    |
 help: remove `let`
    |
-LL |     const _BAR: i32 = 123;
-   |     ~~~~~
+LL -     let const _BAR: i32 = 123;
+LL +     const _BAR: i32 = 123;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/issues/recover-ge-as-fat-arrow.stderr b/tests/ui/parser/issues/recover-ge-as-fat-arrow.stderr
index 2df5cca24f0..997d080f1de 100644
--- a/tests/ui/parser/issues/recover-ge-as-fat-arrow.stderr
+++ b/tests/ui/parser/issues/recover-ge-as-fat-arrow.stderr
@@ -17,8 +17,9 @@ LL |         _ => { let _: u16 = 2u8; }
    |
 help: change the type of the numeric literal from `u8` to `u16`
    |
-LL |         _ => { let _: u16 = 2u16; }
-   |                              ~~~
+LL -         _ => { let _: u16 = 2u8; }
+LL +         _ => { let _: u16 = 2u16; }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/item-kw-case-mismatch.stderr b/tests/ui/parser/item-kw-case-mismatch.stderr
index 36df72b5cad..df39eb10fdb 100644
--- a/tests/ui/parser/item-kw-case-mismatch.stderr
+++ b/tests/ui/parser/item-kw-case-mismatch.stderr
@@ -6,8 +6,9 @@ LL | Use std::ptr::read;
    |
 help: write it in the correct case (notice the capitalization difference)
    |
-LL | use std::ptr::read;
-   | ~~~
+LL - Use std::ptr::read;
+LL + use std::ptr::read;
+   |
 
 error: keyword `use` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:8:1
@@ -17,8 +18,9 @@ LL | USE std::ptr::write;
    |
 help: write it in the correct case
    |
-LL | use std::ptr::write;
-   | ~~~
+LL - USE std::ptr::write;
+LL + use std::ptr::write;
+   |
 
 error: keyword `fn` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:10:7
@@ -28,8 +30,9 @@ LL | async Fn _a() {}
    |
 help: write it in the correct case (notice the capitalization difference)
    |
-LL | async fn _a() {}
-   |       ~~
+LL - async Fn _a() {}
+LL + async fn _a() {}
+   |
 
 error: keyword `fn` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:13:1
@@ -39,8 +42,9 @@ LL | Fn _b() {}
    |
 help: write it in the correct case (notice the capitalization difference)
    |
-LL | fn _b() {}
-   | ~~
+LL - Fn _b() {}
+LL + fn _b() {}
+   |
 
 error: keyword `async` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:16:1
@@ -50,8 +54,9 @@ LL | aSYNC fN _c() {}
    |
 help: write it in the correct case
    |
-LL | async fN _c() {}
-   | ~~~~~
+LL - aSYNC fN _c() {}
+LL + async fN _c() {}
+   |
 
 error: keyword `fn` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:16:7
@@ -61,8 +66,9 @@ LL | aSYNC fN _c() {}
    |
 help: write it in the correct case
    |
-LL | aSYNC fn _c() {}
-   |       ~~
+LL - aSYNC fN _c() {}
+LL + aSYNC fn _c() {}
+   |
 
 error: keyword `async` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:20:1
@@ -72,8 +78,9 @@ LL | Async fn _d() {}
    |
 help: write it in the correct case
    |
-LL | async fn _d() {}
-   | ~~~~~
+LL - Async fn _d() {}
+LL + async fn _d() {}
+   |
 
 error: keyword `const` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:23:1
@@ -83,8 +90,9 @@ LL | CONST UNSAFE FN _e() {}
    |
 help: write it in the correct case
    |
-LL | const UNSAFE FN _e() {}
-   | ~~~~~
+LL - CONST UNSAFE FN _e() {}
+LL + const UNSAFE FN _e() {}
+   |
 
 error: keyword `unsafe` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:23:7
@@ -94,8 +102,9 @@ LL | CONST UNSAFE FN _e() {}
    |
 help: write it in the correct case
    |
-LL | CONST unsafe FN _e() {}
-   |       ~~~~~~
+LL - CONST UNSAFE FN _e() {}
+LL + CONST unsafe FN _e() {}
+   |
 
 error: keyword `fn` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:23:14
@@ -105,8 +114,9 @@ LL | CONST UNSAFE FN _e() {}
    |
 help: write it in the correct case
    |
-LL | CONST UNSAFE fn _e() {}
-   |              ~~
+LL - CONST UNSAFE FN _e() {}
+LL + CONST UNSAFE fn _e() {}
+   |
 
 error: keyword `unsafe` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:28:1
@@ -116,8 +126,9 @@ LL | unSAFE EXTern "C" fn _f() {}
    |
 help: write it in the correct case
    |
-LL | unsafe EXTern "C" fn _f() {}
-   | ~~~~~~
+LL - unSAFE EXTern "C" fn _f() {}
+LL + unsafe EXTern "C" fn _f() {}
+   |
 
 error: keyword `extern` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:28:8
@@ -127,8 +138,9 @@ LL | unSAFE EXTern "C" fn _f() {}
    |
 help: write it in the correct case
    |
-LL | unSAFE extern "C" fn _f() {}
-   |        ~~~~~~
+LL - unSAFE EXTern "C" fn _f() {}
+LL + unSAFE extern "C" fn _f() {}
+   |
 
 error: keyword `extern` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:32:1
@@ -138,8 +150,9 @@ LL | EXTERN "C" FN _g() {}
    |
 help: write it in the correct case
    |
-LL | extern "C" FN _g() {}
-   | ~~~~~~
+LL - EXTERN "C" FN _g() {}
+LL + extern "C" FN _g() {}
+   |
 
 error: keyword `fn` is written in the wrong case
   --> $DIR/item-kw-case-mismatch.rs:32:12
@@ -149,8 +162,9 @@ LL | EXTERN "C" FN _g() {}
    |
 help: write it in the correct case
    |
-LL | EXTERN "C" fn _g() {}
-   |            ~~
+LL - EXTERN "C" FN _g() {}
+LL + EXTERN "C" fn _g() {}
+   |
 
 error: aborting due to 14 previous errors
 
diff --git a/tests/ui/parser/kw-in-trait-bounds.stderr b/tests/ui/parser/kw-in-trait-bounds.stderr
index 3c54e031950..1892d0b6226 100644
--- a/tests/ui/parser/kw-in-trait-bounds.stderr
+++ b/tests/ui/parser/kw-in-trait-bounds.stderr
@@ -6,8 +6,9 @@ LL | fn _f<F: fn(), G>(_: impl fn(), _: &dyn fn())
    |
 help: use `Fn` to refer to the trait (notice the capitalization difference)
    |
-LL | fn _f<F: Fn(), G>(_: impl fn(), _: &dyn fn())
-   |          ~~
+LL - fn _f<F: fn(), G>(_: impl fn(), _: &dyn fn())
+LL + fn _f<F: Fn(), G>(_: impl fn(), _: &dyn fn())
+   |
 
 error: expected identifier, found keyword `fn`
   --> $DIR/kw-in-trait-bounds.rs:3:27
@@ -17,8 +18,9 @@ LL | fn _f<F: fn(), G>(_: impl fn(), _: &dyn fn())
    |
 help: use `Fn` to refer to the trait (notice the capitalization difference)
    |
-LL | fn _f<F: fn(), G>(_: impl Fn(), _: &dyn fn())
-   |                           ~~
+LL - fn _f<F: fn(), G>(_: impl fn(), _: &dyn fn())
+LL + fn _f<F: fn(), G>(_: impl Fn(), _: &dyn fn())
+   |
 
 error: expected identifier, found keyword `fn`
   --> $DIR/kw-in-trait-bounds.rs:3:41
@@ -28,8 +30,9 @@ LL | fn _f<F: fn(), G>(_: impl fn(), _: &dyn fn())
    |
 help: use `Fn` to refer to the trait (notice the capitalization difference)
    |
-LL | fn _f<F: fn(), G>(_: impl fn(), _: &dyn Fn())
-   |                                         ~~
+LL - fn _f<F: fn(), G>(_: impl fn(), _: &dyn fn())
+LL + fn _f<F: fn(), G>(_: impl fn(), _: &dyn Fn())
+   |
 
 error: expected identifier, found keyword `fn`
   --> $DIR/kw-in-trait-bounds.rs:11:4
@@ -39,8 +42,9 @@ LL | G: fn(),
    |
 help: use `Fn` to refer to the trait (notice the capitalization difference)
    |
-LL | G: Fn(),
-   |    ~~
+LL - G: fn(),
+LL + G: Fn(),
+   |
 
 error: expected identifier, found keyword `struct`
   --> $DIR/kw-in-trait-bounds.rs:16:10
diff --git a/tests/ui/parser/lifetime-in-pattern.stderr b/tests/ui/parser/lifetime-in-pattern.stderr
index 55f9e56a429..ffda28b202b 100644
--- a/tests/ui/parser/lifetime-in-pattern.stderr
+++ b/tests/ui/parser/lifetime-in-pattern.stderr
@@ -23,8 +23,9 @@ LL | fn test(self: &'a str) {
    |         +++++
 help: if this is a parameter name, give it a type
    |
-LL | fn test(str: &TypeName) {
-   |         ~~~~~~~~~~~~~~
+LL - fn test(&'a str) {
+LL + fn test(str: &TypeName) {
+   |
 help: if this is a type, explicitly ignore the parameter name
    |
 LL | fn test(_: &'a str) {
diff --git a/tests/ui/parser/lifetime-semicolon.stderr b/tests/ui/parser/lifetime-semicolon.stderr
index 4f8e2835e08..f0e42c36c5a 100644
--- a/tests/ui/parser/lifetime-semicolon.stderr
+++ b/tests/ui/parser/lifetime-semicolon.stderr
@@ -6,8 +6,9 @@ LL | fn foo<'a, 'b>(_x: &mut Foo<'a; 'b>) {}
    |
 help: use a comma to separate type parameters
    |
-LL | fn foo<'a, 'b>(_x: &mut Foo<'a, 'b>) {}
-   |                               ~
+LL - fn foo<'a, 'b>(_x: &mut Foo<'a; 'b>) {}
+LL + fn foo<'a, 'b>(_x: &mut Foo<'a, 'b>) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/macros-no-semicolon-items.stderr b/tests/ui/parser/macros-no-semicolon-items.stderr
index 6d2431c4aec..07fa2439df5 100644
--- a/tests/ui/parser/macros-no-semicolon-items.stderr
+++ b/tests/ui/parser/macros-no-semicolon-items.stderr
@@ -6,8 +6,9 @@ LL | macro_rules! foo()
    |
 help: change the delimiters to curly braces
    |
-LL | macro_rules! foo{}
-   |                 ~~
+LL - macro_rules! foo()
+LL + macro_rules! foo{}
+   |
 help: add a semicolon
    |
 LL | macro_rules! foo();
diff --git a/tests/ui/parser/match-arm-without-body.stderr b/tests/ui/parser/match-arm-without-body.stderr
index 53cf3480dbf..9df8485972f 100644
--- a/tests/ui/parser/match-arm-without-body.stderr
+++ b/tests/ui/parser/match-arm-without-body.stderr
@@ -18,7 +18,8 @@ LL |         (Some(_),)
    |         +        +
 help: ...or a vertical bar to match on multiple alternatives
    |
-LL |         Some(_) |
+LL -         Some(_),
+LL +         Some(_) |
    |
 
 error: unexpected `,` in pattern
diff --git a/tests/ui/parser/match-arm-without-braces.stderr b/tests/ui/parser/match-arm-without-braces.stderr
index 4a4a154d860..70cbdcfde0b 100644
--- a/tests/ui/parser/match-arm-without-braces.stderr
+++ b/tests/ui/parser/match-arm-without-braces.stderr
@@ -8,8 +8,9 @@ LL |         Some(Val::Foo) => 3;
    |
 help: replace `;` with `,` to end a `match` arm expression
    |
-LL |         Some(Val::Foo) => 3,
-   |                            ~
+LL -         Some(Val::Foo) => 3;
+LL +         Some(Val::Foo) => 3,
+   |
 
 error: `match` arm body without braces
   --> $DIR/match-arm-without-braces.rs:31:11
diff --git a/tests/ui/parser/missing-fn-issue-65381-2.stderr b/tests/ui/parser/missing-fn-issue-65381-2.stderr
index e13d395d70d..ba2cf497df2 100644
--- a/tests/ui/parser/missing-fn-issue-65381-2.stderr
+++ b/tests/ui/parser/missing-fn-issue-65381-2.stderr
@@ -6,8 +6,9 @@ LL | main();
    |
 help: if you meant to call a macro, try
    |
-LL | main!();
-   | ~~~~~
+LL - main();
+LL + main!();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/assoc-type.stderr b/tests/ui/parser/misspelled-keywords/assoc-type.stderr
index 677da53e340..e529b477c05 100644
--- a/tests/ui/parser/misspelled-keywords/assoc-type.stderr
+++ b/tests/ui/parser/misspelled-keywords/assoc-type.stderr
@@ -11,8 +11,9 @@ LL | }
    |
 help: write keyword `type` in lowercase
    |
-LL |     type Result = u8;
-   |     ~~~~
+LL -     Type Result = u8;
+LL +     type Result = u8;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/async-move.stderr b/tests/ui/parser/misspelled-keywords/async-move.stderr
index 4be4b56e505..a002d54dc91 100644
--- a/tests/ui/parser/misspelled-keywords/async-move.stderr
+++ b/tests/ui/parser/misspelled-keywords/async-move.stderr
@@ -6,8 +6,9 @@ LL |     async Move {}
    |
 help: write keyword `move` in lowercase
    |
-LL |     async move {}
-   |           ~~~~
+LL -     async Move {}
+LL +     async move {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/const-fn.stderr b/tests/ui/parser/misspelled-keywords/const-fn.stderr
index 5646b26143c..46a6d8ca779 100644
--- a/tests/ui/parser/misspelled-keywords/const-fn.stderr
+++ b/tests/ui/parser/misspelled-keywords/const-fn.stderr
@@ -6,8 +6,9 @@ LL | cnst fn code() {}
    |
 help: there is a keyword `const` with a similar name
    |
-LL | const fn code() {}
-   | ~~~~~
+LL - cnst fn code() {}
+LL + const fn code() {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/const-generics.stderr b/tests/ui/parser/misspelled-keywords/const-generics.stderr
index fd59999ab63..2d37656278e 100644
--- a/tests/ui/parser/misspelled-keywords/const-generics.stderr
+++ b/tests/ui/parser/misspelled-keywords/const-generics.stderr
@@ -6,8 +6,9 @@ LL | fn foo<consta N: usize>(_arr: [i32; N]) {}
    |
 help: there is a keyword `const` with a similar name
    |
-LL | fn foo<const N: usize>(_arr: [i32; N]) {}
-   |        ~~~~~
+LL - fn foo<consta N: usize>(_arr: [i32; N]) {}
+LL + fn foo<const N: usize>(_arr: [i32; N]) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/const.stderr b/tests/ui/parser/misspelled-keywords/const.stderr
index 35e4d731db7..ca76f51f4ed 100644
--- a/tests/ui/parser/misspelled-keywords/const.stderr
+++ b/tests/ui/parser/misspelled-keywords/const.stderr
@@ -6,8 +6,9 @@ LL | cons A: u8 = 10;
    |
 help: there is a keyword `const` with a similar name
    |
-LL | const A: u8 = 10;
-   | ~~~~~
+LL - cons A: u8 = 10;
+LL + const A: u8 = 10;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/for-loop.stderr b/tests/ui/parser/misspelled-keywords/for-loop.stderr
index d2236ab074d..6b94e60452a 100644
--- a/tests/ui/parser/misspelled-keywords/for-loop.stderr
+++ b/tests/ui/parser/misspelled-keywords/for-loop.stderr
@@ -6,8 +6,9 @@ LL |     form i in 1..10 {}
    |
 help: there is a keyword `for` with a similar name
    |
-LL |     for i in 1..10 {}
-   |     ~~~
+LL -     form i in 1..10 {}
+LL +     for i in 1..10 {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/hrdt.stderr b/tests/ui/parser/misspelled-keywords/hrdt.stderr
index 5393a730506..e5fc1a50382 100644
--- a/tests/ui/parser/misspelled-keywords/hrdt.stderr
+++ b/tests/ui/parser/misspelled-keywords/hrdt.stderr
@@ -6,8 +6,9 @@ LL |     Where for<'a> F: Fn(&'a (u8, u16)) -> &'a u8,
    |
 help: write keyword `where` in lowercase (notice the capitalization difference)
    |
-LL |     where for<'a> F: Fn(&'a (u8, u16)) -> &'a u8,
-   |     ~~~~~
+LL -     Where for<'a> F: Fn(&'a (u8, u16)) -> &'a u8,
+LL +     where for<'a> F: Fn(&'a (u8, u16)) -> &'a u8,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/impl-block.stderr b/tests/ui/parser/misspelled-keywords/impl-block.stderr
index d86ae326ce2..8219ed6bfe9 100644
--- a/tests/ui/parser/misspelled-keywords/impl-block.stderr
+++ b/tests/ui/parser/misspelled-keywords/impl-block.stderr
@@ -6,8 +6,9 @@ LL | ipml Human {}
    |
 help: there is a keyword `impl` with a similar name
    |
-LL | impl Human {}
-   | ~~~~
+LL - ipml Human {}
+LL + impl Human {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/impl-return.stderr b/tests/ui/parser/misspelled-keywords/impl-return.stderr
index 883f5cea73e..ff5391461a9 100644
--- a/tests/ui/parser/misspelled-keywords/impl-return.stderr
+++ b/tests/ui/parser/misspelled-keywords/impl-return.stderr
@@ -6,8 +6,9 @@ LL | fn code() -> Impl Display {}
    |
 help: write keyword `impl` in lowercase (notice the capitalization difference)
    |
-LL | fn code() -> impl Display {}
-   |              ~~~~
+LL - fn code() -> Impl Display {}
+LL + fn code() -> impl Display {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/impl-trait-for.stderr b/tests/ui/parser/misspelled-keywords/impl-trait-for.stderr
index 8dd5a4645f3..fe2356da4bd 100644
--- a/tests/ui/parser/misspelled-keywords/impl-trait-for.stderr
+++ b/tests/ui/parser/misspelled-keywords/impl-trait-for.stderr
@@ -6,8 +6,9 @@ LL | impl Debug form Human {}
    |
 help: there is a keyword `for` with a similar name
    |
-LL | impl Debug for Human {}
-   |            ~~~
+LL - impl Debug form Human {}
+LL + impl Debug for Human {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/impl-trait.stderr b/tests/ui/parser/misspelled-keywords/impl-trait.stderr
index 02a0c808311..4b0c9222a8c 100644
--- a/tests/ui/parser/misspelled-keywords/impl-trait.stderr
+++ b/tests/ui/parser/misspelled-keywords/impl-trait.stderr
@@ -6,8 +6,9 @@ LL | fn code<T: impll Debug>() -> u8 {}
    |
 help: there is a keyword `impl` with a similar name
    |
-LL | fn code<T: impl Debug>() -> u8 {}
-   |            ~~~~
+LL - fn code<T: impll Debug>() -> u8 {}
+LL + fn code<T: impl Debug>() -> u8 {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/let-else.stderr b/tests/ui/parser/misspelled-keywords/let-else.stderr
index 6f41a0d99db..1dde67638ce 100644
--- a/tests/ui/parser/misspelled-keywords/let-else.stderr
+++ b/tests/ui/parser/misspelled-keywords/let-else.stderr
@@ -6,8 +6,9 @@ LL |     let Some(a) = Some(10) elze {}
    |
 help: there is a keyword `else` with a similar name
    |
-LL |     let Some(a) = Some(10) else {}
-   |                            ~~~~
+LL -     let Some(a) = Some(10) elze {}
+LL +     let Some(a) = Some(10) else {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/let-mut.stderr b/tests/ui/parser/misspelled-keywords/let-mut.stderr
index 766d2a04909..aee457e135b 100644
--- a/tests/ui/parser/misspelled-keywords/let-mut.stderr
+++ b/tests/ui/parser/misspelled-keywords/let-mut.stderr
@@ -6,8 +6,9 @@ LL |     let muta a = 10;
    |
 help: there is a keyword `mut` with a similar name
    |
-LL |     let mut a = 10;
-   |         ~~~
+LL -     let muta a = 10;
+LL +     let mut a = 10;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/let.stderr b/tests/ui/parser/misspelled-keywords/let.stderr
index c2dcdef541d..9ebc4b5afa6 100644
--- a/tests/ui/parser/misspelled-keywords/let.stderr
+++ b/tests/ui/parser/misspelled-keywords/let.stderr
@@ -6,8 +6,9 @@ LL |     Let a = 10;
    |
 help: write keyword `let` in lowercase
    |
-LL |     let a = 10;
-   |     ~~~
+LL -     Let a = 10;
+LL +     let a = 10;
+   |
 
 error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `a`
   --> $DIR/let.rs:7:10
@@ -17,8 +18,9 @@ LL |     lett a = 10;
    |
 help: there is a keyword `let` with a similar name
    |
-LL |     let a = 10;
-   |     ~~~
+LL -     lett a = 10;
+LL +     let a = 10;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/misspelled-keywords/match.stderr b/tests/ui/parser/misspelled-keywords/match.stderr
index 90780ebd38e..1ec8f7c3b81 100644
--- a/tests/ui/parser/misspelled-keywords/match.stderr
+++ b/tests/ui/parser/misspelled-keywords/match.stderr
@@ -6,8 +6,9 @@ LL |     matche a {}
    |
 help: there is a keyword `match` with a similar name
    |
-LL |     match a {}
-   |     ~~~~~
+LL -     matche a {}
+LL +     match a {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/mod.stderr b/tests/ui/parser/misspelled-keywords/mod.stderr
index 6daeb4e5a15..1c1866279ce 100644
--- a/tests/ui/parser/misspelled-keywords/mod.stderr
+++ b/tests/ui/parser/misspelled-keywords/mod.stderr
@@ -6,8 +6,9 @@ LL | mode parser;
    |
 help: there is a keyword `mod` with a similar name
    |
-LL | mod parser;
-   | ~~~
+LL - mode parser;
+LL + mod parser;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/pub-fn.stderr b/tests/ui/parser/misspelled-keywords/pub-fn.stderr
index 82ca7105a49..1123c652c0e 100644
--- a/tests/ui/parser/misspelled-keywords/pub-fn.stderr
+++ b/tests/ui/parser/misspelled-keywords/pub-fn.stderr
@@ -6,8 +6,9 @@ LL | puB fn code() {}
    |
 help: write keyword `pub` in lowercase
    |
-LL | pub fn code() {}
-   | ~~~
+LL - puB fn code() {}
+LL + pub fn code() {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/ref.stderr b/tests/ui/parser/misspelled-keywords/ref.stderr
index 398d9d6bb99..21b99d6e663 100644
--- a/tests/ui/parser/misspelled-keywords/ref.stderr
+++ b/tests/ui/parser/misspelled-keywords/ref.stderr
@@ -6,8 +6,9 @@ LL |         Some(refe list) => println!("{list:?}"),
    |
 help: there is a keyword `ref` with a similar name
    |
-LL |         Some(ref list) => println!("{list:?}"),
-   |              ~~~
+LL -         Some(refe list) => println!("{list:?}"),
+LL +         Some(ref list) => println!("{list:?}"),
+   |
 
 error[E0023]: this pattern has 2 fields, but the corresponding tuple variant has 1 field
   --> $DIR/ref.rs:4:14
diff --git a/tests/ui/parser/misspelled-keywords/return.stderr b/tests/ui/parser/misspelled-keywords/return.stderr
index efa45f32299..21188ff8cb7 100644
--- a/tests/ui/parser/misspelled-keywords/return.stderr
+++ b/tests/ui/parser/misspelled-keywords/return.stderr
@@ -6,8 +6,9 @@ LL |     returnn a;
    |
 help: there is a keyword `return` with a similar name
    |
-LL |     return a;
-   |     ~~~~~~
+LL -     returnn a;
+LL +     return a;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/static-mut.stderr b/tests/ui/parser/misspelled-keywords/static-mut.stderr
index 3c25af548a3..10cdfe1adc6 100644
--- a/tests/ui/parser/misspelled-keywords/static-mut.stderr
+++ b/tests/ui/parser/misspelled-keywords/static-mut.stderr
@@ -6,8 +6,9 @@ LL | static muta a: u8 = 0;
    |
 help: there is a keyword `mut` with a similar name
    |
-LL | static mut a: u8 = 0;
-   |        ~~~
+LL - static muta a: u8 = 0;
+LL + static mut a: u8 = 0;
+   |
 
 error: missing type for `static` item
   --> $DIR/static-mut.rs:1:12
diff --git a/tests/ui/parser/misspelled-keywords/static.stderr b/tests/ui/parser/misspelled-keywords/static.stderr
index 003aa3929bc..e559f2be109 100644
--- a/tests/ui/parser/misspelled-keywords/static.stderr
+++ b/tests/ui/parser/misspelled-keywords/static.stderr
@@ -6,8 +6,9 @@ LL | Static a = 0;
    |
 help: write keyword `static` in lowercase (notice the capitalization difference)
    |
-LL | static a = 0;
-   | ~~~~~~
+LL - Static a = 0;
+LL + static a = 0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/struct.stderr b/tests/ui/parser/misspelled-keywords/struct.stderr
index 559182f9c8f..edbec3b9456 100644
--- a/tests/ui/parser/misspelled-keywords/struct.stderr
+++ b/tests/ui/parser/misspelled-keywords/struct.stderr
@@ -6,8 +6,9 @@ LL | Struct Foor {
    |
 help: write keyword `struct` in lowercase (notice the capitalization difference)
    |
-LL | struct Foor {
-   | ~~~~~~
+LL - Struct Foor {
+LL + struct Foor {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/unsafe-fn.stderr b/tests/ui/parser/misspelled-keywords/unsafe-fn.stderr
index b13281b0395..679dbb6af37 100644
--- a/tests/ui/parser/misspelled-keywords/unsafe-fn.stderr
+++ b/tests/ui/parser/misspelled-keywords/unsafe-fn.stderr
@@ -6,8 +6,9 @@ LL | unsafee fn code() {}
    |
 help: there is a keyword `unsafe` with a similar name
    |
-LL | unsafe fn code() {}
-   | ~~~~~~
+LL - unsafee fn code() {}
+LL + unsafe fn code() {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/use.stderr b/tests/ui/parser/misspelled-keywords/use.stderr
index db6dffdb613..40584c835b7 100644
--- a/tests/ui/parser/misspelled-keywords/use.stderr
+++ b/tests/ui/parser/misspelled-keywords/use.stderr
@@ -6,8 +6,9 @@ LL | usee a::b;
    |
 help: there is a keyword `use` with a similar name
    |
-LL | use a::b;
-   | ~~~
+LL - usee a::b;
+LL + use a::b;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/misspelled-keywords/where-clause.stderr b/tests/ui/parser/misspelled-keywords/where-clause.stderr
index 5143c30ca51..f0835f6e7da 100644
--- a/tests/ui/parser/misspelled-keywords/where-clause.stderr
+++ b/tests/ui/parser/misspelled-keywords/where-clause.stderr
@@ -8,7 +8,8 @@ LL | wheree
    |
 help: there is a keyword `where` with a similar name
    |
-LL | where
+LL - wheree
+LL + where
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/parser/misspelled-keywords/while-loop.stderr b/tests/ui/parser/misspelled-keywords/while-loop.stderr
index 7d150443f57..2d1136285c8 100644
--- a/tests/ui/parser/misspelled-keywords/while-loop.stderr
+++ b/tests/ui/parser/misspelled-keywords/while-loop.stderr
@@ -6,8 +6,9 @@ LL |     whilee a < b {
    |
 help: there is a keyword `while` with a similar name
    |
-LL |     while a < b {
-   |     ~~~~~
+LL -     whilee a < b {
+LL +     while a < b {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/mut-patterns.stderr b/tests/ui/parser/mut-patterns.stderr
index ad19a60af34..43f6a344bf3 100644
--- a/tests/ui/parser/mut-patterns.stderr
+++ b/tests/ui/parser/mut-patterns.stderr
@@ -33,8 +33,9 @@ LL |     let mut (x @ y) = 0;
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 help: add `mut` to each binding
    |
-LL |     let (mut x @ mut y) = 0;
-   |         ~~~~~~~~~~~~~~~
+LL -     let mut (x @ y) = 0;
+LL +     let (mut x @ mut y) = 0;
+   |
 
 error: `mut` on a binding may not be repeated
   --> $DIR/mut-patterns.rs:14:13
@@ -69,8 +70,9 @@ LL |     let mut Foo { x: x } = Foo { x: 3 };
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 help: add `mut` to each binding
    |
-LL |     let Foo { x: mut x } = Foo { x: 3 };
-   |         ~~~~~~~~~~~~~~~~
+LL -     let mut Foo { x: x } = Foo { x: 3 };
+LL +     let Foo { x: mut x } = Foo { x: 3 };
+   |
 
 error: `mut` must be attached to each individual binding
   --> $DIR/mut-patterns.rs:27:9
@@ -81,8 +83,9 @@ LL |     let mut Foo { x } = Foo { x: 3 };
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 help: add `mut` to each binding
    |
-LL |     let Foo { mut x } = Foo { x: 3 };
-   |         ~~~~~~~~~~~~~
+LL -     let mut Foo { x } = Foo { x: 3 };
+LL +     let Foo { mut x } = Foo { x: 3 };
+   |
 
 error: `mut` on a binding may not be repeated
   --> $DIR/mut-patterns.rs:32:13
@@ -151,8 +154,9 @@ LL |     let mut W(mut a, W(b, W(ref c, W(d, B { box f }))))
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 help: add `mut` to each binding
    |
-LL |     let W(mut a, W(mut b, W(ref c, W(mut d, B { box mut f }))))
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let mut W(mut a, W(b, W(ref c, W(d, B { box f }))))
+LL +     let W(mut a, W(mut b, W(ref c, W(mut d, B { box mut f }))))
+   |
 
 error: expected identifier, found `x`
   --> $DIR/mut-patterns.rs:48:21
diff --git a/tests/ui/parser/not-a-pred.stderr b/tests/ui/parser/not-a-pred.stderr
index 6f6a332cb81..9fedd208e1a 100644
--- a/tests/ui/parser/not-a-pred.stderr
+++ b/tests/ui/parser/not-a-pred.stderr
@@ -6,8 +6,9 @@ LL | fn f(a: isize, b: isize) : lt(a, b) { }
    |
 help: use `->` instead
    |
-LL | fn f(a: isize, b: isize) -> lt(a, b) { }
-   |                          ~~
+LL - fn f(a: isize, b: isize) : lt(a, b) { }
+LL + fn f(a: isize, b: isize) -> lt(a, b) { }
+   |
 
 error[E0573]: expected type, found function `lt`
   --> $DIR/not-a-pred.rs:1:28
diff --git a/tests/ui/parser/public-instead-of-pub-1.stderr b/tests/ui/parser/public-instead-of-pub-1.stderr
index 3fbe8d0b164..5695624d3b6 100644
--- a/tests/ui/parser/public-instead-of-pub-1.stderr
+++ b/tests/ui/parser/public-instead-of-pub-1.stderr
@@ -6,8 +6,9 @@ LL | public enum Test {
    |
 help: write `pub` instead of `public` to make the item public
    |
-LL | pub enum Test {
-   | ~~~
+LL - public enum Test {
+LL + pub enum Test {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/public-instead-of-pub-3.stderr b/tests/ui/parser/public-instead-of-pub-3.stderr
index b9b924e670a..856bdf18570 100644
--- a/tests/ui/parser/public-instead-of-pub-3.stderr
+++ b/tests/ui/parser/public-instead-of-pub-3.stderr
@@ -6,8 +6,9 @@ LL |     public const X: i32 = 123;
    |
 help: write `pub` instead of `public` to make the item public
    |
-LL |     pub const X: i32 = 123;
-   |     ~~~
+LL -     public const X: i32 = 123;
+LL +     pub const X: i32 = 123;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/public-instead-of-pub.stderr b/tests/ui/parser/public-instead-of-pub.stderr
index c98f8a9914e..29a208cd484 100644
--- a/tests/ui/parser/public-instead-of-pub.stderr
+++ b/tests/ui/parser/public-instead-of-pub.stderr
@@ -6,8 +6,9 @@ LL | public struct X;
    |
 help: write `pub` instead of `public` to make the item public
    |
-LL | pub struct X;
-   | ~~~
+LL - public struct X;
+LL + pub struct X;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/range-inclusive-extra-equals.stderr b/tests/ui/parser/range-inclusive-extra-equals.stderr
index a573cdf950c..db18cef81b1 100644
--- a/tests/ui/parser/range-inclusive-extra-equals.stderr
+++ b/tests/ui/parser/range-inclusive-extra-equals.stderr
@@ -7,8 +7,9 @@ LL |     if let 1..==3 = 1 {}
    = note: inclusive ranges end with a single equals sign (`..=`)
 help: use `..=` instead
    |
-LL |     if let 1..=3 = 1 {}
-   |             ~~~
+LL -     if let 1..==3 = 1 {}
+LL +     if let 1..=3 = 1 {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/range_inclusive_dotdotdot.stderr b/tests/ui/parser/range_inclusive_dotdotdot.stderr
index 2dc2c87eb7b..069133a43a3 100644
--- a/tests/ui/parser/range_inclusive_dotdotdot.stderr
+++ b/tests/ui/parser/range_inclusive_dotdotdot.stderr
@@ -6,12 +6,14 @@ LL |     return ...1;
    |
 help: use `..` for an exclusive range
    |
-LL |     return ..1;
-   |            ~~
+LL -     return ...1;
+LL +     return ..1;
+   |
 help: or `..=` for an inclusive range
    |
-LL |     return ..=1;
-   |            ~~~
+LL -     return ...1;
+LL +     return ..=1;
+   |
 
 error: unexpected token: `...`
   --> $DIR/range_inclusive_dotdotdot.rs:12:13
@@ -21,12 +23,14 @@ LL |     let x = ...0;
    |
 help: use `..` for an exclusive range
    |
-LL |     let x = ..0;
-   |             ~~
+LL -     let x = ...0;
+LL +     let x = ..0;
+   |
 help: or `..=` for an inclusive range
    |
-LL |     let x = ..=0;
-   |             ~~~
+LL -     let x = ...0;
+LL +     let x = ..=0;
+   |
 
 error: unexpected token: `...`
   --> $DIR/range_inclusive_dotdotdot.rs:16:14
@@ -36,12 +40,14 @@ LL |     let x = 5...5;
    |
 help: use `..` for an exclusive range
    |
-LL |     let x = 5..5;
-   |              ~~
+LL -     let x = 5...5;
+LL +     let x = 5..5;
+   |
 help: or `..=` for an inclusive range
    |
-LL |     let x = 5..=5;
-   |              ~~~
+LL -     let x = 5...5;
+LL +     let x = 5..=5;
+   |
 
 error: unexpected token: `...`
   --> $DIR/range_inclusive_dotdotdot.rs:20:15
@@ -51,12 +57,14 @@ LL |     for _ in 0...1 {}
    |
 help: use `..` for an exclusive range
    |
-LL |     for _ in 0..1 {}
-   |               ~~
+LL -     for _ in 0...1 {}
+LL +     for _ in 0..1 {}
+   |
 help: or `..=` for an inclusive range
    |
-LL |     for _ in 0..=1 {}
-   |               ~~~
+LL -     for _ in 0...1 {}
+LL +     for _ in 0..=1 {}
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr b/tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr
index 606b737e723..d1c803863a2 100644
--- a/tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr
+++ b/tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr
@@ -10,8 +10,9 @@ LL |     bar::<Item = 'a>();
    = help: if you meant to specify a trait object, write `dyn /* Trait */ + 'a`
 help: you might have meant to write a bound here
    |
-LL |     bar::<Item: 'a>();
-   |               ~
+LL -     bar::<Item = 'a>();
+LL +     bar::<Item: 'a>();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr b/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr
index aee31d08fe0..4e1fcaf4936 100644
--- a/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr
+++ b/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr
@@ -6,8 +6,9 @@ LL | fn foo(_: impl fn() -> i32) {}
    |
 help: use `Fn` to refer to the trait (notice the capitalization difference)
    |
-LL | fn foo(_: impl Fn() -> i32) {}
-   |                ~~
+LL - fn foo(_: impl fn() -> i32) {}
+LL + fn foo(_: impl Fn() -> i32) {}
+   |
 
 error: expected identifier, found keyword `fn`
   --> $DIR/recover-fn-trait-from-fn-kw.rs:4:12
@@ -17,8 +18,9 @@ LL | fn foo2<T: fn(i32)>(_: T) {}
    |
 help: use `Fn` to refer to the trait (notice the capitalization difference)
    |
-LL | fn foo2<T: Fn(i32)>(_: T) {}
-   |            ~~
+LL - fn foo2<T: fn(i32)>(_: T) {}
+LL + fn foo2<T: Fn(i32)>(_: T) {}
+   |
 
 error[E0308]: mismatched types
   --> $DIR/recover-fn-trait-from-fn-kw.rs:8:12
diff --git a/tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr b/tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr
index beaa346e76c..2bc7952def7 100644
--- a/tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr
+++ b/tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr
@@ -18,8 +18,9 @@ LL |         const _RECOVERY_WITNESS: u32 = 0u8;
    |
 help: change the type of the numeric literal from `u8` to `u32`
    |
-LL |         const _RECOVERY_WITNESS: u32 = 0u32;
-   |                                         ~~~
+LL -         const _RECOVERY_WITNESS: u32 = 0u8;
+LL +         const _RECOVERY_WITNESS: u32 = 0u32;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/recover/recover-from-bad-variant.stderr b/tests/ui/parser/recover/recover-from-bad-variant.stderr
index 0339f869515..9359ede1346 100644
--- a/tests/ui/parser/recover/recover-from-bad-variant.stderr
+++ b/tests/ui/parser/recover/recover-from-bad-variant.stderr
@@ -6,8 +6,9 @@ LL |     let x = Enum::Foo(a: 3, b: 4);
    |
 help: if `Enum::Foo` is a struct, use braces as delimiters
    |
-LL |     let x = Enum::Foo { a: 3, b: 4 };
-   |                       ~            ~
+LL -     let x = Enum::Foo(a: 3, b: 4);
+LL +     let x = Enum::Foo { a: 3, b: 4 };
+   |
 help: if `Enum::Foo` is a function, use the arguments directly
    |
 LL -     let x = Enum::Foo(a: 3, b: 4);
@@ -22,8 +23,9 @@ LL |         Enum::Foo(a, b) => {}
    |
 help: the struct variant's fields are being ignored
    |
-LL |         Enum::Foo { a: _, b: _ } => {}
-   |                   ~~~~~~~~~~~~~~
+LL -         Enum::Foo(a, b) => {}
+LL +         Enum::Foo { a: _, b: _ } => {}
+   |
 
 error[E0769]: tuple variant `Enum::Bar` written as struct variant
   --> $DIR/recover-from-bad-variant.rs:12:9
@@ -33,8 +35,9 @@ LL |         Enum::Bar { a, b } => {}
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         Enum::Bar(a, b) => {}
-   |                  ~~~~~~
+LL -         Enum::Bar { a, b } => {}
+LL +         Enum::Bar(a, b) => {}
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/parser/recover/recover-from-homoglyph.stderr b/tests/ui/parser/recover/recover-from-homoglyph.stderr
index f11ca9fd584..38ca0259366 100644
--- a/tests/ui/parser/recover/recover-from-homoglyph.stderr
+++ b/tests/ui/parser/recover/recover-from-homoglyph.stderr
@@ -6,8 +6,9 @@ LL |     println!("");
    |
 help: Unicode character ';' (Greek Question Mark) looks like ';' (Semicolon), but it is not
    |
-LL |     println!("");
-   |                 ~
+LL -     println!("");
+LL +     println!("");
+   |
 
 error[E0308]: mismatched types
   --> $DIR/recover-from-homoglyph.rs:3:20
diff --git a/tests/ui/parser/recover/recover-pat-exprs.stderr b/tests/ui/parser/recover/recover-pat-exprs.stderr
index 281eeced402..dcc1945d569 100644
--- a/tests/ui/parser/recover/recover-pat-exprs.stderr
+++ b/tests/ui/parser/recover/recover-pat-exprs.stderr
@@ -7,8 +7,9 @@ LL |         x.y => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.y => (),
-   |         ~~~ +++++++++++++
+LL -         x.y => (),
+LL +         val if val == x.y => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.y;
@@ -30,8 +31,9 @@ LL |         x.0 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.0 => (),
-   |         ~~~ +++++++++++++
+LL -         x.0 => (),
+LL +         val if val == x.0 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.0;
@@ -54,8 +56,9 @@ LL |         x._0 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x._0 => (),
-   |         ~~~ ++++++++++++++
+LL -         x._0 => (),
+LL +         val if val == x._0 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x._0;
@@ -79,8 +82,9 @@ LL |         x.0.1 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.0.1 => (),
-   |         ~~~ +++++++++++++++
+LL -         x.0.1 => (),
+LL +         val if val == x.0.1 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.0.1;
@@ -104,8 +108,9 @@ LL |         x.4.y.17.__z => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.4.y.17.__z => (),
-   |         ~~~ ++++++++++++++++++++++
+LL -         x.4.y.17.__z => (),
+LL +         val if val == x.4.y.17.__z => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.4.y.17.__z;
@@ -159,8 +164,9 @@ LL |         x[0] => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x[0] => (),
-   |         ~~~ ++++++++++++++
+LL -         x[0] => (),
+LL +         val if val == x[0] => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x[0];
@@ -181,8 +187,9 @@ LL |         x[..] => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x[..] => (),
-   |         ~~~ +++++++++++++++
+LL -         x[..] => (),
+LL +         val if val == x[..] => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x[..];
@@ -231,8 +238,9 @@ LL |         x.f() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.f() => (),
-   |         ~~~ +++++++++++++++
+LL -         x.f() => (),
+LL +         val if val == x.f() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.f();
@@ -253,8 +261,9 @@ LL |         x._f() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x._f() => (),
-   |         ~~~ ++++++++++++++++
+LL -         x._f() => (),
+LL +         val if val == x._f() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x._f();
@@ -276,8 +285,9 @@ LL |         x? => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x? => (),
-   |         ~~~ ++++++++++++
+LL -         x? => (),
+LL +         val if val == x? => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x?;
@@ -300,8 +310,9 @@ LL |         ().f() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == ().f() => (),
-   |         ~~~ ++++++++++++++++
+LL -         ().f() => (),
+LL +         val if val == ().f() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = ().f();
@@ -325,8 +336,9 @@ LL |         (0, x)?.f() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == (0, x)?.f() => (),
-   |         ~~~ +++++++++++++++++++++
+LL -         (0, x)?.f() => (),
+LL +         val if val == (0, x)?.f() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = (0, x)?.f();
@@ -350,8 +362,9 @@ LL |         x.f().g() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.f().g() => (),
-   |         ~~~ +++++++++++++++++++
+LL -         x.f().g() => (),
+LL +         val if val == x.f().g() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.f().g();
@@ -375,8 +388,9 @@ LL |         0.f()?.g()?? => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == 0.f()?.g()?? => (),
-   |         ~~~ ++++++++++++++++++++++
+LL -         0.f()?.g()?? => (),
+LL +         val if val == 0.f()?.g()?? => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = 0.f()?.g()??;
@@ -400,8 +414,9 @@ LL |         x as usize => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x as usize => (),
-   |         ~~~ ++++++++++++++++++++
+LL -         x as usize => (),
+LL +         val if val == x as usize => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x as usize;
@@ -422,8 +437,9 @@ LL |         0 as usize => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == 0 as usize => (),
-   |         ~~~ ++++++++++++++++++++
+LL -         0 as usize => (),
+LL +         val if val == 0 as usize => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = 0 as usize;
@@ -445,8 +461,9 @@ LL |         x.f().0.4 as f32 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == x.f().0.4 as f32 => (),
-   |         ~~~ ++++++++++++++++++++++++++
+LL -         x.f().0.4 as f32 => (),
+LL +         val if val == x.f().0.4 as f32 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.f().0.4 as f32;
@@ -469,8 +486,9 @@ LL |         1 + 1 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == 1 + 1 => (),
-   |         ~~~ +++++++++++++++
+LL -         1 + 1 => (),
+LL +         val if val == 1 + 1 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = 1 + 1;
@@ -491,8 +509,9 @@ LL |         (1 + 2) * 3 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == (1 + 2) * 3 => (),
-   |         ~~~ +++++++++++++++++++++
+LL -         (1 + 2) * 3 => (),
+LL +         val if val == (1 + 2) * 3 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = (1 + 2) * 3;
@@ -514,8 +533,9 @@ LL |         x.0 > 2 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == (x.0 > 2) => (),
-   |         ~~~ +++++++++++++++++++
+LL -         x.0 > 2 => (),
+LL +         val if val == (x.0 > 2) => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.0 > 2;
@@ -539,8 +559,9 @@ LL |         x.0 == 2 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == (x.0 == 2) => (),
-   |         ~~~ ++++++++++++++++++++
+LL -         x.0 == 2 => (),
+LL +         val if val == (x.0 == 2) => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = x.0 == 2;
@@ -564,8 +585,9 @@ LL |         (x, y.0 > 2) if x != 0 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to the match arm guard
    |
-LL |         (x, val) if x != 0 && val == (y.0 > 2) => (),
-   |             ~~~            +++++++++++++++++++
+LL -         (x, y.0 > 2) if x != 0 => (),
+LL +         (x, val) if x != 0 && val == (y.0 > 2) => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = y.0 > 2;
@@ -586,8 +608,9 @@ LL |         (x, y.0 > 2) if x != 0 || x != 1 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to the match arm guard
    |
-LL |         (x, val) if (x != 0 || x != 1) && val == (y.0 > 2) => (),
-   |             ~~~     +                +++++++++++++++++++++
+LL -         (x, y.0 > 2) if x != 0 || x != 1 => (),
+LL +         (x, val) if (x != 0 || x != 1) && val == (y.0 > 2) => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = y.0 > 2;
@@ -626,8 +649,9 @@ LL |         u8::MAX.abs() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == u8::MAX.abs() => (),
-   |         ~~~ +++++++++++++++++++++++
+LL -         u8::MAX.abs() => (),
+LL +         val if val == u8::MAX.abs() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = u8::MAX.abs();
@@ -648,8 +672,9 @@ LL |         z @ w @ v.u() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         z @ w @ val if val == v.u() => (),
-   |                 ~~~ +++++++++++++++
+LL -         z @ w @ v.u() => (),
+LL +         z @ w @ val if val == v.u() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = v.u();
@@ -673,8 +698,9 @@ LL |         y.ilog(3) => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == y.ilog(3) => (),
-   |         ~~~ +++++++++++++++++++
+LL -         y.ilog(3) => (),
+LL +         val if val == y.ilog(3) => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = y.ilog(3);
@@ -698,8 +724,9 @@ LL |         n + 1 => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == n + 1 => (),
-   |         ~~~ +++++++++++++++
+LL -         n + 1 => (),
+LL +         val if val == n + 1 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = n + 1;
@@ -723,8 +750,9 @@ LL |         ("".f() + 14 * 8) => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         (val) if val == "".f() + 14 * 8 => (),
-   |          ~~~  +++++++++++++++++++++++++
+LL -         ("".f() + 14 * 8) => (),
+LL +         (val) if val == "".f() + 14 * 8 => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = "".f() + 14 * 8;
@@ -748,8 +776,9 @@ LL |         f?() => (),
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         val if val == f?() => (),
-   |         ~~~ ++++++++++++++
+LL -         f?() => (),
+LL +         val if val == f?() => (),
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = f?();
diff --git a/tests/ui/parser/recover/recover-pat-issues.stderr b/tests/ui/parser/recover/recover-pat-issues.stderr
index bdd0b2b260e..0c65b16dd95 100644
--- a/tests/ui/parser/recover/recover-pat-issues.stderr
+++ b/tests/ui/parser/recover/recover-pat-issues.stderr
@@ -7,8 +7,9 @@ LL |         Foo("hi".to_owned()) => true,
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         Foo(val) if val == "hi".to_owned() => true,
-   |             ~~~  +++++++++++++++++++++++++
+LL -         Foo("hi".to_owned()) => true,
+LL +         Foo(val) if val == "hi".to_owned() => true,
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = "hi".to_owned();
@@ -29,8 +30,9 @@ LL |         Bar { baz: "hi".to_owned() } => true,
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         Bar { baz } if baz == "hi".to_owned() => true,
-   |               ~~~   +++++++++++++++++++++++++
+LL -         Bar { baz: "hi".to_owned() } => true,
+LL +         Bar { baz } if baz == "hi".to_owned() => true,
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const BAZ: /* Type */ = "hi".to_owned();
@@ -51,8 +53,9 @@ LL |         &["foo".to_string()] => {}
    = note: arbitrary expressions are not allowed in patterns: <https://doc.rust-lang.org/book/ch19-00-patterns.html>
 help: consider moving the expression to a match arm guard
    |
-LL |         &[val] if val == "foo".to_string() => {}
-   |           ~~~  +++++++++++++++++++++++++++
+LL -         &["foo".to_string()] => {}
+LL +         &[val] if val == "foo".to_string() => {}
+   |
 help: consider extracting the expression into a `const`
    |
 LL +     const VAL: /* Type */ = "foo".to_string();
diff --git a/tests/ui/parser/recover/recover-range-pats.stderr b/tests/ui/parser/recover/recover-range-pats.stderr
index 5c134bd4a82..a2f3ba4dd94 100644
--- a/tests/ui/parser/recover/recover-range-pats.stderr
+++ b/tests/ui/parser/recover/recover-range-pats.stderr
@@ -231,8 +231,9 @@ LL |     if let ...3 = 0 {}
    |
 help: use `..=` instead
    |
-LL |     if let ..=3 = 0 {}
-   |            ~~~
+LL -     if let ...3 = 0 {}
+LL +     if let ..=3 = 0 {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/recover-range-pats.rs:121:12
@@ -242,8 +243,9 @@ LL |     if let ...Y = 0 {}
    |
 help: use `..=` instead
    |
-LL |     if let ..=Y = 0 {}
-   |            ~~~
+LL -     if let ...Y = 0 {}
+LL +     if let ..=Y = 0 {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/recover-range-pats.rs:123:12
@@ -253,8 +255,9 @@ LL |     if let ...true = 0 {}
    |
 help: use `..=` instead
    |
-LL |     if let ..=true = 0 {}
-   |            ~~~
+LL -     if let ...true = 0 {}
+LL +     if let ..=true = 0 {}
+   |
 
 error: float literals must have an integer part
   --> $DIR/recover-range-pats.rs:126:15
@@ -275,8 +278,9 @@ LL |     if let ....3 = 0 {}
    |
 help: use `..=` instead
    |
-LL |     if let ..=.3 = 0 {}
-   |            ~~~
+LL -     if let ....3 = 0 {}
+LL +     if let ..=.3 = 0 {}
+   |
 
 error: range-to patterns with `...` are not allowed
   --> $DIR/recover-range-pats.rs:152:17
@@ -290,8 +294,9 @@ LL |     mac!(0);
    = note: this error originates in the macro `mac` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use `..=` instead
    |
-LL |             let ..=$e;
-   |                 ~~~
+LL -             let ...$e;
+LL +             let ..=$e;
+   |
 
 error[E0586]: inclusive range with no end
   --> $DIR/recover-range-pats.rs:159:19
diff --git a/tests/ui/parser/recover/recover-ref-dyn-mut.stderr b/tests/ui/parser/recover/recover-ref-dyn-mut.stderr
index bb0f0b0214c..2f1649f01c9 100644
--- a/tests/ui/parser/recover/recover-ref-dyn-mut.stderr
+++ b/tests/ui/parser/recover/recover-ref-dyn-mut.stderr
@@ -6,8 +6,9 @@ LL |     let r: &dyn mut Trait;
    |
 help: place `mut` before `dyn`
    |
-LL |     let r: &mut dyn Trait;
-   |            ~~~~~~~~
+LL -     let r: &dyn mut Trait;
+LL +     let r: &mut dyn Trait;
+   |
 
 error[E0405]: cannot find trait `Trait` in this scope
   --> $DIR/recover-ref-dyn-mut.rs:5:21
diff --git a/tests/ui/parser/recover/turbofish-arg-with-stray-colon.stderr b/tests/ui/parser/recover/turbofish-arg-with-stray-colon.stderr
index 551b2e3ff09..15866211954 100644
--- a/tests/ui/parser/recover/turbofish-arg-with-stray-colon.stderr
+++ b/tests/ui/parser/recover/turbofish-arg-with-stray-colon.stderr
@@ -7,8 +7,9 @@ LL |     let x = Tr<A, A:>;
    = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
 help: maybe write a path separator here
    |
-LL |     let x = Tr<A, A::>;
-   |                    ~~
+LL -     let x = Tr<A, A:>;
+LL +     let x = Tr<A, A::>;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/recover/unicode-double-equals-recovery.stderr b/tests/ui/parser/recover/unicode-double-equals-recovery.stderr
index 6e10dcce04a..1931fd4ee45 100644
--- a/tests/ui/parser/recover/unicode-double-equals-recovery.stderr
+++ b/tests/ui/parser/recover/unicode-double-equals-recovery.stderr
@@ -6,8 +6,9 @@ LL | const A: usize ⩵ 2;
    |
 help: Unicode character '⩵' (Two Consecutive Equals Signs) looks like '==' (Double Equals Sign), but it is not
    |
-LL | const A: usize == 2;
-   |                ~~
+LL - const A: usize ⩵ 2;
+LL + const A: usize == 2;
+   |
 
 error: unexpected `==`
   --> $DIR/unicode-double-equals-recovery.rs:1:16
@@ -17,8 +18,9 @@ LL | const A: usize ⩵ 2;
    |
 help: try using `=` instead
    |
-LL | const A: usize = 2;
-   |                ~
+LL - const A: usize ⩵ 2;
+LL + const A: usize = 2;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/removed-syntax/removed-syntax-box.stderr b/tests/ui/parser/removed-syntax/removed-syntax-box.stderr
index 60c39fd37c4..04e84a10fad 100644
--- a/tests/ui/parser/removed-syntax/removed-syntax-box.stderr
+++ b/tests/ui/parser/removed-syntax/removed-syntax-box.stderr
@@ -6,8 +6,9 @@ LL |     let _ = box ();
    |
 help: use `Box::new()` instead
    |
-LL |     let _ = Box::new(());
-   |             ~~~~~~~~~  +
+LL -     let _ = box ();
+LL +     let _ = Box::new(());
+   |
 
 error: `box_syntax` has been removed
   --> $DIR/removed-syntax-box.rs:10:13
@@ -17,8 +18,9 @@ LL |     let _ = box 1;
    |
 help: use `Box::new()` instead
    |
-LL |     let _ = Box::new(1);
-   |             ~~~~~~~~~ +
+LL -     let _ = box 1;
+LL +     let _ = Box::new(1);
+   |
 
 error: `box_syntax` has been removed
   --> $DIR/removed-syntax-box.rs:11:13
@@ -28,8 +30,9 @@ LL |     let _ = box T { a: 12, b: 18 };
    |
 help: use `Box::new()` instead
    |
-LL |     let _ = Box::new(T { a: 12, b: 18 });
-   |             ~~~~~~~~~                  +
+LL -     let _ = box T { a: 12, b: 18 };
+LL +     let _ = Box::new(T { a: 12, b: 18 });
+   |
 
 error: `box_syntax` has been removed
   --> $DIR/removed-syntax-box.rs:12:13
@@ -39,8 +42,9 @@ LL |     let _ = box [5; 30];
    |
 help: use `Box::new()` instead
    |
-LL |     let _ = Box::new([5; 30]);
-   |             ~~~~~~~~~       +
+LL -     let _ = box [5; 30];
+LL +     let _ = Box::new([5; 30]);
+   |
 
 error: `box_syntax` has been removed
   --> $DIR/removed-syntax-box.rs:13:22
@@ -50,8 +54,9 @@ LL |     let _: Box<()> = box ();
    |
 help: use `Box::new()` instead
    |
-LL |     let _: Box<()> = Box::new(());
-   |                      ~~~~~~~~~  +
+LL -     let _: Box<()> = box ();
+LL +     let _: Box<()> = Box::new(());
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/parser/suggest-assoc-const.stderr b/tests/ui/parser/suggest-assoc-const.stderr
index 70ebeded313..8cb304ced37 100644
--- a/tests/ui/parser/suggest-assoc-const.stderr
+++ b/tests/ui/parser/suggest-assoc-const.stderr
@@ -6,8 +6,9 @@ LL |     let _X: i32;
    |
 help: consider using `const` instead of `let` for associated const
    |
-LL |     const _X: i32;
-   |     ~~~~~
+LL -     let _X: i32;
+LL +     const _X: i32;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/parser/suggest-remove-compount-assign-let-ice.stderr b/tests/ui/parser/suggest-remove-compount-assign-let-ice.stderr
index 59716d69b50..477ec516d66 100644
--- a/tests/ui/parser/suggest-remove-compount-assign-let-ice.stderr
+++ b/tests/ui/parser/suggest-remove-compount-assign-let-ice.stderr
@@ -6,8 +6,9 @@ LL |     let x ➖= 1;
    |
 help: Unicode character '➖' (Heavy Minus Sign) looks like '-' (Minus/Hyphen), but it is not
    |
-LL |     let x -= 1;
-   |           ~
+LL -     let x ➖= 1;
+LL +     let x -= 1;
+   |
 
 error: can't reassign to an uninitialized variable
   --> $DIR/suggest-remove-compount-assign-let-ice.rs:13:11
diff --git a/tests/ui/parser/trailing-question-in-type.stderr b/tests/ui/parser/trailing-question-in-type.stderr
index a3cd419c0c7..066c38d4c4f 100644
--- a/tests/ui/parser/trailing-question-in-type.stderr
+++ b/tests/ui/parser/trailing-question-in-type.stderr
@@ -6,8 +6,9 @@ LL | fn foo() -> i32? {
    |
 help: if you meant to express that the type might not contain a value, use the `Option` wrapper type
    |
-LL | fn foo() -> Option<i32> {
-   |             +++++++   ~
+LL - fn foo() -> i32? {
+LL + fn foo() -> Option<i32> {
+   |
 
 error: invalid `?` in type
   --> $DIR/trailing-question-in-type.rs:4:15
@@ -17,8 +18,9 @@ LL |     let x: i32? = Some(1);
    |
 help: if you meant to express that the type might not contain a value, use the `Option` wrapper type
    |
-LL |     let x: Option<i32> = Some(1);
-   |            +++++++   ~
+LL -     let x: i32? = Some(1);
+LL +     let x: Option<i32> = Some(1);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/type-ascription-in-pattern.stderr b/tests/ui/parser/type-ascription-in-pattern.stderr
index 09190754993..d29c76baa7b 100644
--- a/tests/ui/parser/type-ascription-in-pattern.stderr
+++ b/tests/ui/parser/type-ascription-in-pattern.stderr
@@ -8,8 +8,9 @@ LL |         x: i32 => x,
    |
 help: maybe write a path separator here
    |
-LL |         x::i32 => x,
-   |          ~~
+LL -         x: i32 => x,
+LL +         x::i32 => x,
+   |
 
 error: expected one of `...`, `..=`, `..`, or `|`, found `:`
   --> $DIR/type-ascription-in-pattern.rs:12:11
@@ -37,8 +38,9 @@ LL |         x: i32 => (),
    |
 help: maybe write a path separator here
    |
-LL |         x::i32 => (),
-   |          ~~
+LL -         x: i32 => (),
+LL +         x::i32 => (),
+   |
 
 error[E0308]: mismatched types
   --> $DIR/type-ascription-in-pattern.rs:3:19
diff --git a/tests/ui/parser/typod-const-in-const-param-def.stderr b/tests/ui/parser/typod-const-in-const-param-def.stderr
index 80c0f1deae6..bf7168a0157 100644
--- a/tests/ui/parser/typod-const-in-const-param-def.stderr
+++ b/tests/ui/parser/typod-const-in-const-param-def.stderr
@@ -6,8 +6,9 @@ LL | pub fn foo<Const N: u8>() {}
    |
 help: use the `const` keyword (notice the capitalization difference)
    |
-LL | pub fn foo<const N: u8>() {}
-   |            ~~~~~
+LL - pub fn foo<Const N: u8>() {}
+LL + pub fn foo<const N: u8>() {}
+   |
 
 error: `const` keyword was mistyped as `Const`
   --> $DIR/typod-const-in-const-param-def.rs:7:12
@@ -17,8 +18,9 @@ LL | pub fn baz<Const N: u8, T>() {}
    |
 help: use the `const` keyword (notice the capitalization difference)
    |
-LL | pub fn baz<const N: u8, T>() {}
-   |            ~~~~~
+LL - pub fn baz<Const N: u8, T>() {}
+LL + pub fn baz<const N: u8, T>() {}
+   |
 
 error: `const` keyword was mistyped as `Const`
   --> $DIR/typod-const-in-const-param-def.rs:10:15
@@ -28,8 +30,9 @@ LL | pub fn qux<T, Const N: u8>() {}
    |
 help: use the `const` keyword (notice the capitalization difference)
    |
-LL | pub fn qux<T, const N: u8>() {}
-   |               ~~~~~
+LL - pub fn qux<T, Const N: u8>() {}
+LL + pub fn qux<T, const N: u8>() {}
+   |
 
 error: `const` keyword was mistyped as `Const`
   --> $DIR/typod-const-in-const-param-def.rs:13:16
@@ -39,8 +42,9 @@ LL | pub fn quux<T, Const N: u8, U>() {}
    |
 help: use the `const` keyword (notice the capitalization difference)
    |
-LL | pub fn quux<T, const N: u8, U>() {}
-   |                ~~~~~
+LL - pub fn quux<T, Const N: u8, U>() {}
+LL + pub fn quux<T, const N: u8, U>() {}
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/parser/unicode-character-literal.stderr b/tests/ui/parser/unicode-character-literal.stderr
index a1561e7f04b..8ce2354f0b9 100644
--- a/tests/ui/parser/unicode-character-literal.stderr
+++ b/tests/ui/parser/unicode-character-literal.stderr
@@ -11,8 +11,9 @@ LL |     let _spade = '♠️';
    |                   ^
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _spade = "♠️";
-   |                  ~ ~
+LL -     let _spade = '♠️';
+LL +     let _spade = "♠️";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/unicode-character-literal.rs:12:14
@@ -27,8 +28,9 @@ LL |     let _s = 'ṩ̂̊';
    |               ^
 help: if you meant to write a string literal, use double quotes
    |
-LL |     let _s = "ṩ̂̊";
-   |              ~ ~
+LL -     let _s = 'ṩ̂̊';
+LL +     let _s = "ṩ̂̊";
+   |
 
 error: character literal may only contain one codepoint
   --> $DIR/unicode-character-literal.rs:17:14
@@ -43,8 +45,9 @@ LL |     let _a = 'Å';
    |               ^
 help: consider using the normalized form `\u{c5}` of this character
    |
-LL |     let _a = 'Å';
-   |               ~
+LL -     let _a = 'Å';
+LL +     let _a = 'Å';
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/parser/unicode-chars.stderr b/tests/ui/parser/unicode-chars.stderr
index 086de5ec099..a18a6ad10dd 100644
--- a/tests/ui/parser/unicode-chars.stderr
+++ b/tests/ui/parser/unicode-chars.stderr
@@ -6,8 +6,9 @@ LL |     let y = 0;
    |
 help: Unicode character ';' (Greek Question Mark) looks like ';' (Semicolon), but it is not
    |
-LL |     let y = 0;
-   |              ~
+LL -     let y = 0;
+LL +     let y = 0;
+   |
 
 error: unknown start of token: \u{a0}
   --> $DIR/unicode-chars.rs:5:5
@@ -29,8 +30,9 @@ LL |     let _ = 1 ⩵ 2;
    |
 help: Unicode character '⩵' (Two Consecutive Equals Signs) looks like '==' (Double Equals Sign), but it is not
    |
-LL |     let _ = 1 == 2;
-   |               ~~
+LL -     let _ = 1 ⩵ 2;
+LL +     let _ = 1 == 2;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/parser/unicode-control-codepoints.stderr b/tests/ui/parser/unicode-control-codepoints.stderr
index 2893194308e..27b95f9ac61 100644
--- a/tests/ui/parser/unicode-control-codepoints.stderr
+++ b/tests/ui/parser/unicode-control-codepoints.stderr
@@ -22,8 +22,9 @@ LL |     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
    |
 help: if you meant to use the UTF-8 encoding of '\u{202e}', use \xHH escapes
    |
-LL |     println!("{:?}", b"/*\xE2\x80\xAE } �if isAdmin� � begin admins only ");
-   |                          ~~~~~~~~~~~~
+LL -     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
+LL +     println!("{:?}", b"/*\xE2\x80\xAE } �if isAdmin� � begin admins only ");
+   |
 
 error: non-ASCII character in byte string literal
   --> $DIR/unicode-control-codepoints.rs:18:30
@@ -33,8 +34,9 @@ LL |     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
    |
 help: if you meant to use the UTF-8 encoding of '\u{2066}', use \xHH escapes
    |
-LL |     println!("{:?}", b"/*� } \xE2\x81\xA6if isAdmin� � begin admins only ");
-   |                              ~~~~~~~~~~~~
+LL -     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
+LL +     println!("{:?}", b"/*� } \xE2\x81\xA6if isAdmin� � begin admins only ");
+   |
 
 error: non-ASCII character in byte string literal
   --> $DIR/unicode-control-codepoints.rs:18:41
@@ -44,8 +46,9 @@ LL |     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
    |
 help: if you meant to use the UTF-8 encoding of '\u{2069}', use \xHH escapes
    |
-LL |     println!("{:?}", b"/*� } �if isAdmin\xE2\x81\xA9 � begin admins only ");
-   |                                         ~~~~~~~~~~~~
+LL -     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
+LL +     println!("{:?}", b"/*� } �if isAdmin\xE2\x81\xA9 � begin admins only ");
+   |
 
 error: non-ASCII character in byte string literal
   --> $DIR/unicode-control-codepoints.rs:18:43
@@ -55,8 +58,9 @@ LL |     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
    |
 help: if you meant to use the UTF-8 encoding of '\u{2066}', use \xHH escapes
    |
-LL |     println!("{:?}", b"/*� } �if isAdmin� \xE2\x81\xA6 begin admins only ");
-   |                                           ~~~~~~~~~~~~
+LL -     println!("{:?}", b"/*� } �if isAdmin� � begin admins only ");
+LL +     println!("{:?}", b"/*� } �if isAdmin� \xE2\x81\xA6 begin admins only ");
+   |
 
 error: non-ASCII character in raw byte string literal
   --> $DIR/unicode-control-codepoints.rs:23:29
@@ -128,8 +132,9 @@ LL |     println!("{:?}", "/*� } �if isAdmin� � begin admins only ");
    = help: if their presence wasn't intentional, you can remove them
 help: if you want to keep them but make them visible in your source code, you can escape them
    |
-LL |     println!("{:?}", "/*\u{202e} } \u{2066}if isAdmin\u{2069} \u{2066} begin admins only ");
-   |                         ~~~~~~~~   ~~~~~~~~          ~~~~~~~~ ~~~~~~~~
+LL -     println!("{:?}", "/*� } �if isAdmin� � begin admins only ");
+LL +     println!("{:?}", "/*\u{202e} } \u{2066}if isAdmin\u{2069} \u{2066} begin admins only ");
+   |
 
 error: unicode codepoint changing visible direction of text present in literal
   --> $DIR/unicode-control-codepoints.rs:16:22
@@ -147,8 +152,9 @@ LL |     println!("{:?}", r##"/*� } �if isAdmin� � begin admins only "##
    = help: if their presence wasn't intentional, you can remove them
 help: if you want to keep them but make them visible in your source code, you can escape them
    |
-LL |     println!("{:?}", r##"/*\u{202e} } \u{2066}if isAdmin\u{2069} \u{2066} begin admins only "##);
-   |                            ~~~~~~~~   ~~~~~~~~          ~~~~~~~~ ~~~~~~~~
+LL -     println!("{:?}", r##"/*� } �if isAdmin� � begin admins only "##);
+LL +     println!("{:?}", r##"/*\u{202e} } \u{2066}if isAdmin\u{2069} \u{2066} begin admins only "##);
+   |
 
 error: unicode codepoint changing visible direction of text present in literal
   --> $DIR/unicode-control-codepoints.rs:28:22
@@ -163,8 +169,9 @@ LL |     println!("{:?}", '�');
    = help: if their presence wasn't intentional, you can remove them
 help: if you want to keep them but make them visible in your source code, you can escape them
    |
-LL |     println!("{:?}", '\u{202e}');
-   |                       ~~~~~~~~
+LL -     println!("{:?}", '�');
+LL +     println!("{:?}", '\u{202e}');
+   |
 
 error: unicode codepoint changing visible direction of text present in literal
   --> $DIR/unicode-control-codepoints.rs:31:13
@@ -179,8 +186,9 @@ LL |     let _ = c"�";
    = help: if their presence wasn't intentional, you can remove them
 help: if you want to keep them but make them visible in your source code, you can escape them
    |
-LL |     let _ = c"\u{202e}";
-   |               ~~~~~~~~
+LL -     let _ = c"�";
+LL +     let _ = c"\u{202e}";
+   |
 
 error: unicode codepoint changing visible direction of text present in literal
   --> $DIR/unicode-control-codepoints.rs:33:13
@@ -195,8 +203,9 @@ LL |     let _ = cr#"�"#;
    = help: if their presence wasn't intentional, you can remove them
 help: if you want to keep them but make them visible in your source code, you can escape them
    |
-LL |     let _ = cr#"\u{202e}"#;
-   |                 ~~~~~~~~
+LL -     let _ = cr#"�"#;
+LL +     let _ = cr#"\u{202e}"#;
+   |
 
 error: unicode codepoint changing visible direction of text present in format string
   --> $DIR/unicode-control-codepoints.rs:36:14
@@ -211,8 +220,9 @@ LL |     println!("{{�}}");
    = help: if their presence wasn't intentional, you can remove them
 help: if you want to keep them but make them visible in your source code, you can escape them
    |
-LL |     println!("{{\u{202e}}}");
-   |                 ~~~~~~~~
+LL -     println!("{{�}}");
+LL +     println!("{{\u{202e}}}");
+   |
 
 error: unicode codepoint changing visible direction of text present in doc comment
   --> $DIR/unicode-control-codepoints.rs:43:1
diff --git a/tests/ui/parser/unicode-quote-chars.stderr b/tests/ui/parser/unicode-quote-chars.stderr
index 092abeb53cd..0ffb204d64a 100644
--- a/tests/ui/parser/unicode-quote-chars.stderr
+++ b/tests/ui/parser/unicode-quote-chars.stderr
@@ -6,8 +6,9 @@ LL |     println!(“hello world”);
    |
 help: Unicode characters '“' (Left Double Quotation Mark) and '”' (Right Double Quotation Mark) look like '"' (Quotation Mark), but are not
    |
-LL |     println!("hello world");
-   |              ~~~~~~~~~~~~~
+LL -     println!(“hello world”);
+LL +     println!("hello world");
+   |
 
 error: unknown start of token: \u{201d}
   --> $DIR/unicode-quote-chars.rs:2:26
@@ -17,8 +18,9 @@ LL |     println!(“hello world”);
    |
 help: Unicode character '”' (Right Double Quotation Mark) looks like '"' (Quotation Mark), but it is not
    |
-LL |     println!(“hello world");
-   |                          ~
+LL -     println!(“hello world”);
+LL +     println!(“hello world");
+   |
 
 error: expected `,`, found `world`
   --> $DIR/unicode-quote-chars.rs:2:21
diff --git a/tests/ui/parser/unnecessary-let.stderr b/tests/ui/parser/unnecessary-let.stderr
index 0b28123747a..d75d1943f2f 100644
--- a/tests/ui/parser/unnecessary-let.stderr
+++ b/tests/ui/parser/unnecessary-let.stderr
@@ -18,8 +18,9 @@ LL |     for let _x of [1, 2, 3] {}
    |
 help: try using `in` here instead
    |
-LL |     for let _x in [1, 2, 3] {}
-   |                ~~
+LL -     for let _x of [1, 2, 3] {}
+LL +     for let _x in [1, 2, 3] {}
+   |
 
 error: expected pattern, found `let`
   --> $DIR/unnecessary-let.rs:9:9
diff --git a/tests/ui/parser/use-colon-as-mod-sep.stderr b/tests/ui/parser/use-colon-as-mod-sep.stderr
index 347b271df99..f25a779f31f 100644
--- a/tests/ui/parser/use-colon-as-mod-sep.stderr
+++ b/tests/ui/parser/use-colon-as-mod-sep.stderr
@@ -7,8 +7,9 @@ LL | use std::process:Command;
    = note: import paths are delimited using `::`
 help: use double colon
    |
-LL | use std::process::Command;
-   |                 ~~
+LL - use std::process:Command;
+LL + use std::process::Command;
+   |
 
 error: expected `::`, found `:`
   --> $DIR/use-colon-as-mod-sep.rs:5:8
@@ -19,8 +20,9 @@ LL | use std:fs::File;
    = note: import paths are delimited using `::`
 help: use double colon
    |
-LL | use std::fs::File;
-   |        ~~
+LL - use std:fs::File;
+LL + use std::fs::File;
+   |
 
 error: expected `::`, found `:`
   --> $DIR/use-colon-as-mod-sep.rs:7:8
@@ -31,8 +33,9 @@ LL | use std:collections:HashMap;
    = note: import paths are delimited using `::`
 help: use double colon
    |
-LL | use std::collections:HashMap;
-   |        ~~
+LL - use std:collections:HashMap;
+LL + use std::collections:HashMap;
+   |
 
 error: expected `::`, found `:`
   --> $DIR/use-colon-as-mod-sep.rs:7:20
@@ -43,8 +46,9 @@ LL | use std:collections:HashMap;
    = note: import paths are delimited using `::`
 help: use double colon
    |
-LL | use std:collections::HashMap;
-   |                    ~~
+LL - use std:collections:HashMap;
+LL + use std:collections::HashMap;
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/parser/utf16-be-without-bom.stderr b/tests/ui/parser/utf16-be-without-bom.stderr
index b915c7941b3..0493bcbc77a 100644
--- a/tests/ui/parser/utf16-be-without-bom.stderr
+++ b/tests/ui/parser/utf16-be-without-bom.stderr
@@ -110,8 +110,9 @@ LL | ␀f␀n␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
    |
 help: consider removing the space to spell keyword `fn`
    |
-LL | ␀fn␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
-   |  ~~
+LL - ␀f␀n␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
+LL + ␀fn␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
+   |
 
 error: aborting due to 14 previous errors
 
diff --git a/tests/ui/parser/utf16-le-without-bom.stderr b/tests/ui/parser/utf16-le-without-bom.stderr
index d937a07bc66..4b195ed0da1 100644
--- a/tests/ui/parser/utf16-le-without-bom.stderr
+++ b/tests/ui/parser/utf16-le-without-bom.stderr
@@ -110,8 +110,9 @@ LL | f␀n␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
    |
 help: consider removing the space to spell keyword `fn`
    |
-LL | fn␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
-   | ~~
+LL - f␀n␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
+LL + fn␀ ␀m␀a␀i␀n␀(␀)␀ ␀{␀}␀
+   |
 
 error: aborting due to 14 previous errors
 
diff --git a/tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr b/tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr
index 1599edd7a99..0960af705ce 100644
--- a/tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr
+++ b/tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr
@@ -9,8 +9,9 @@ LL |     let _ @ a = 0;
    |
 help: switch the order
    |
-LL |     let a @ _ = 0;
-   |         ~~~~~
+LL -     let _ @ a = 0;
+LL +     let a @ _ = 0;
+   |
 
 error: pattern on wrong side of `@`
   --> $DIR/wild-before-at-syntactically-rejected.rs:10:9
@@ -23,8 +24,9 @@ LL |     let _ @ ref a = 0;
    |
 help: switch the order
    |
-LL |     let ref a @ _ = 0;
-   |         ~~~~~~~~~
+LL -     let _ @ ref a = 0;
+LL +     let ref a @ _ = 0;
+   |
 
 error: pattern on wrong side of `@`
   --> $DIR/wild-before-at-syntactically-rejected.rs:12:9
@@ -37,8 +39,9 @@ LL |     let _ @ ref mut a = 0;
    |
 help: switch the order
    |
-LL |     let ref mut a @ _ = 0;
-   |         ~~~~~~~~~~~~~
+LL -     let _ @ ref mut a = 0;
+LL +     let ref mut a @ _ = 0;
+   |
 
 error: left-hand side of `@` must be a binding
   --> $DIR/wild-before-at-syntactically-rejected.rs:14:9
diff --git a/tests/ui/pattern/incorrect-placement-of-pattern-modifiers.stderr b/tests/ui/pattern/incorrect-placement-of-pattern-modifiers.stderr
index e80789253c0..31f8feb1a71 100644
--- a/tests/ui/pattern/incorrect-placement-of-pattern-modifiers.stderr
+++ b/tests/ui/pattern/incorrect-placement-of-pattern-modifiers.stderr
@@ -50,8 +50,9 @@ LL |     let _: usize = 3u8;
    |
 help: change the type of the numeric literal from `u8` to `usize`
    |
-LL |     let _: usize = 3usize;
-   |                     ~~~~~
+LL -     let _: usize = 3u8;
+LL +     let _: usize = 3usize;
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/pattern/issue-72574-1.stderr b/tests/ui/pattern/issue-72574-1.stderr
index 653869a237d..a9076c3dff6 100644
--- a/tests/ui/pattern/issue-72574-1.stderr
+++ b/tests/ui/pattern/issue-72574-1.stderr
@@ -7,8 +7,9 @@ LL |         (_a, _x @ ..) => {}
    = help: remove this and bind each tuple field independently
 help: if you don't need to use the contents of _x, discard the tuple's remaining fields
    |
-LL |         (_a, ..) => {}
-   |              ~~
+LL -         (_a, _x @ ..) => {}
+LL +         (_a, ..) => {}
+   |
 
 error: `..` patterns are not allowed here
   --> $DIR/issue-72574-1.rs:4:19
diff --git a/tests/ui/pattern/issue-72574-2.stderr b/tests/ui/pattern/issue-72574-2.stderr
index 05650f05cbf..8edc2634eed 100644
--- a/tests/ui/pattern/issue-72574-2.stderr
+++ b/tests/ui/pattern/issue-72574-2.stderr
@@ -7,8 +7,9 @@ LL |         Binder(_a, _x @ ..) => {}
    = help: remove this and bind each tuple field independently
 help: if you don't need to use the contents of _x, discard the tuple's remaining fields
    |
-LL |         Binder(_a, ..) => {}
-   |                    ~~
+LL -         Binder(_a, _x @ ..) => {}
+LL +         Binder(_a, ..) => {}
+   |
 
 error: `..` patterns are not allowed here
   --> $DIR/issue-72574-2.rs:6:25
diff --git a/tests/ui/pattern/issue-74539.stderr b/tests/ui/pattern/issue-74539.stderr
index 7443946c013..b6bd084ca4b 100644
--- a/tests/ui/pattern/issue-74539.stderr
+++ b/tests/ui/pattern/issue-74539.stderr
@@ -7,8 +7,9 @@ LL |         E::A(x @ ..) => {
    = help: remove this and bind each tuple field independently
 help: if you don't need to use the contents of x, discard the tuple's remaining fields
    |
-LL |         E::A(..) => {
-   |              ~~
+LL -         E::A(x @ ..) => {
+LL +         E::A(..) => {
+   |
 
 error: `..` patterns are not allowed here
   --> $DIR/issue-74539.rs:8:18
diff --git a/tests/ui/pattern/issue-74702.stderr b/tests/ui/pattern/issue-74702.stderr
index f2e2c8f021b..5bb58de1c6e 100644
--- a/tests/ui/pattern/issue-74702.stderr
+++ b/tests/ui/pattern/issue-74702.stderr
@@ -7,8 +7,9 @@ LL |     let (foo @ ..,) = (0, 0);
    = help: remove this and bind each tuple field independently
 help: if you don't need to use the contents of foo, discard the tuple's remaining fields
    |
-LL |     let (..,) = (0, 0);
-   |          ~~
+LL -     let (foo @ ..,) = (0, 0);
+LL +     let (..,) = (0, 0);
+   |
 
 error: `..` patterns are not allowed here
   --> $DIR/issue-74702.rs:2:16
diff --git a/tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr b/tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr
index 622358126b0..b61f8dbab00 100644
--- a/tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr
+++ b/tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr
@@ -7,8 +7,9 @@ LL |     let mut &x = &0;
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 help: add `mut` to each binding
    |
-LL |     let &(mut x) = &0;
-   |         ~~~~~~~~
+LL -     let mut &x = &0;
+LL +     let &(mut x) = &0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/pattern/pat-tuple-field-count-cross.stderr b/tests/ui/pattern/pat-tuple-field-count-cross.stderr
index 0d7f2e4af69..c084ec0b532 100644
--- a/tests/ui/pattern/pat-tuple-field-count-cross.stderr
+++ b/tests/ui/pattern/pat-tuple-field-count-cross.stderr
@@ -25,12 +25,14 @@ LL | pub struct Z1();
    |
 help: use this syntax instead
    |
-LL |         Z0 => {}
-   |         ~~
+LL -         Z0() => {}
+LL +         Z0 => {}
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         Z1() => {}
-   |         ~~
+LL -         Z0() => {}
+LL +         Z1() => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `Z0`
   --> $DIR/pat-tuple-field-count-cross.rs:10:9
@@ -47,12 +49,14 @@ LL | pub struct Z1();
    |
 help: use this syntax instead
    |
-LL |         Z0 => {}
-   |         ~~
+LL -         Z0(x) => {}
+LL +         Z0 => {}
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         Z1(x) => {}
-   |         ~~
+LL -         Z0(x) => {}
+LL +         Z1(x) => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E1::Z0`
   --> $DIR/pat-tuple-field-count-cross.rs:31:9
@@ -69,12 +73,14 @@ LL | pub enum E1 { Z0, Z1(), S(u8, u8, u8) }
    |
 help: use this syntax instead
    |
-LL |         E1::Z0 => {}
-   |         ~~~~~~
+LL -         E1::Z0() => {}
+LL +         E1::Z0 => {}
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         E1::Z1() => {}
-   |             ~~
+LL -         E1::Z0() => {}
+LL +         E1::Z1() => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E1::Z0`
   --> $DIR/pat-tuple-field-count-cross.rs:32:9
@@ -91,12 +97,14 @@ LL | pub enum E1 { Z0, Z1(), S(u8, u8, u8) }
    |
 help: use this syntax instead
    |
-LL |         E1::Z0 => {}
-   |         ~~~~~~
+LL -         E1::Z0(x) => {}
+LL +         E1::Z0 => {}
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         E1::Z1(x) => {}
-   |             ~~
+LL -         E1::Z0(x) => {}
+LL +         E1::Z1(x) => {}
+   |
 
 error[E0532]: expected unit struct, unit variant or constant, found tuple variant `E1::Z1`
   --> $DIR/pat-tuple-field-count-cross.rs:35:9
@@ -113,12 +121,14 @@ LL | pub enum E1 { Z0, Z1(), S(u8, u8, u8) }
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         E1::Z1() => {}
-   |         ~~~~~~~~
+LL -         E1::Z1 => {}
+LL +         E1::Z1() => {}
+   |
 help: a unit variant with a similar name exists
    |
-LL |         E1::Z0 => {}
-   |             ~~
+LL -         E1::Z1 => {}
+LL +         E1::Z0 => {}
+   |
 
 error[E0023]: this pattern has 1 field, but the corresponding tuple struct has 0 fields
   --> $DIR/pat-tuple-field-count-cross.rs:14:12
diff --git a/tests/ui/pattern/pat-tuple-overfield.stderr b/tests/ui/pattern/pat-tuple-overfield.stderr
index 54d89e03101..4e8261cb15b 100644
--- a/tests/ui/pattern/pat-tuple-overfield.stderr
+++ b/tests/ui/pattern/pat-tuple-overfield.stderr
@@ -23,12 +23,14 @@ LL |         Z0() => {}
    |
 help: use this syntax instead
    |
-LL |         Z0 => {}
-   |         ~~
+LL -         Z0() => {}
+LL +         Z0 => {}
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         Z1() => {}
-   |         ~~
+LL -         Z0() => {}
+LL +         Z1() => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `Z0`
   --> $DIR/pat-tuple-overfield.rs:53:9
@@ -43,12 +45,14 @@ LL |         Z0(_) => {}
    |
 help: use this syntax instead
    |
-LL |         Z0 => {}
-   |         ~~
+LL -         Z0(_) => {}
+LL +         Z0 => {}
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         Z1(_) => {}
-   |         ~~
+LL -         Z0(_) => {}
+LL +         Z1(_) => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit struct `Z0`
   --> $DIR/pat-tuple-overfield.rs:54:9
@@ -63,12 +67,14 @@ LL |         Z0(_, _) => {}
    |
 help: use this syntax instead
    |
-LL |         Z0 => {}
-   |         ~~
+LL -         Z0(_, _) => {}
+LL +         Z0 => {}
+   |
 help: a tuple struct with a similar name exists
    |
-LL |         Z1(_, _) => {}
-   |         ~~
+LL -         Z0(_, _) => {}
+LL +         Z1(_, _) => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E1::Z0`
   --> $DIR/pat-tuple-overfield.rs:64:9
@@ -83,12 +89,14 @@ LL |         E1::Z0() => {}
    |
 help: use this syntax instead
    |
-LL |         E1::Z0 => {}
-   |         ~~~~~~
+LL -         E1::Z0() => {}
+LL +         E1::Z0 => {}
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         E1::Z1() => {}
-   |             ~~
+LL -         E1::Z0() => {}
+LL +         E1::Z1() => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E1::Z0`
   --> $DIR/pat-tuple-overfield.rs:65:9
@@ -103,12 +111,14 @@ LL |         E1::Z0(_) => {}
    |
 help: use this syntax instead
    |
-LL |         E1::Z0 => {}
-   |         ~~~~~~
+LL -         E1::Z0(_) => {}
+LL +         E1::Z0 => {}
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         E1::Z1(_) => {}
-   |             ~~
+LL -         E1::Z0(_) => {}
+LL +         E1::Z1(_) => {}
+   |
 
 error[E0532]: expected tuple struct or tuple variant, found unit variant `E1::Z0`
   --> $DIR/pat-tuple-overfield.rs:66:9
@@ -123,12 +133,14 @@ LL |         E1::Z0(_, _) => {}
    |
 help: use this syntax instead
    |
-LL |         E1::Z0 => {}
-   |         ~~~~~~
+LL -         E1::Z0(_, _) => {}
+LL +         E1::Z0 => {}
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         E1::Z1(_, _) => {}
-   |             ~~
+LL -         E1::Z0(_, _) => {}
+LL +         E1::Z1(_, _) => {}
+   |
 
 error[E0532]: expected unit struct, unit variant or constant, found tuple variant `E1::Z1`
   --> $DIR/pat-tuple-overfield.rs:69:9
@@ -143,12 +155,14 @@ LL |         E1::Z1 => {}
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         E1::Z1() => {}
-   |         ~~~~~~~~
+LL -         E1::Z1 => {}
+LL +         E1::Z1() => {}
+   |
 help: a unit variant with a similar name exists
    |
-LL |         E1::Z0 => {}
-   |             ~~
+LL -         E1::Z1 => {}
+LL +         E1::Z0 => {}
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pat-tuple-overfield.rs:19:9
diff --git a/tests/ui/pattern/pat-tuple-underfield.stderr b/tests/ui/pattern/pat-tuple-underfield.stderr
index e75f9b38da5..c8620fe85c3 100644
--- a/tests/ui/pattern/pat-tuple-underfield.stderr
+++ b/tests/ui/pattern/pat-tuple-underfield.stderr
@@ -36,8 +36,9 @@ LL |         S(_, _) => {}
    |            +++
 help: use `..` to ignore all fields
    |
-LL |         S(..) => {}
-   |           ~~
+LL -         S(_) => {}
+LL +         S(..) => {}
+   |
 
 error[E0023]: this pattern has 0 fields, but the corresponding tuple struct has 2 fields
   --> $DIR/pat-tuple-underfield.rs:20:9
@@ -104,8 +105,9 @@ LL |         E::S(_, _) => {}
    |               +++
 help: use `..` to ignore all fields
    |
-LL |         E::S(..) => {}
-   |              ~~
+LL -         E::S(_) => {}
+LL +         E::S(..) => {}
+   |
 
 error[E0023]: this pattern has 0 fields, but the corresponding tuple variant has 2 fields
   --> $DIR/pat-tuple-underfield.rs:44:9
@@ -158,8 +160,9 @@ LL |         Point4(   a   ,     _    , _, _) => {}
    |                                  ++++++
 help: use `..` to ignore the rest of the fields
    |
-LL |         Point4(   a, ..) => {}
-   |                    ~~~~
+LL -         Point4(   a   ,     _    ) => {}
+LL +         Point4(   a, ..) => {}
+   |
 
 error: aborting due to 10 previous errors
 
diff --git a/tests/ui/pattern/patkind-ref-binding-issue-114896.stderr b/tests/ui/pattern/patkind-ref-binding-issue-114896.stderr
index e9c2fccaba2..a12b94176c0 100644
--- a/tests/ui/pattern/patkind-ref-binding-issue-114896.stderr
+++ b/tests/ui/pattern/patkind-ref-binding-issue-114896.stderr
@@ -6,8 +6,9 @@ LL |         b.make_ascii_uppercase();
    |
 help: consider changing this to be mutable
    |
-LL |         let &(mut b) = a;
-   |             ~~~~~  +
+LL -         let &b = a;
+LL +         let &(mut b) = a;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/pattern/patkind-ref-binding-issue-122415.stderr b/tests/ui/pattern/patkind-ref-binding-issue-122415.stderr
index e93b8bbaccc..68141af4910 100644
--- a/tests/ui/pattern/patkind-ref-binding-issue-122415.stderr
+++ b/tests/ui/pattern/patkind-ref-binding-issue-122415.stderr
@@ -6,8 +6,9 @@ LL |     mutate(&mut x);
    |
 help: consider changing this to be mutable
    |
-LL | fn foo(&(mut x): &i32) {
-   |        ~~~~~  +
+LL - fn foo(&x: &i32) {
+LL + fn foo(&(mut x): &i32) {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/pattern/pattern-bad-ref-box-order.stderr b/tests/ui/pattern/pattern-bad-ref-box-order.stderr
index a89d3ed21b6..6f47f704688 100644
--- a/tests/ui/pattern/pattern-bad-ref-box-order.stderr
+++ b/tests/ui/pattern/pattern-bad-ref-box-order.stderr
@@ -6,8 +6,9 @@ LL |         Some(ref box _i) => {},
    |
 help: swap them
    |
-LL |         Some(box ref _i) => {},
-   |              ~~~~~~~
+LL -         Some(ref box _i) => {},
+LL +         Some(box ref _i) => {},
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/pattern/pattern-error-continue.stderr b/tests/ui/pattern/pattern-error-continue.stderr
index 10fcccb0301..bb5582dd873 100644
--- a/tests/ui/pattern/pattern-error-continue.stderr
+++ b/tests/ui/pattern/pattern-error-continue.stderr
@@ -12,12 +12,14 @@ LL |         A::D(_) => (),
    |
 help: use this syntax instead
    |
-LL |         A::D => (),
-   |         ~~~~
+LL -         A::D(_) => (),
+LL +         A::D => (),
+   |
 help: a tuple variant with a similar name exists
    |
-LL |         A::B(_) => (),
-   |            ~
+LL -         A::D(_) => (),
+LL +         A::B(_) => (),
+   |
 
 error[E0023]: this pattern has 3 fields, but the corresponding tuple variant has 2 fields
   --> $DIR/pattern-error-continue.rs:17:14
diff --git a/tests/ui/pattern/range-pattern-meant-to-be-slice-rest-pattern.stderr b/tests/ui/pattern/range-pattern-meant-to-be-slice-rest-pattern.stderr
index 9d642b9245a..37b2d96bb01 100644
--- a/tests/ui/pattern/range-pattern-meant-to-be-slice-rest-pattern.stderr
+++ b/tests/ui/pattern/range-pattern-meant-to-be-slice-rest-pattern.stderr
@@ -6,8 +6,9 @@ LL |         [_, ...tail] => println!("{tail}"),
    |
 help: use `..=` instead
    |
-LL |         [_, ..=tail] => println!("{tail}"),
-   |             ~~~
+LL -         [_, ...tail] => println!("{tail}"),
+LL +         [_, ..=tail] => println!("{tail}"),
+   |
 
 error[E0425]: cannot find value `rest` in this scope
   --> $DIR/range-pattern-meant-to-be-slice-rest-pattern.rs:3:13
@@ -34,8 +35,9 @@ LL |         [_, ..tail] => println!("{tail}"),
    |
 help: if you meant to collect the rest of the slice in `tail`, use the at operator
    |
-LL |         [_, tail @ ..] => println!("{tail}"),
-   |             ~~~~~~~~~
+LL -         [_, ..tail] => println!("{tail}"),
+LL +         [_, tail @ ..] => println!("{tail}"),
+   |
 
 error[E0425]: cannot find value `tail` in this scope
   --> $DIR/range-pattern-meant-to-be-slice-rest-pattern.rs:11:35
@@ -51,8 +53,9 @@ LL |         [_, ...tail] => println!("{tail}"),
    |
 help: if you meant to collect the rest of the slice in `tail`, use the at operator
    |
-LL |         [_, tail @ ..] => println!("{tail}"),
-   |             ~~~~~~~~~
+LL -         [_, ...tail] => println!("{tail}"),
+LL +         [_, tail @ ..] => println!("{tail}"),
+   |
 
 error[E0425]: cannot find value `tail` in this scope
   --> $DIR/range-pattern-meant-to-be-slice-rest-pattern.rs:17:36
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/feature-gate-ref_pat_eat_one_layer_2024.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/feature-gate-ref_pat_eat_one_layer_2024.stderr
index 132fe421a18..912eeb1c9c0 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/feature-gate-ref_pat_eat_one_layer_2024.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/feature-gate-ref_pat_eat_one_layer_2024.stderr
@@ -10,8 +10,9 @@ LL |     if let Some(Some(&x)) = &Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(Some(x)) = &Some(&Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&x)) = &Some(&Some(0)) {
+LL +     if let Some(Some(x)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/feature-gate-ref_pat_eat_one_layer_2024.rs:10:23
@@ -70,8 +71,9 @@ LL |     if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
    |                      ^^^^^^
 help: consider removing `&mut` from the pattern
    |
-LL |     if let Some(Some(x)) = &mut Some(&mut Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
+LL +     if let Some(Some(x)) = &mut Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/feature-gate-ref_pat_eat_one_layer_2024.rs:25:22
@@ -85,8 +87,9 @@ LL |     if let Some(Some(&x)) = &Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(Some(x)) = &Some(&Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&x)) = &Some(&Some(0)) {
+LL +     if let Some(Some(x)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/feature-gate-ref_pat_eat_one_layer_2024.rs:29:27
@@ -100,8 +103,9 @@ LL |     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(&mut Some(x)) = &Some(&mut Some(0)) {
-   |                           ~
+LL -     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
+LL +     if let Some(&mut Some(x)) = &Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/feature-gate-ref_pat_eat_one_layer_2024.rs:33:23
@@ -120,8 +124,9 @@ LL |     if let Some(&Some(&mut x)) = &mut Some(&Some(0)) {
    |                       ^^^^^^
 help: consider removing `&mut` from the pattern
    |
-LL |     if let Some(&Some(x)) = &mut Some(&Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&mut x)) = &mut Some(&Some(0)) {
+LL +     if let Some(&Some(x)) = &mut Some(&Some(0)) {
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/mut-ref-mut.classic2024.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/mut-ref-mut.classic2024.stderr
index afaa925a757..fa95b2b5a57 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/mut-ref-mut.classic2024.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/mut-ref-mut.classic2024.stderr
@@ -27,8 +27,9 @@ LL |     let [&mut mut x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&mut x] = &[&mut 0];
-   |          ~
+LL -     let [&mut mut x] = &[&mut 0];
+LL +     let [&mut x] = &[&mut 0];
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.classic2024.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.classic2024.stderr
index 3a124dcead5..6726a726315 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.classic2024.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.classic2024.stderr
@@ -7,8 +7,9 @@ LL |     if let Some(&mut x) = &Some(&mut 0) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&x) = &Some(&mut 0) {
-   |                 ~
+LL -     if let Some(&mut x) = &Some(&mut 0) {
+LL +     if let Some(&x) = &Some(&mut 0) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:18:17
@@ -19,8 +20,9 @@ LL |     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(&x)) = &Some(&mut Some(0)) {
-   |                 ~
+LL -     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
+LL +     if let Some(&Some(&x)) = &Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:24:22
@@ -31,8 +33,9 @@ LL |     if let Some(Some(&mut x)) = &Some(Some(&mut 0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(Some(&x)) = &Some(Some(&mut 0)) {
-   |                      ~
+LL -     if let Some(Some(&mut x)) = &Some(Some(&mut 0)) {
+LL +     if let Some(Some(&x)) = &Some(Some(&mut 0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:31:17
@@ -43,8 +46,9 @@ LL |     if let Some(&mut Some(&_)) = &Some(&Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(&_)) = &Some(&Some(0)) {
-   |                 ~
+LL -     if let Some(&mut Some(&_)) = &Some(&Some(0)) {
+LL +     if let Some(&Some(&_)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:41:23
@@ -55,8 +59,9 @@ LL |     if let Some(&Some(&mut _)) = &mut Some(&Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(&_)) = &mut Some(&Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&mut _)) = &mut Some(&Some(0)) {
+LL +     if let Some(&Some(&_)) = &mut Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:51:17
@@ -67,8 +72,9 @@ LL |     if let Some(&mut Some(x)) = &Some(Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(x)) = &Some(Some(0)) {
-   |                 ~
+LL -     if let Some(&mut Some(x)) = &Some(Some(0)) {
+LL +     if let Some(&Some(x)) = &Some(Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:147:10
@@ -79,8 +85,9 @@ LL |     let [&mut x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&x] = &[&mut 0];
-   |          ~
+LL -     let [&mut x] = &[&mut 0];
+LL +     let [&x] = &[&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:153:10
@@ -91,8 +98,9 @@ LL |     let [&mut &x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&x] = &[&mut 0];
-   |          ~
+LL -     let [&mut &x] = &[&mut 0];
+LL +     let [&&x] = &[&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:159:10
@@ -103,8 +111,9 @@ LL |     let [&mut &ref x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&ref x] = &[&mut 0];
-   |          ~
+LL -     let [&mut &ref x] = &[&mut 0];
+LL +     let [&&ref x] = &[&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:165:10
@@ -115,8 +124,9 @@ LL |     let [&mut &(mut x)] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&(mut x)] = &[&mut 0];
-   |          ~
+LL -     let [&mut &(mut x)] = &[&mut 0];
+LL +     let [&&(mut x)] = &[&mut 0];
+   |
 
 error: aborting due to 10 previous errors
 
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.stable2021.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.stable2021.stderr
index e7eb1813846..ad19b122c20 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.stable2021.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.stable2021.stderr
@@ -10,8 +10,9 @@ LL |     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(&mut Some(x)) = &Some(&mut Some(0)) {
-   |                           ~
+LL -     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
+LL +     if let Some(&mut Some(x)) = &Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:31:17
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.structural2024.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.structural2024.stderr
index 861ed2216cd..fdf48a5a71b 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.structural2024.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/pattern-errors.structural2024.stderr
@@ -7,8 +7,9 @@ LL |     if let Some(&mut Some(&_)) = &Some(&Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(&_)) = &Some(&Some(0)) {
-   |                 ~
+LL -     if let Some(&mut Some(&_)) = &Some(&Some(0)) {
+LL +     if let Some(&Some(&_)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:36:23
@@ -19,8 +20,9 @@ LL |     if let Some(&Some(&mut _)) = &Some(&mut Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(&_)) = &Some(&mut Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&mut _)) = &Some(&mut Some(0)) {
+LL +     if let Some(&Some(&_)) = &Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:41:23
@@ -31,8 +33,9 @@ LL |     if let Some(&Some(&mut _)) = &mut Some(&Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(&_)) = &mut Some(&Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&mut _)) = &mut Some(&Some(0)) {
+LL +     if let Some(&Some(&_)) = &mut Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:46:28
@@ -43,8 +46,9 @@ LL |     if let Some(&Some(Some(&mut _))) = &Some(Some(&mut Some(0))) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(Some(&_))) = &Some(Some(&mut Some(0))) {
-   |                            ~
+LL -     if let Some(&Some(Some(&mut _))) = &Some(Some(&mut Some(0))) {
+LL +     if let Some(&Some(Some(&_))) = &Some(Some(&mut Some(0))) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:51:17
@@ -55,8 +59,9 @@ LL |     if let Some(&mut Some(x)) = &Some(Some(0)) {
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     if let Some(&Some(x)) = &Some(Some(0)) {
-   |                 ~
+LL -     if let Some(&mut Some(x)) = &Some(Some(0)) {
+LL +     if let Some(&Some(x)) = &Some(Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:59:11
@@ -67,8 +72,9 @@ LL |     let &[&mut x] = &&mut [0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let &[&x] = &&mut [0];
-   |           ~
+LL -     let &[&mut x] = &&mut [0];
+LL +     let &[&x] = &&mut [0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:65:11
@@ -79,8 +85,9 @@ LL |     let &[&mut x] = &mut &mut [0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let &[&x] = &mut &mut [0];
-   |           ~
+LL -     let &[&mut x] = &mut &mut [0];
+LL +     let &[&x] = &mut &mut [0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:71:11
@@ -91,8 +98,9 @@ LL |     let &[&mut ref x] = &&mut [0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let &[&ref x] = &&mut [0];
-   |           ~
+LL -     let &[&mut ref x] = &&mut [0];
+LL +     let &[&ref x] = &&mut [0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:77:11
@@ -103,8 +111,9 @@ LL |     let &[&mut ref x] = &mut &mut [0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let &[&ref x] = &mut &mut [0];
-   |           ~
+LL -     let &[&mut ref x] = &mut &mut [0];
+LL +     let &[&ref x] = &mut &mut [0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:83:11
@@ -115,8 +124,9 @@ LL |     let &[&mut mut x] = &&mut [0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let &[&mut x] = &&mut [0];
-   |           ~
+LL -     let &[&mut mut x] = &&mut [0];
+LL +     let &[&mut x] = &&mut [0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:89:11
@@ -127,8 +137,9 @@ LL |     let &[&mut mut x] = &mut &mut [0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let &[&mut x] = &mut &mut [0];
-   |           ~
+LL -     let &[&mut mut x] = &mut &mut [0];
+LL +     let &[&mut x] = &mut &mut [0];
+   |
 
 error[E0658]: binding cannot be both mutable and by-reference
   --> $DIR/pattern-errors.rs:97:12
@@ -159,8 +170,9 @@ LL |     let [&&mut x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&x] = &[&mut 0];
-   |           ~
+LL -     let [&&mut x] = &[&mut 0];
+LL +     let [&&x] = &[&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:115:11
@@ -171,8 +183,9 @@ LL |     let [&&mut x] = &mut [&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&x] = &mut [&mut 0];
-   |           ~
+LL -     let [&&mut x] = &mut [&mut 0];
+LL +     let [&&x] = &mut [&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:121:11
@@ -183,8 +196,9 @@ LL |     let [&&mut ref x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&ref x] = &[&mut 0];
-   |           ~
+LL -     let [&&mut ref x] = &[&mut 0];
+LL +     let [&&ref x] = &[&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:127:11
@@ -195,8 +209,9 @@ LL |     let [&&mut ref x] = &mut [&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&ref x] = &mut [&mut 0];
-   |           ~
+LL -     let [&&mut ref x] = &mut [&mut 0];
+LL +     let [&&ref x] = &mut [&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:133:11
@@ -207,8 +222,9 @@ LL |     let [&&mut mut x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&mut x] = &[&mut 0];
-   |           ~
+LL -     let [&&mut mut x] = &[&mut 0];
+LL +     let [&&mut x] = &[&mut 0];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern-errors.rs:139:11
@@ -219,8 +235,9 @@ LL |     let [&&mut mut x] = &mut [&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&&mut x] = &mut [&mut 0];
-   |           ~
+LL -     let [&&mut mut x] = &mut [&mut 0];
+LL +     let [&&mut x] = &mut [&mut 0];
+   |
 
 error: aborting due to 19 previous errors
 
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.classic2024.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.classic2024.stderr
index b7fb70dfd24..56125be2d6f 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.classic2024.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.classic2024.stderr
@@ -7,8 +7,9 @@ LL |     let [&mut ref x] = &[&mut 0];
    = note: cannot match inherited `&` with `&mut` pattern
 help: replace this `&mut` pattern with `&`
    |
-LL |     let [&ref x] = &[&mut 0];
-   |          ~
+LL -     let [&mut ref x] = &[&mut 0];
+LL +     let [&ref x] = &[&mut 0];
+   |
 
 error: binding modifiers may only be written when the default binding mode is `move`
   --> $DIR/ref-binding-on-inh-ref-errors.rs:67:10
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref_pat_eat_one_layer_2021_fail.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref_pat_eat_one_layer_2021_fail.stderr
index 1a921234ea0..0158ed0f423 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref_pat_eat_one_layer_2021_fail.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref_pat_eat_one_layer_2021_fail.stderr
@@ -10,8 +10,9 @@ LL |     if let Some(Some(&x)) = &Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(Some(x)) = &Some(&Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&x)) = &Some(&Some(0)) {
+LL +     if let Some(Some(x)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ref_pat_eat_one_layer_2021_fail.rs:10:23
@@ -70,8 +71,9 @@ LL |     if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
    |                      ^^^^^^
 help: consider removing `&mut` from the pattern
    |
-LL |     if let Some(Some(x)) = &mut Some(&mut Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
+LL +     if let Some(Some(x)) = &mut Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ref_pat_eat_one_layer_2021_fail.rs:25:22
@@ -85,8 +87,9 @@ LL |     if let Some(Some(&x)) = &Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(Some(x)) = &Some(&Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&x)) = &Some(&Some(0)) {
+LL +     if let Some(Some(x)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ref_pat_eat_one_layer_2021_fail.rs:29:27
@@ -100,8 +103,9 @@ LL |     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(&mut Some(x)) = &Some(&mut Some(0)) {
-   |                           ~
+LL -     if let Some(&mut Some(&x)) = &Some(&mut Some(0)) {
+LL +     if let Some(&mut Some(x)) = &Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ref_pat_eat_one_layer_2021_fail.rs:33:23
@@ -120,8 +124,9 @@ LL |     if let Some(&Some(&mut x)) = &mut Some(&Some(0)) {
    |                       ^^^^^^
 help: consider removing `&mut` from the pattern
    |
-LL |     if let Some(&Some(x)) = &mut Some(&Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&mut x)) = &mut Some(&Some(0)) {
+LL +     if let Some(&Some(x)) = &mut Some(&Some(0)) {
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/well-typed-edition-2024.stable2021.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/well-typed-edition-2024.stable2021.stderr
index e9c338de243..b1a8024397b 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/well-typed-edition-2024.stable2021.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/well-typed-edition-2024.stable2021.stderr
@@ -26,8 +26,9 @@ LL |     if let Some(Some(&x)) = &Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(Some(x)) = &Some(&Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&x)) = &Some(&Some(0)) {
+LL +     if let Some(Some(x)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/well-typed-edition-2024.rs:42:17
@@ -57,8 +58,9 @@ LL |     if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
    |                      ^^^^^^
 help: consider removing `&mut` from the pattern
    |
-LL |     if let Some(Some(x)) = &mut Some(&mut Some(0)) {
-   |                      ~
+LL -     if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
+LL +     if let Some(Some(x)) = &mut Some(&mut Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/well-typed-edition-2024.rs:54:23
@@ -72,8 +74,9 @@ LL |     if let Some(&Some(&x)) = Some(&Some(&mut 0)) {
                       found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(&Some(x)) = Some(&Some(&mut 0)) {
-   |                       ~
+LL -     if let Some(&Some(&x)) = Some(&Some(&mut 0)) {
+LL +     if let Some(&Some(x)) = Some(&Some(&mut 0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/well-typed-edition-2024.rs:61:23
@@ -87,8 +90,9 @@ LL |     if let Some(&Some(&x)) = &Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(&Some(x)) = &Some(&Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&x)) = &Some(&Some(0)) {
+LL +     if let Some(&Some(x)) = &Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/well-typed-edition-2024.rs:68:17
@@ -135,8 +139,9 @@ LL |     if let Some(&Some(&x)) = &mut Some(&Some(0)) {
            found reference `&_`
 help: consider removing `&` from the pattern
    |
-LL |     if let Some(&Some(x)) = &mut Some(&Some(0)) {
-   |                       ~
+LL -     if let Some(&Some(&x)) = &mut Some(&Some(0)) {
+LL +     if let Some(&Some(x)) = &mut Some(&Some(0)) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/well-typed-edition-2024.rs:93:10
diff --git a/tests/ui/pattern/slice-pattern-refutable.stderr b/tests/ui/pattern/slice-pattern-refutable.stderr
index 3d9f769d134..ece5e0283e2 100644
--- a/tests/ui/pattern/slice-pattern-refutable.stderr
+++ b/tests/ui/pattern/slice-pattern-refutable.stderr
@@ -8,8 +8,9 @@ LL |     let [a, b, c] = Zeroes.into() else {
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     let [a, b, c] = <Zeroes as Into<T>>::into(Zeroes) else {
-   |                     ++++++++++++++++++++++++++      ~
+LL -     let [a, b, c] = Zeroes.into() else {
+LL +     let [a, b, c] = <Zeroes as Into<T>>::into(Zeroes) else {
+   |
 
 error[E0282]: type annotations needed
   --> $DIR/slice-pattern-refutable.rs:21:31
@@ -21,8 +22,9 @@ LL |     if let [a, b, c] = Zeroes.into() {
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     if let [a, b, c] = <Zeroes as Into<T>>::into(Zeroes) {
-   |                        ++++++++++++++++++++++++++      ~
+LL -     if let [a, b, c] = Zeroes.into() {
+LL +     if let [a, b, c] = <Zeroes as Into<T>>::into(Zeroes) {
+   |
 
 error[E0282]: type annotations needed
   --> $DIR/slice-pattern-refutable.rs:28:31
@@ -34,8 +36,9 @@ LL |     if let [a, b, c] = Zeroes.into() {
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     if let [a, b, c] = <Zeroes as Into<T>>::into(Zeroes) {
-   |                        ++++++++++++++++++++++++++      ~
+LL -     if let [a, b, c] = Zeroes.into() {
+LL +     if let [a, b, c] = <Zeroes as Into<T>>::into(Zeroes) {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/pattern/slice-patterns-ambiguity.stderr b/tests/ui/pattern/slice-patterns-ambiguity.stderr
index 690776196ce..539afed0bc0 100644
--- a/tests/ui/pattern/slice-patterns-ambiguity.stderr
+++ b/tests/ui/pattern/slice-patterns-ambiguity.stderr
@@ -8,8 +8,9 @@ LL |     let &[a, b] = Zeroes.into() else {
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     let &[a, b] = <Zeroes as Into<&_>>::into(Zeroes) else {
-   |                   +++++++++++++++++++++++++++      ~
+LL -     let &[a, b] = Zeroes.into() else {
+LL +     let &[a, b] = <Zeroes as Into<&_>>::into(Zeroes) else {
+   |
 
 error[E0282]: type annotations needed
   --> $DIR/slice-patterns-ambiguity.rs:32:29
@@ -21,8 +22,9 @@ LL |     if let &[a, b] = Zeroes.into() {
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     if let &[a, b] = <Zeroes as Into<&_>>::into(Zeroes) {
-   |                      +++++++++++++++++++++++++++      ~
+LL -     if let &[a, b] = Zeroes.into() {
+LL +     if let &[a, b] = <Zeroes as Into<&_>>::into(Zeroes) {
+   |
 
 error[E0282]: type annotations needed
   --> $DIR/slice-patterns-ambiguity.rs:39:29
@@ -34,8 +36,9 @@ LL |     if let &[a, b] = Zeroes.into() {
    |
 help: try using a fully qualified path to specify the expected types
    |
-LL |     if let &[a, b] = <Zeroes as Into<&_>>::into(Zeroes) {
-   |                      +++++++++++++++++++++++++++      ~
+LL -     if let &[a, b] = Zeroes.into() {
+LL +     if let &[a, b] = <Zeroes as Into<&_>>::into(Zeroes) {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/pattern/usefulness/doc-hidden-fields.stderr b/tests/ui/pattern/usefulness/doc-hidden-fields.stderr
index 158eac9a1bd..2f53ebe6f3f 100644
--- a/tests/ui/pattern/usefulness/doc-hidden-fields.stderr
+++ b/tests/ui/pattern/usefulness/doc-hidden-fields.stderr
@@ -17,16 +17,19 @@ LL |     let HiddenStruct { one } = HiddenStruct::default();
    |
 help: include the missing field in the pattern and ignore the inaccessible fields
    |
-LL |     let HiddenStruct { one, two, .. } = HiddenStruct::default();
-   |                           ~~~~~~~~~~~
+LL -     let HiddenStruct { one } = HiddenStruct::default();
+LL +     let HiddenStruct { one, two, .. } = HiddenStruct::default();
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let HiddenStruct { one, two: _, .. } = HiddenStruct::default();
-   |                           ~~~~~~~~~~~~~~
+LL -     let HiddenStruct { one } = HiddenStruct::default();
+LL +     let HiddenStruct { one, two: _, .. } = HiddenStruct::default();
+   |
 help: or always ignore missing fields here
    |
-LL |     let HiddenStruct { one, .. } = HiddenStruct::default();
-   |                           ~~~~~~
+LL -     let HiddenStruct { one } = HiddenStruct::default();
+LL +     let HiddenStruct { one, .. } = HiddenStruct::default();
+   |
 
 error[E0027]: pattern does not mention field `two`
   --> $DIR/doc-hidden-fields.rs:21:9
@@ -36,16 +39,19 @@ LL |     let HiddenStruct { one, hide } = HiddenStruct::default();
    |
 help: include the missing field in the pattern
    |
-LL |     let HiddenStruct { one, hide, two } = HiddenStruct::default();
-   |                                 ~~~~~~~
+LL -     let HiddenStruct { one, hide } = HiddenStruct::default();
+LL +     let HiddenStruct { one, hide, two } = HiddenStruct::default();
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let HiddenStruct { one, hide, two: _ } = HiddenStruct::default();
-   |                                 ~~~~~~~~~~
+LL -     let HiddenStruct { one, hide } = HiddenStruct::default();
+LL +     let HiddenStruct { one, hide, two: _ } = HiddenStruct::default();
+   |
 help: or always ignore missing fields here
    |
-LL |     let HiddenStruct { one, hide, .. } = HiddenStruct::default();
-   |                                 ~~~~~~
+LL -     let HiddenStruct { one, hide } = HiddenStruct::default();
+LL +     let HiddenStruct { one, hide, .. } = HiddenStruct::default();
+   |
 
 error[E0027]: pattern does not mention field `im_hidden`
   --> $DIR/doc-hidden-fields.rs:24:9
@@ -55,16 +61,19 @@ LL |     let InCrate { a, b } = InCrate { a: 0, b: false, im_hidden: 0 };
    |
 help: include the missing field in the pattern
    |
-LL |     let InCrate { a, b, im_hidden } = InCrate { a: 0, b: false, im_hidden: 0 };
-   |                       ~~~~~~~~~~~~~
+LL -     let InCrate { a, b } = InCrate { a: 0, b: false, im_hidden: 0 };
+LL +     let InCrate { a, b, im_hidden } = InCrate { a: 0, b: false, im_hidden: 0 };
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let InCrate { a, b, im_hidden: _ } = InCrate { a: 0, b: false, im_hidden: 0 };
-   |                       ~~~~~~~~~~~~~~~~
+LL -     let InCrate { a, b } = InCrate { a: 0, b: false, im_hidden: 0 };
+LL +     let InCrate { a, b, im_hidden: _ } = InCrate { a: 0, b: false, im_hidden: 0 };
+   |
 help: or always ignore missing fields here
    |
-LL |     let InCrate { a, b, .. } = InCrate { a: 0, b: false, im_hidden: 0 };
-   |                       ~~~~~~
+LL -     let InCrate { a, b } = InCrate { a: 0, b: false, im_hidden: 0 };
+LL +     let InCrate { a, b, .. } = InCrate { a: 0, b: false, im_hidden: 0 };
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/pattern/usefulness/stable-gated-fields.stderr b/tests/ui/pattern/usefulness/stable-gated-fields.stderr
index d6e9bac7c13..7b44bc79acf 100644
--- a/tests/ui/pattern/usefulness/stable-gated-fields.stderr
+++ b/tests/ui/pattern/usefulness/stable-gated-fields.stderr
@@ -6,16 +6,19 @@ LL |     let UnstableStruct { stable } = UnstableStruct::default();
    |
 help: include the missing field in the pattern and ignore the inaccessible fields
    |
-LL |     let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
-   |                                ~~~~~~~~~~~~~~~
+LL -     let UnstableStruct { stable } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let UnstableStruct { stable, stable2: _, .. } = UnstableStruct::default();
-   |                                ~~~~~~~~~~~~~~~~~~
+LL -     let UnstableStruct { stable } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, stable2: _, .. } = UnstableStruct::default();
+   |
 help: or always ignore missing fields here
    |
-LL |     let UnstableStruct { stable, .. } = UnstableStruct::default();
-   |                                ~~~~~~
+LL -     let UnstableStruct { stable } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, .. } = UnstableStruct::default();
+   |
 
 error: pattern requires `..` due to inaccessible fields
   --> $DIR/stable-gated-fields.rs:11:9
diff --git a/tests/ui/pattern/usefulness/unstable-gated-fields.stderr b/tests/ui/pattern/usefulness/unstable-gated-fields.stderr
index bb10e439ee2..4487f273534 100644
--- a/tests/ui/pattern/usefulness/unstable-gated-fields.stderr
+++ b/tests/ui/pattern/usefulness/unstable-gated-fields.stderr
@@ -6,16 +6,19 @@ LL |     let UnstableStruct { stable, stable2, } = UnstableStruct::default();
    |
 help: include the missing field in the pattern
    |
-LL |     let UnstableStruct { stable, stable2, unstable } = UnstableStruct::default();
-   |                                         ~~~~~~~~~~~~
+LL -     let UnstableStruct { stable, stable2, } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, stable2, unstable } = UnstableStruct::default();
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let UnstableStruct { stable, stable2, unstable: _ } = UnstableStruct::default();
-   |                                         ~~~~~~~~~~~~~~~
+LL -     let UnstableStruct { stable, stable2, } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, stable2, unstable: _ } = UnstableStruct::default();
+   |
 help: or always ignore missing fields here
    |
-LL |     let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
-   |                                         ~~~~~~
+LL -     let UnstableStruct { stable, stable2, } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, stable2, .. } = UnstableStruct::default();
+   |
 
 error[E0027]: pattern does not mention field `stable2`
   --> $DIR/unstable-gated-fields.rs:13:9
@@ -25,16 +28,19 @@ LL |     let UnstableStruct { stable, unstable, } = UnstableStruct::default();
    |
 help: include the missing field in the pattern
    |
-LL |     let UnstableStruct { stable, unstable, stable2 } = UnstableStruct::default();
-   |                                          ~~~~~~~~~~~
+LL -     let UnstableStruct { stable, unstable, } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, unstable, stable2 } = UnstableStruct::default();
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let UnstableStruct { stable, unstable, stable2: _ } = UnstableStruct::default();
-   |                                          ~~~~~~~~~~~~~~
+LL -     let UnstableStruct { stable, unstable, } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, unstable, stable2: _ } = UnstableStruct::default();
+   |
 help: or always ignore missing fields here
    |
-LL |     let UnstableStruct { stable, unstable, .. } = UnstableStruct::default();
-   |                                          ~~~~~~
+LL -     let UnstableStruct { stable, unstable, } = UnstableStruct::default();
+LL +     let UnstableStruct { stable, unstable, .. } = UnstableStruct::default();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/pptypedef.stderr b/tests/ui/pptypedef.stderr
index 08b90b365e3..96327cfcc65 100644
--- a/tests/ui/pptypedef.stderr
+++ b/tests/ui/pptypedef.stderr
@@ -8,8 +8,9 @@ LL |     let_in(3u32, |i| { assert!(i == 3i32); });
    |
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |     let_in(3u32, |i| { assert!(i == 3u32); });
-   |                                      ~~~
+LL -     let_in(3u32, |i| { assert!(i == 3i32); });
+LL +     let_in(3u32, |i| { assert!(i == 3u32); });
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pptypedef.rs:8:37
@@ -21,8 +22,9 @@ LL |     let_in(3i32, |i| { assert!(i == 3u32); });
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     let_in(3i32, |i| { assert!(i == 3i32); });
-   |                                      ~~~
+LL -     let_in(3i32, |i| { assert!(i == 3u32); });
+LL +     let_in(3i32, |i| { assert!(i == 3i32); });
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/privacy/issue-75907.stderr b/tests/ui/privacy/issue-75907.stderr
index 3121cc04478..8a6484979c0 100644
--- a/tests/ui/privacy/issue-75907.stderr
+++ b/tests/ui/privacy/issue-75907.stderr
@@ -13,8 +13,9 @@ LL |     let Bar(x, y, Foo(z)) = make_bar();
    |                private field
 help: consider making the fields publicly accessible
    |
-LL |     pub(crate) struct Bar(pub u8, pub u8, pub Foo);
-   |                                   ~~~     +++
+LL -     pub(crate) struct Bar(pub u8, pub(in crate::foo) u8, Foo);
+LL +     pub(crate) struct Bar(pub u8, pub u8, pub Foo);
+   |
 
 error[E0532]: cannot match against a tuple struct which contains private fields
   --> $DIR/issue-75907.rs:15:19
diff --git a/tests/ui/privacy/privacy-in-paths.stderr b/tests/ui/privacy/privacy-in-paths.stderr
index 9c3d5e97c62..e6ece35865d 100644
--- a/tests/ui/privacy/privacy-in-paths.stderr
+++ b/tests/ui/privacy/privacy-in-paths.stderr
@@ -25,8 +25,9 @@ LL |     mod bar {
    |     ^^^^^^^
 help: consider importing this struct through its public re-export instead
    |
-LL |         foo::S::f();
-   |         ~~~~~~
+LL -         ::foo::bar::S::f();
+LL +         foo::S::f();
+   |
 
 error[E0603]: trait `T` is private
   --> $DIR/privacy-in-paths.rs:26:23
diff --git a/tests/ui/privacy/privacy-ns1.stderr b/tests/ui/privacy/privacy-ns1.stderr
index 9710cc48637..3396330c993 100644
--- a/tests/ui/privacy/privacy-ns1.stderr
+++ b/tests/ui/privacy/privacy-ns1.stderr
@@ -9,8 +9,9 @@ LL |     Bar();
    |
 help: a unit struct with a similar name exists
    |
-LL |     Baz();
-   |     ~~~
+LL -     Bar();
+LL +     Baz();
+   |
 help: consider importing this function instead
    |
 LL + use foo2::Bar;
@@ -27,8 +28,9 @@ LL |     Bar();
    |
 help: a unit struct with a similar name exists
    |
-LL |     Baz();
-   |     ~~~
+LL -     Bar();
+LL +     Baz();
+   |
 help: consider importing this function
    |
 LL + use foo2::Bar;
@@ -45,8 +47,9 @@ LL |     let _x: Box<Bar>;
    |
 help: a struct with a similar name exists
    |
-LL |     let _x: Box<Baz>;
-   |                 ~~~
+LL -     let _x: Box<Bar>;
+LL +     let _x: Box<Baz>;
+   |
 help: consider importing this trait
    |
 LL + use foo1::Bar;
diff --git a/tests/ui/privacy/privacy-ns2.stderr b/tests/ui/privacy/privacy-ns2.stderr
index 75e735e1e6a..ac98682b2b3 100644
--- a/tests/ui/privacy/privacy-ns2.stderr
+++ b/tests/ui/privacy/privacy-ns2.stderr
@@ -20,8 +20,9 @@ LL |     Bar();
    |
 help: a unit struct with a similar name exists
    |
-LL |     Baz();
-   |     ~~~
+LL -     Bar();
+LL +     Baz();
+   |
 help: consider importing this function instead
    |
 LL + use foo2::Bar;
@@ -35,8 +36,9 @@ LL |     let _x : Bar();
    |
 help: use `=` if you meant to assign
    |
-LL |     let _x = Bar();
-   |            ~
+LL -     let _x : Bar();
+LL +     let _x = Bar();
+   |
 help: consider importing this trait instead
    |
 LL + use foo1::Bar;
diff --git a/tests/ui/privacy/privacy1.stderr b/tests/ui/privacy/privacy1.stderr
index a3552e146a6..cb7b858e54d 100644
--- a/tests/ui/privacy/privacy1.stderr
+++ b/tests/ui/privacy/privacy1.stderr
@@ -142,8 +142,9 @@ LL |     mod baz {
    |     ^^^^^^^
 help: consider importing this function through its public re-export instead
    |
-LL |         bar::foo();
-   |         ~~~~~~~~
+LL -         ::bar::baz::foo();
+LL +         bar::foo();
+   |
 
 error[E0603]: module `baz` is private
   --> $DIR/privacy1.rs:128:16
@@ -158,8 +159,9 @@ LL |     mod baz {
    |     ^^^^^^^
 help: consider importing this function through its public re-export instead
    |
-LL |         bar::bar();
-   |         ~~~~~~~~
+LL -         ::bar::baz::bar();
+LL +         bar::bar();
+   |
 
 error[E0603]: trait `B` is private
   --> $DIR/privacy1.rs:157:17
diff --git a/tests/ui/privacy/privacy5.stderr b/tests/ui/privacy/privacy5.stderr
index ec3abe9b816..8f28f629ba3 100644
--- a/tests/ui/privacy/privacy5.stderr
+++ b/tests/ui/privacy/privacy5.stderr
@@ -52,8 +52,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `A` is private
   --> $DIR/privacy5.rs:56:12
@@ -261,8 +262,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:69:12
@@ -280,8 +282,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:70:12
@@ -299,8 +302,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:71:12
@@ -318,8 +322,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:72:18
@@ -337,8 +342,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:73:18
@@ -356,8 +362,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:74:18
@@ -375,8 +382,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `C` is private
   --> $DIR/privacy5.rs:75:18
@@ -394,8 +402,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `A` is private
   --> $DIR/privacy5.rs:83:17
@@ -451,8 +460,9 @@ LL |     pub struct C(pub isize, isize);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the fields publicly accessible
    |
-LL |     pub struct C(pub isize, pub isize);
-   |                             +++
+LL -     pub struct C(pub isize, isize);
+LL +     pub struct C(pub isize, pub isize);
+   |
 
 error[E0603]: tuple struct constructor `A` is private
   --> $DIR/privacy5.rs:90:20
diff --git a/tests/ui/privacy/sealed-traits/re-exported-trait.stderr b/tests/ui/privacy/sealed-traits/re-exported-trait.stderr
index 6e2f36e3f38..368389af0b9 100644
--- a/tests/ui/privacy/sealed-traits/re-exported-trait.stderr
+++ b/tests/ui/privacy/sealed-traits/re-exported-trait.stderr
@@ -11,8 +11,9 @@ LL |     mod b {
    |     ^^^^^
 help: consider importing this trait through its public re-export instead
    |
-LL | impl a::Trait for S {}
-   |      ~~~~~~~~
+LL - impl a::b::Trait for S {}
+LL + impl a::Trait for S {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/privacy/suggest-box-new.stderr b/tests/ui/privacy/suggest-box-new.stderr
index 1e28b9fbd86..da8405fd0e8 100644
--- a/tests/ui/privacy/suggest-box-new.stderr
+++ b/tests/ui/privacy/suggest-box-new.stderr
@@ -9,18 +9,23 @@ LL |     let _ = std::collections::HashMap();
    |
 help: you might have meant to use an associated function to build this type
    |
-LL |     let _ = std::collections::HashMap::new();
-   |                                      ~~~~~~~
-LL |     let _ = std::collections::HashMap::with_capacity(_);
-   |                                      ~~~~~~~~~~~~~~~~~~
-LL |     let _ = std::collections::HashMap::with_hasher(_);
-   |                                      ~~~~~~~~~~~~~~~~
-LL |     let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
-   |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = std::collections::HashMap();
+LL +     let _ = std::collections::HashMap::new();
+   |
+LL -     let _ = std::collections::HashMap();
+LL +     let _ = std::collections::HashMap::with_capacity(_);
+   |
+LL -     let _ = std::collections::HashMap();
+LL +     let _ = std::collections::HashMap::with_hasher(_);
+   |
+LL -     let _ = std::collections::HashMap();
+LL +     let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
+   |
 help: consider using the `Default` trait
    |
-LL |     let _ = <std::collections::HashMap as std::default::Default>::default();
-   |             +                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = std::collections::HashMap();
+LL +     let _ = <std::collections::HashMap as std::default::Default>::default();
+   |
 
 error[E0423]: cannot initialize a tuple struct which contains private fields
   --> $DIR/suggest-box-new.rs:8:19
@@ -36,19 +41,36 @@ note: constructor is not visible here due to private fields
    = note: private field
 help: you might have meant to use an associated function to build this type
    |
-LL |         wtf: Some(Box::new(_)),
-   |                      ~~~~~~~~
-LL |         wtf: Some(Box::new_uninit()),
-   |                      ~~~~~~~~~~~~~~
-LL |         wtf: Some(Box::new_zeroed()),
-   |                      ~~~~~~~~~~~~~~
-LL |         wtf: Some(Box::new_in(_, _)),
-   |                      ~~~~~~~~~~~~~~
+LL -         wtf: Some(Box(U {
+LL -             wtf: None,
+LL -             x: (),
+LL -         })),
+LL +         wtf: Some(Box::new(_)),
+   |
+LL -         wtf: Some(Box(U {
+LL -             wtf: None,
+LL -             x: (),
+LL -         })),
+LL +         wtf: Some(Box::new_uninit()),
+   |
+LL -         wtf: Some(Box(U {
+LL -             wtf: None,
+LL -             x: (),
+LL -         })),
+LL +         wtf: Some(Box::new_zeroed()),
+   |
+LL -         wtf: Some(Box(U {
+LL -             wtf: None,
+LL -             x: (),
+LL -         })),
+LL +         wtf: Some(Box::new_in(_, _)),
+   |
      and 12 other candidates
 help: consider using the `Default` trait
    |
-LL |         wtf: Some(<Box as std::default::Default>::default()),
-   |                   +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         wtf: Some(Box(U {
+LL +         wtf: Some(<Box as std::default::Default>::default()),
+   |
 
 error: cannot construct `HashMap<_, _, _>` with struct literal syntax due to private fields
   --> $DIR/suggest-box-new.rs:16:13
@@ -59,18 +81,23 @@ LL |     let _ = std::collections::HashMap {};
    = note: private field `base` that was not provided
 help: you might have meant to use an associated function to build this type
    |
-LL |     let _ = std::collections::HashMap::new();
-   |                                      ~~~~~~~
-LL |     let _ = std::collections::HashMap::with_capacity(_);
-   |                                      ~~~~~~~~~~~~~~~~~~
-LL |     let _ = std::collections::HashMap::with_hasher(_);
-   |                                      ~~~~~~~~~~~~~~~~
-LL |     let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
-   |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = std::collections::HashMap {};
+LL +     let _ = std::collections::HashMap::new();
+   |
+LL -     let _ = std::collections::HashMap {};
+LL +     let _ = std::collections::HashMap::with_capacity(_);
+   |
+LL -     let _ = std::collections::HashMap {};
+LL +     let _ = std::collections::HashMap::with_hasher(_);
+   |
+LL -     let _ = std::collections::HashMap {};
+LL +     let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
+   |
 help: consider using the `Default` trait
    |
-LL |     let _ = <std::collections::HashMap as std::default::Default>::default();
-   |             +                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = std::collections::HashMap {};
+LL +     let _ = <std::collections::HashMap as std::default::Default>::default();
+   |
 
 error: cannot construct `Box<_, _>` with struct literal syntax due to private fields
   --> $DIR/suggest-box-new.rs:18:13
@@ -81,19 +108,24 @@ LL |     let _ = Box {};
    = note: private fields `0` and `1` that were not provided
 help: you might have meant to use an associated function to build this type
    |
-LL |     let _ = Box::new(_);
-   |                ~~~~~~~~
-LL |     let _ = Box::new_uninit();
-   |                ~~~~~~~~~~~~~~
-LL |     let _ = Box::new_zeroed();
-   |                ~~~~~~~~~~~~~~
-LL |     let _ = Box::new_in(_, _);
-   |                ~~~~~~~~~~~~~~
+LL -     let _ = Box {};
+LL +     let _ = Box::new(_);
+   |
+LL -     let _ = Box {};
+LL +     let _ = Box::new_uninit();
+   |
+LL -     let _ = Box {};
+LL +     let _ = Box::new_zeroed();
+   |
+LL -     let _ = Box {};
+LL +     let _ = Box::new_in(_, _);
+   |
      and 12 other candidates
 help: consider using the `Default` trait
    |
-LL |     let _ = <Box as std::default::Default>::default();
-   |             +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = Box {};
+LL +     let _ = <Box as std::default::Default>::default();
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/privacy/suggest-making-field-public.stderr b/tests/ui/privacy/suggest-making-field-public.stderr
index e92e9aae310..3e52232dd59 100644
--- a/tests/ui/privacy/suggest-making-field-public.stderr
+++ b/tests/ui/privacy/suggest-making-field-public.stderr
@@ -14,8 +14,9 @@ LL |     pub struct A(pub(self)String);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the field publicly accessible
    |
-LL |     pub struct A(pub String);
-   |                  ~~~
+LL -     pub struct A(pub(self)String);
+LL +     pub struct A(pub String);
+   |
 
 error[E0423]: cannot initialize a tuple struct which contains private fields
   --> $DIR/suggest-making-field-public.rs:9:9
@@ -30,8 +31,9 @@ LL |     pub struct A(pub(self)String);
    |                  ^^^^^^^^^^^^^^^ private field
 help: consider making the field publicly accessible
    |
-LL |     pub struct A(pub String);
-   |                  ~~~
+LL -     pub struct A(pub(self)String);
+LL +     pub struct A(pub String);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/privacy/sysroot-private.default.stderr b/tests/ui/privacy/sysroot-private.default.stderr
index fef88d107e6..692b1bbd4db 100644
--- a/tests/ui/privacy/sysroot-private.default.stderr
+++ b/tests/ui/privacy/sysroot-private.default.stderr
@@ -14,8 +14,9 @@ LL | fn trait_member<T>(val: &T, key: &K) -> bool {
    |
 help: a type parameter with a similar name exists
    |
-LL | fn trait_member<T>(val: &T, key: &T) -> bool {
-   |                                   ~
+LL - fn trait_member<T>(val: &T, key: &K) -> bool {
+LL + fn trait_member<T>(val: &T, key: &T) -> bool {
+   |
 help: you might be missing a type parameter
    |
 LL | fn trait_member<T, K>(val: &T, key: &K) -> bool {
diff --git a/tests/ui/privacy/sysroot-private.rustc_private_enabled.stderr b/tests/ui/privacy/sysroot-private.rustc_private_enabled.stderr
index 4b54b59714a..dc2d890a082 100644
--- a/tests/ui/privacy/sysroot-private.rustc_private_enabled.stderr
+++ b/tests/ui/privacy/sysroot-private.rustc_private_enabled.stderr
@@ -14,8 +14,9 @@ LL | fn trait_member<T>(val: &T, key: &K) -> bool {
    |
 help: a type parameter with a similar name exists
    |
-LL | fn trait_member<T>(val: &T, key: &T) -> bool {
-   |                                   ~
+LL - fn trait_member<T>(val: &T, key: &K) -> bool {
+LL + fn trait_member<T>(val: &T, key: &T) -> bool {
+   |
 help: you might be missing a type parameter
    |
 LL | fn trait_member<T, K>(val: &T, key: &K) -> bool {
diff --git a/tests/ui/proc-macro/disappearing-resolution.stderr b/tests/ui/proc-macro/disappearing-resolution.stderr
index e66f721444f..734e0cd2ab6 100644
--- a/tests/ui/proc-macro/disappearing-resolution.stderr
+++ b/tests/ui/proc-macro/disappearing-resolution.stderr
@@ -22,8 +22,9 @@ LL | pub fn empty_derive(_: TokenStream) -> TokenStream {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ you could import this directly
 help: import `Empty` directly
    |
-LL | use test_macros::Empty;
-   |     ~~~~~~~~~~~~~~~~~~
+LL - use m::Empty;
+LL + use test_macros::Empty;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/proc-macro/issue-66286.stderr b/tests/ui/proc-macro/issue-66286.stderr
index c92bed1b563..fe6bec22164 100644
--- a/tests/ui/proc-macro/issue-66286.stderr
+++ b/tests/ui/proc-macro/issue-66286.stderr
@@ -6,8 +6,9 @@ LL | pub extern "C" fn foo(_: Vec(u32)) -> u32 {
    |
 help: use angle brackets instead
    |
-LL | pub extern "C" fn foo(_: Vec<u32>) -> u32 {
-   |                             ~   ~
+LL - pub extern "C" fn foo(_: Vec(u32)) -> u32 {
+LL + pub extern "C" fn foo(_: Vec<u32>) -> u32 {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr b/tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr
index aeb824303e7..835648ab435 100644
--- a/tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr
+++ b/tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr
@@ -9,8 +9,9 @@ LL | pub struct Foo;
    |
 help: to annotate the struct, change the doc comment from inner to outer style
    |
-LL | /// Inner doc comment
-   |   ~
+LL - //! Inner doc comment
+LL + /// Inner doc comment
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/pub/pub-ident-fn-or-struct.stderr b/tests/ui/pub/pub-ident-fn-or-struct.stderr
index ceadc510c63..1bdb547be1e 100644
--- a/tests/ui/pub/pub-ident-fn-or-struct.stderr
+++ b/tests/ui/pub/pub-ident-fn-or-struct.stderr
@@ -6,8 +6,9 @@ LL | pub S (foo) bar
    |
 help: if you meant to call a macro, try
    |
-LL | pub S! (foo) bar
-   |     ~~
+LL - pub S (foo) bar
+LL + pub S! (foo) bar
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/pub/pub-restricted.stderr b/tests/ui/pub/pub-restricted.stderr
index fc177aa2033..35c48c6d769 100644
--- a/tests/ui/pub/pub-restricted.stderr
+++ b/tests/ui/pub/pub-restricted.stderr
@@ -10,8 +10,9 @@ LL | pub (a) fn afn() {}
            `pub(in path::to::module)`: visible only on the specified path
 help: make this visible only to module `a` with `in`
    |
-LL | pub (in a) fn afn() {}
-   |      ~~~~
+LL - pub (a) fn afn() {}
+LL + pub (in a) fn afn() {}
+   |
 
 error[E0704]: incorrect visibility restriction
   --> $DIR/pub-restricted.rs:4:6
@@ -25,8 +26,9 @@ LL | pub (b) fn bfn() {}
            `pub(in path::to::module)`: visible only on the specified path
 help: make this visible only to module `b` with `in`
    |
-LL | pub (in b) fn bfn() {}
-   |      ~~~~
+LL - pub (b) fn bfn() {}
+LL + pub (in b) fn bfn() {}
+   |
 
 error[E0704]: incorrect visibility restriction
   --> $DIR/pub-restricted.rs:5:6
@@ -40,8 +42,9 @@ LL | pub (crate::a) fn cfn() {}
            `pub(in path::to::module)`: visible only on the specified path
 help: make this visible only to module `crate::a` with `in`
    |
-LL | pub (in crate::a) fn cfn() {}
-   |      ~~~~~~~~~~~
+LL - pub (crate::a) fn cfn() {}
+LL + pub (in crate::a) fn cfn() {}
+   |
 
 error[E0704]: incorrect visibility restriction
   --> $DIR/pub-restricted.rs:22:14
@@ -55,8 +58,9 @@ LL |         pub (a) invalid: usize,
            `pub(in path::to::module)`: visible only on the specified path
 help: make this visible only to module `a` with `in`
    |
-LL |         pub (in a) invalid: usize,
-   |              ~~~~
+LL -         pub (a) invalid: usize,
+LL +         pub (in a) invalid: usize,
+   |
 
 error[E0704]: incorrect visibility restriction
   --> $DIR/pub-restricted.rs:31:6
@@ -70,8 +74,9 @@ LL | pub (xyz) fn xyz() {}
            `pub(in path::to::module)`: visible only on the specified path
 help: make this visible only to module `xyz` with `in`
    |
-LL | pub (in xyz) fn xyz() {}
-   |      ~~~~~~
+LL - pub (xyz) fn xyz() {}
+LL + pub (in xyz) fn xyz() {}
+   |
 
 error[E0742]: visibilities can only be restricted to ancestor modules
   --> $DIR/pub-restricted.rs:23:17
diff --git a/tests/ui/qualified/qualified-path-params-2.stderr b/tests/ui/qualified/qualified-path-params-2.stderr
index 56644bdd46a..6641e81013f 100644
--- a/tests/ui/qualified/qualified-path-params-2.stderr
+++ b/tests/ui/qualified/qualified-path-params-2.stderr
@@ -6,8 +6,9 @@ LL | type A = <S as Tr>::A::f<u8>;
    |
 help: if there were a trait named `Example` with associated type `f` implemented for `<S as Tr>::A`, you could use the fully-qualified path
    |
-LL | type A = <<S as Tr>::A as Example>::f;
-   |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - type A = <S as Tr>::A::f<u8>;
+LL + type A = <<S as Tr>::A as Example>::f;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/regions/region-object-lifetime-in-coercion.stderr b/tests/ui/regions/region-object-lifetime-in-coercion.stderr
index b5bb08c73c8..3880ae82283 100644
--- a/tests/ui/regions/region-object-lifetime-in-coercion.stderr
+++ b/tests/ui/regions/region-object-lifetime-in-coercion.stderr
@@ -8,12 +8,14 @@ LL |     let x: Box<dyn Foo + 'static> = Box::new(v);
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
    |
-LL | fn a(v: &[u8]) -> Box<dyn Foo + '_> {
-   |                                 ~~
+LL - fn a(v: &[u8]) -> Box<dyn Foo + 'static> {
+LL + fn a(v: &[u8]) -> Box<dyn Foo + '_> {
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn a(v: &'static [u8]) -> Box<dyn Foo + 'static> {
-   |         ~~~~~~~~~~~~~
+LL - fn a(v: &[u8]) -> Box<dyn Foo + 'static> {
+LL + fn a(v: &'static [u8]) -> Box<dyn Foo + 'static> {
+   |
 
 error: lifetime may not live long enough
   --> $DIR/region-object-lifetime-in-coercion.rs:14:5
@@ -25,12 +27,14 @@ LL |     Box::new(v)
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
    |
-LL | fn b(v: &[u8]) -> Box<dyn Foo + '_> {
-   |                                 ~~
+LL - fn b(v: &[u8]) -> Box<dyn Foo + 'static> {
+LL + fn b(v: &[u8]) -> Box<dyn Foo + '_> {
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn b(v: &'static [u8]) -> Box<dyn Foo + 'static> {
-   |         ~~~~~~~~~~~~~
+LL - fn b(v: &[u8]) -> Box<dyn Foo + 'static> {
+LL + fn b(v: &'static [u8]) -> Box<dyn Foo + 'static> {
+   |
 
 error: lifetime may not live long enough
   --> $DIR/region-object-lifetime-in-coercion.rs:21:5
diff --git a/tests/ui/regions/regions-close-object-into-object-2.stderr b/tests/ui/regions/regions-close-object-into-object-2.stderr
index aacb5ea4e87..54364ef0821 100644
--- a/tests/ui/regions/regions-close-object-into-object-2.stderr
+++ b/tests/ui/regions/regions-close-object-into-object-2.stderr
@@ -8,12 +8,14 @@ LL |     Box::new(B(&*v)) as Box<dyn X>
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
    |
-LL | fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'a> {
-   |                                                            ~~
+LL - fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'static> {
+LL + fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'a> {
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn g<'a, T: 'static>(v: Box<(dyn A<T> + 'static)>) -> Box<dyn X + 'static> {
-   |                         ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'static> {
+LL + fn g<'a, T: 'static>(v: Box<(dyn A<T> + 'static)>) -> Box<dyn X + 'static> {
+   |
 
 error[E0515]: cannot return value referencing local data `*v`
   --> $DIR/regions-close-object-into-object-2.rs:9:5
diff --git a/tests/ui/regions/regions-close-object-into-object-4.stderr b/tests/ui/regions/regions-close-object-into-object-4.stderr
index f6a79be0947..d119ec57e98 100644
--- a/tests/ui/regions/regions-close-object-into-object-4.stderr
+++ b/tests/ui/regions/regions-close-object-into-object-4.stderr
@@ -50,12 +50,14 @@ LL |     Box::new(B(&*v)) as Box<dyn X>
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
    |
-LL | fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'a> {
-   |                                                    ~~
+LL - fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
+LL + fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'a> {
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn i<'a, T, U>(v: Box<(dyn A<U> + 'static)>) -> Box<dyn X + 'static> {
-   |                   ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
+LL + fn i<'a, T, U>(v: Box<(dyn A<U> + 'static)>) -> Box<dyn X + 'static> {
+   |
 
 error[E0515]: cannot return value referencing local data `*v`
   --> $DIR/regions-close-object-into-object-4.rs:9:5
diff --git a/tests/ui/regions/regions-proc-bound-capture.stderr b/tests/ui/regions/regions-proc-bound-capture.stderr
index 3fe497bf2e9..3149cd8c9a1 100644
--- a/tests/ui/regions/regions-proc-bound-capture.stderr
+++ b/tests/ui/regions/regions-proc-bound-capture.stderr
@@ -9,12 +9,14 @@ LL |     Box::new(move || { *x })
    |
 help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `x`
    |
-LL | fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + '_> {
-   |                                                           ~~
+LL - fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + 'static> {
+LL + fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + '_> {
+   |
 help: alternatively, add an explicit `'static` bound to this reference
    |
-LL | fn static_proc(x: &'static isize) -> Box<dyn FnMut() -> (isize) + 'static> {
-   |                   ~~~~~~~~~~~~~~
+LL - fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + 'static> {
+LL + fn static_proc(x: &'static isize) -> Box<dyn FnMut() -> (isize) + 'static> {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/repeat-expr/repeat_count.stderr b/tests/ui/repeat-expr/repeat_count.stderr
index c4aebfb0e20..34e29e83666 100644
--- a/tests/ui/repeat-expr/repeat_count.stderr
+++ b/tests/ui/repeat-expr/repeat_count.stderr
@@ -6,8 +6,9 @@ LL |     let a = [0; n];
    |
 help: consider using `const` instead of `let`
    |
-LL |     const n: /* Type */ = 1;
-   |     ~~~~~  ++++++++++++
+LL -     let n = 1;
+LL +     const n: /* Type */ = 1;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/repeat_count.rs:7:17
@@ -63,8 +64,9 @@ LL |     let f = [0; 4u8];
    |
 help: change the type of the numeric literal from `u8` to `usize`
    |
-LL |     let f = [0; 4usize];
-   |                  ~~~~~
+LL -     let f = [0; 4u8];
+LL +     let f = [0; 4usize];
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/repeat-expr/typo-in-repeat-expr-issue-80173.stderr b/tests/ui/repeat-expr/typo-in-repeat-expr-issue-80173.stderr
index 95eddbde9e6..ce2022374f7 100644
--- a/tests/ui/repeat-expr/typo-in-repeat-expr-issue-80173.stderr
+++ b/tests/ui/repeat-expr/typo-in-repeat-expr-issue-80173.stderr
@@ -6,8 +6,9 @@ LL |     let a = ["a", 10];
    |
 help: replace the comma with a semicolon to create an array
    |
-LL |     let a = ["a"; 10];
-   |                 ~
+LL -     let a = ["a", 10];
+LL +     let a = ["a"; 10];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:20:20
@@ -17,8 +18,9 @@ LL |     let b = [Type, size_b];
    |
 help: replace the comma with a semicolon to create an array
    |
-LL |     let b = [Type; size_b];
-   |                  ~
+LL -     let b = [Type, size_b];
+LL +     let b = [Type; size_b];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:25:20
@@ -48,8 +50,9 @@ LL |     let f = ["f", get_size()];
    |
 help: replace the comma with a semicolon to create an array
    |
-LL |     let f = ["f"; get_size()];
-   |                 ~
+LL -     let f = ["f", get_size()];
+LL +     let f = ["f"; get_size()];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:40:19
@@ -65,8 +68,9 @@ LL |     let g = vec![String::new(), 10];
    |
 help: replace the comma with a semicolon to create a vector
    |
-LL |     let g = vec![String::new(); 10];
-   |                               ~
+LL -     let g = vec![String::new(), 10];
+LL +     let g = vec![String::new(); 10];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:49:24
@@ -76,8 +80,9 @@ LL |     let h = vec![Type, dyn_size];
    |
 help: replace the comma with a semicolon to create a vector
    |
-LL |     let h = vec![Type; dyn_size];
-   |                      ~
+LL -     let h = vec![Type, dyn_size];
+LL +     let h = vec![Type; dyn_size];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:53:24
@@ -87,8 +92,9 @@ LL |     let i = vec![Type, get_dyn_size()];
    |
 help: replace the comma with a semicolon to create a vector
    |
-LL |     let i = vec![Type; get_dyn_size()];
-   |                      ~
+LL -     let i = vec![Type, get_dyn_size()];
+LL +     let i = vec![Type; get_dyn_size()];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:57:23
@@ -98,8 +104,9 @@ LL |     let k = vec!['c', 10];
    |
 help: replace the comma with a semicolon to create a vector
    |
-LL |     let k = vec!['c'; 10];
-   |                     ~
+LL -     let k = vec!['c', 10];
+LL +     let k = vec!['c'; 10];
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typo-in-repeat-expr-issue-80173.rs:61:24
diff --git a/tests/ui/resolve/const-with-typo-in-pattern-binding.stderr b/tests/ui/resolve/const-with-typo-in-pattern-binding.stderr
index a0cdac3fa25..f142f91064f 100644
--- a/tests/ui/resolve/const-with-typo-in-pattern-binding.stderr
+++ b/tests/ui/resolve/const-with-typo-in-pattern-binding.stderr
@@ -28,8 +28,9 @@ LL |         _ => {}
    |
 help: you might have meant to pattern match against the value of similarly named constant `god` instead of introducing a new catch-all binding
    |
-LL |         god => {}
-   |         ~~~
+LL -         GOD => {}
+LL +         god => {}
+   |
 
 error: unreachable pattern
   --> $DIR/const-with-typo-in-pattern-binding.rs:30:9
@@ -42,8 +43,9 @@ LL |         _ => {}
    |
 help: you might have meant to pattern match against the value of similarly named constant `GOOD` instead of introducing a new catch-all binding
    |
-LL |         GOOD => {}
-   |         ~~~~
+LL -         GOOOD => {}
+LL +         GOOD => {}
+   |
 
 error: unreachable pattern
   --> $DIR/const-with-typo-in-pattern-binding.rs:36:9
@@ -71,8 +73,9 @@ LL |         _ => {}
    |
 help: you might have meant to pattern match against the value of constant `ARCH` instead of introducing a new catch-all binding
    |
-LL |         std::env::consts::ARCH => {}
-   |         ~~~~~~~~~~~~~~~~~~~~~~
+LL -         ARCH => {}
+LL +         std::env::consts::ARCH => {}
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/resolve/issue-100365.stderr b/tests/ui/resolve/issue-100365.stderr
index 2d9bab4304d..7a880c6f31a 100644
--- a/tests/ui/resolve/issue-100365.stderr
+++ b/tests/ui/resolve/issue-100365.stderr
@@ -6,8 +6,9 @@ LL |     let addr = Into::<std::net::IpAddr>.into([127, 0, 0, 1]);
    |
 help: use the path separator to refer to an item
    |
-LL |     let addr = Into::<std::net::IpAddr>::into([127, 0, 0, 1]);
-   |                                        ~~
+LL -     let addr = Into::<std::net::IpAddr>.into([127, 0, 0, 1]);
+LL +     let addr = Into::<std::net::IpAddr>::into([127, 0, 0, 1]);
+   |
 
 error[E0423]: expected value, found trait `Into`
   --> $DIR/issue-100365.rs:6:13
@@ -17,8 +18,9 @@ LL |     let _ = Into.into(());
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = Into::into(());
-   |                 ~~
+LL -     let _ = Into.into(());
+LL +     let _ = Into::into(());
+   |
 
 error[E0423]: expected value, found trait `Into`
   --> $DIR/issue-100365.rs:10:13
@@ -28,8 +30,9 @@ LL |     let _ = Into::<()>.into;
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = Into::<()>::into;
-   |                       ~~
+LL -     let _ = Into::<()>.into;
+LL +     let _ = Into::<()>::into;
+   |
 
 error[E0423]: expected value, found trait `std::iter::Iterator`
   --> $DIR/issue-100365.rs:17:9
@@ -65,8 +68,9 @@ LL |     let _ = create!();
    = note: this error originates in the macro `create` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |         Into::<String>::into("")
-   |                       ~~
+LL -         Into::<String>.into("")
+LL +         Into::<String>::into("")
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/resolve/issue-101749.stderr b/tests/ui/resolve/issue-101749.stderr
index fedbf182ee8..09e800ec7c3 100644
--- a/tests/ui/resolve/issue-101749.stderr
+++ b/tests/ui/resolve/issue-101749.stderr
@@ -7,8 +7,9 @@ LL |     let _ = rect::area();
    = help: you might be missing a crate named `rect`
 help: you may have meant to call an instance method
    |
-LL |     let _ = rect.area();
-   |                 ~
+LL -     let _ = rect::area();
+LL +     let _ = rect.area();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/resolve/issue-103202.stderr b/tests/ui/resolve/issue-103202.stderr
index 87fa940ac3b..cf32efab981 100644
--- a/tests/ui/resolve/issue-103202.stderr
+++ b/tests/ui/resolve/issue-103202.stderr
@@ -6,8 +6,9 @@ LL |     fn f(self: &S::x) {}
    |
 help: if there were a trait named `Example` with associated type `x` implemented for `S`, you could use the fully-qualified path
    |
-LL |     fn f(self: &<S as Example>::x) {}
-   |                 ~~~~~~~~~~~~~~~~~
+LL -     fn f(self: &S::x) {}
+LL +     fn f(self: &<S as Example>::x) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/resolve/issue-103474.stderr b/tests/ui/resolve/issue-103474.stderr
index e48fb31eccc..717892921f1 100644
--- a/tests/ui/resolve/issue-103474.stderr
+++ b/tests/ui/resolve/issue-103474.stderr
@@ -6,8 +6,9 @@ LL |         this.i
    |
 help: you might have meant to use `self` here instead
    |
-LL |         self.i
-   |         ~~~~
+LL -         this.i
+LL +         self.i
+   |
 help: if you meant to use `self`, you are also missing a `self` receiver argument
    |
 LL |     fn needs_self(&self) {
diff --git a/tests/ui/resolve/issue-112472-multi-generics-suggestion.stderr b/tests/ui/resolve/issue-112472-multi-generics-suggestion.stderr
index f463e2dad2c..1ed6e68c333 100644
--- a/tests/ui/resolve/issue-112472-multi-generics-suggestion.stderr
+++ b/tests/ui/resolve/issue-112472-multi-generics-suggestion.stderr
@@ -6,8 +6,9 @@ LL |     <DecodeLine as convert::TryFrom<String>>::Error: ParseError,
    |
 help: constrain the associated type to `ParseError`
    |
-LL |     DecodeLine: convert::TryFrom<String, Error = ParseError>,
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     <DecodeLine as convert::TryFrom<String>>::Error: ParseError,
+LL +     DecodeLine: convert::TryFrom<String, Error = ParseError>,
+   |
 
 error[E0404]: expected trait, found enum `ParseError`
   --> $DIR/issue-112472-multi-generics-suggestion.rs:25:45
@@ -17,8 +18,9 @@ LL |     <DecodeLine as TryFrom<String>>::Error: ParseError,
    |
 help: constrain the associated type to `ParseError`
    |
-LL |     DecodeLine: TryFrom<String, Error = ParseError>,
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     <DecodeLine as TryFrom<String>>::Error: ParseError,
+LL +     DecodeLine: TryFrom<String, Error = ParseError>,
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/issue-18252.stderr b/tests/ui/resolve/issue-18252.stderr
index 6cb9c1f1dd2..b22ad3f5225 100644
--- a/tests/ui/resolve/issue-18252.stderr
+++ b/tests/ui/resolve/issue-18252.stderr
@@ -6,8 +6,9 @@ LL |     let f = Foo::Variant(42);
    |
 help: you might have meant to create a new value of the struct
    |
-LL |     let f = Foo::Variant { x: /* value */ };
-   |                          ~~~~~~~~~~~~~~~~~~
+LL -     let f = Foo::Variant(42);
+LL +     let f = Foo::Variant { x: /* value */ };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/resolve/issue-22692.stderr b/tests/ui/resolve/issue-22692.stderr
index be0634ebffc..546f12b35c1 100644
--- a/tests/ui/resolve/issue-22692.stderr
+++ b/tests/ui/resolve/issue-22692.stderr
@@ -6,8 +6,9 @@ LL |     let _ = String.new();
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = String::new();
-   |                   ~~
+LL -     let _ = String.new();
+LL +     let _ = String::new();
+   |
 
 error[E0423]: expected value, found struct `String`
   --> $DIR/issue-22692.rs:6:13
@@ -17,8 +18,9 @@ LL |     let _ = String.default;
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = String::default;
-   |                   ~~
+LL -     let _ = String.default;
+LL +     let _ = String::default;
+   |
 
 error[E0423]: expected value, found struct `Vec`
   --> $DIR/issue-22692.rs:10:13
@@ -28,8 +30,9 @@ LL |     let _ = Vec::<()>.with_capacity(1);
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = Vec::<()>::with_capacity(1);
-   |                      ~~
+LL -     let _ = Vec::<()>.with_capacity(1);
+LL +     let _ = Vec::<()>::with_capacity(1);
+   |
 
 error[E0423]: expected value, found struct `std::cell::Cell`
   --> $DIR/issue-22692.rs:17:9
@@ -43,8 +46,9 @@ LL |     Type!().get();
    = note: this error originates in the macro `Type` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |     <Type!()>::get();
-   |     ~~~~~~~~~~~
+LL -     Type!().get();
+LL +     <Type!()>::get();
+   |
 
 error[E0423]: expected value, found struct `std::cell::Cell`
   --> $DIR/issue-22692.rs:17:9
@@ -58,8 +62,9 @@ LL |     Type! {}.get;
    = note: this error originates in the macro `Type` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |     <Type! {}>::get;
-   |     ~~~~~~~~~~~~
+LL -     Type! {}.get;
+LL +     <Type! {}>::get;
+   |
 
 error[E0423]: expected value, found struct `Vec`
   --> $DIR/issue-22692.rs:26:9
@@ -73,8 +78,9 @@ LL |     let _ = create!(type method);
    = note: this error originates in the macro `create` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |         Vec::new()
-   |            ~~
+LL -         Vec.new()
+LL +         Vec::new()
+   |
 
 error[E0423]: expected value, found struct `Vec`
   --> $DIR/issue-22692.rs:31:9
@@ -88,8 +94,9 @@ LL |     let _ = create!(type field);
    = note: this error originates in the macro `create` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |         Vec::new
-   |            ~~
+LL -         Vec.new
+LL +         Vec::new
+   |
 
 error[E0423]: expected value, found struct `std::cell::Cell`
   --> $DIR/issue-22692.rs:17:9
@@ -103,8 +110,9 @@ LL |     let _ = create!(macro method);
    = note: this error originates in the macro `Type` which comes from the expansion of the macro `create` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |         <Type!()>::new(0)
-   |         ~~~~~~~~~~~
+LL -         Type!().new(0)
+LL +         <Type!()>::new(0)
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/resolve/issue-35675.stderr b/tests/ui/resolve/issue-35675.stderr
index 44af65b0768..83d92ea7bf1 100644
--- a/tests/ui/resolve/issue-35675.stderr
+++ b/tests/ui/resolve/issue-35675.stderr
@@ -6,8 +6,9 @@ LL | fn should_return_fruit() -> Apple {
    |
 help: there is an enum variant `Fruit::Apple`; try using the variant's enum
    |
-LL | fn should_return_fruit() -> Fruit {
-   |                             ~~~~~
+LL - fn should_return_fruit() -> Apple {
+LL + fn should_return_fruit() -> Fruit {
+   |
 
 error[E0425]: cannot find function, tuple struct or tuple variant `Apple` in this scope
   --> $DIR/issue-35675.rs:9:5
@@ -57,8 +58,9 @@ LL | fn bar() -> Variant3 {
    |
 help: there is an enum variant `x::Enum::Variant3`; try using the variant's enum
    |
-LL | fn bar() -> x::Enum {
-   |             ~~~~~~~
+LL - fn bar() -> Variant3 {
+LL + fn bar() -> x::Enum {
+   |
 
 error[E0573]: expected type, found variant `Some`
   --> $DIR/issue-35675.rs:28:13
diff --git a/tests/ui/resolve/issue-3907.stderr b/tests/ui/resolve/issue-3907.stderr
index e9dc344496e..0dc85829160 100644
--- a/tests/ui/resolve/issue-3907.stderr
+++ b/tests/ui/resolve/issue-3907.stderr
@@ -6,7 +6,8 @@ LL | impl Foo for S {
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait Foo = dyn issue_3907::Foo;
+LL - type Foo = dyn issue_3907::Foo;
+LL + trait Foo = dyn issue_3907::Foo;
    |
 help: consider importing this trait instead
    |
diff --git a/tests/ui/resolve/issue-39226.stderr b/tests/ui/resolve/issue-39226.stderr
index 857f6a73517..3d771b4fc42 100644
--- a/tests/ui/resolve/issue-39226.stderr
+++ b/tests/ui/resolve/issue-39226.stderr
@@ -9,12 +9,14 @@ LL |         handle: Handle
    |
 help: use struct literal syntax instead
    |
-LL |         handle: Handle {}
-   |                 ~~~~~~~~~
+LL -         handle: Handle
+LL +         handle: Handle {}
+   |
 help: a local variable with a similar name exists
    |
-LL |         handle: handle
-   |                 ~~~~~~
+LL -         handle: Handle
+LL +         handle: handle
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/resolve/issue-42944.stderr b/tests/ui/resolve/issue-42944.stderr
index 4ffa9402c66..53c155d8f13 100644
--- a/tests/ui/resolve/issue-42944.stderr
+++ b/tests/ui/resolve/issue-42944.stderr
@@ -23,8 +23,9 @@ LL |     pub struct Bx(pub(in crate::foo) ());
    |                   ^^^^^^^^^^^^^^^^^^^^^ private field
 help: consider making the field publicly accessible
    |
-LL |     pub struct Bx(pub ());
-   |                   ~~~
+LL -     pub struct Bx(pub(in crate::foo) ());
+LL +     pub struct Bx(pub ());
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/issue-5035.stderr b/tests/ui/resolve/issue-5035.stderr
index 32b972b21ff..b249aaa4b28 100644
--- a/tests/ui/resolve/issue-5035.stderr
+++ b/tests/ui/resolve/issue-5035.stderr
@@ -15,12 +15,14 @@ LL | impl K for isize {}
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait K = dyn I;
+LL - type K = dyn I;
+LL + trait K = dyn I;
    |
 help: a trait with a similar name exists
    |
-LL | impl I for isize {}
-   |      ~
+LL - impl K for isize {}
+LL + impl I for isize {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/issue-5099.stderr b/tests/ui/resolve/issue-5099.stderr
index e9b2a9c4d48..991c39db335 100644
--- a/tests/ui/resolve/issue-5099.stderr
+++ b/tests/ui/resolve/issue-5099.stderr
@@ -6,8 +6,9 @@ LL |         this.a
    |
 help: you might have meant to use `self` here instead
    |
-LL |         self.a
-   |         ~~~~
+LL -         this.a
+LL +         self.a
+   |
 help: if you meant to use `self`, you are also missing a `self` receiver argument
    |
 LL |     fn a(&self) -> A {
@@ -21,8 +22,9 @@ LL |         this.b(x);
    |
 help: you might have meant to use `self` here instead
    |
-LL |         self.b(x);
-   |         ~~~~
+LL -         this.b(x);
+LL +         self.b(x);
+   |
 help: if you meant to use `self`, you are also missing a `self` receiver argument
    |
 LL |     fn b(&self, x: i32) {
@@ -36,8 +38,9 @@ LL |         let _ = || this.a;
    |
 help: you might have meant to use `self` here instead
    |
-LL |         let _ = || self.a;
-   |                    ~~~~
+LL -         let _ = || this.a;
+LL +         let _ = || self.a;
+   |
 help: if you meant to use `self`, you are also missing a `self` receiver argument
    |
 LL |     fn c(&self) {
diff --git a/tests/ui/resolve/issue-55673.stderr b/tests/ui/resolve/issue-55673.stderr
index 7d420126199..30b1cd09085 100644
--- a/tests/ui/resolve/issue-55673.stderr
+++ b/tests/ui/resolve/issue-55673.stderr
@@ -6,8 +6,9 @@ LL |     T::Baa: std::fmt::Debug,
    |
 help: change the associated type name to use `Bar` from `Foo`
    |
-LL |     T::Bar: std::fmt::Debug,
-   |        ~~~
+LL -     T::Baa: std::fmt::Debug,
+LL +     T::Bar: std::fmt::Debug,
+   |
 
 error[E0220]: associated type `Baa` not found for `T`
   --> $DIR/issue-55673.rs:16:8
@@ -17,12 +18,14 @@ LL |     T::Baa: std::fmt::Debug,
    |
 help: consider further restricting type parameter `T` with trait `Foo`
    |
-LL |     T::Baa: std::fmt::Debug, T: Foo
-   |                            ~~~~~~~~
+LL -     T::Baa: std::fmt::Debug,
+LL +     T::Baa: std::fmt::Debug, T: Foo
+   |
 help: ...and changing the associated type name
    |
-LL |     T::Bar: std::fmt::Debug,
-   |        ~~~
+LL -     T::Baa: std::fmt::Debug,
+LL +     T::Bar: std::fmt::Debug,
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/issue-73427.stderr b/tests/ui/resolve/issue-73427.stderr
index 0a9a504f79c..890bb04f24d 100644
--- a/tests/ui/resolve/issue-73427.stderr
+++ b/tests/ui/resolve/issue-73427.stderr
@@ -17,14 +17,17 @@ LL | | }
    | |_^
 help: you might have meant to use one of the following enum variants
    |
-LL |     (A::Tuple()).foo();
-   |     ~~~~~~~~~~~~
-LL |     A::Unit.foo();
-   |     ~~~~~~~
+LL -     A.foo();
+LL +     (A::Tuple()).foo();
+   |
+LL -     A.foo();
+LL +     A::Unit.foo();
+   |
 help: alternatively, the following enum variant is available
    |
-LL |     (A::TupleWithFields(/* fields */)).foo();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     A.foo();
+LL +     (A::TupleWithFields(/* fields */)).foo();
+   |
 
 error[E0423]: expected value, found enum `B`
   --> $DIR/issue-73427.rs:35:5
@@ -58,12 +61,14 @@ LL | | }
    | |_^
 help: you might have meant to use the following enum variant
    |
-LL |     C::Unit.foo();
-   |     ~~~~~~~
+LL -     C.foo();
+LL +     C::Unit.foo();
+   |
 help: alternatively, the following enum variant is available
    |
-LL |     (C::TupleWithFields(/* fields */)).foo();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     C.foo();
+LL +     (C::TupleWithFields(/* fields */)).foo();
+   |
 
 error[E0423]: expected value, found enum `D`
   --> $DIR/issue-73427.rs:39:5
@@ -81,12 +86,14 @@ LL | | }
    | |_^
 help: you might have meant to use the following enum variant
    |
-LL |     D::Unit.foo();
-   |     ~~~~~~~
+LL -     D.foo();
+LL +     D::Unit.foo();
+   |
 help: alternatively, the following enum variant is available
    |
-LL |     (D::TupleWithFields(/* fields */)).foo();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     D.foo();
+LL +     (D::TupleWithFields(/* fields */)).foo();
+   |
 
 error[E0423]: expected value, found enum `E`
   --> $DIR/issue-73427.rs:41:5
@@ -103,8 +110,9 @@ LL | | }
    | |_^
 help: the following enum variant is available
    |
-LL |     (E::TupleWithFields(/* fields */)).foo();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     E.foo();
+LL +     (E::TupleWithFields(/* fields */)).foo();
+   |
 help: consider importing one of these constants instead
    |
 LL + use std::f128::consts::E;
@@ -136,10 +144,12 @@ LL | | }
    | |_^
 help: try to match against one of the enum's variants
    |
-LL |     if let A::Tuple(3) = x { }
-   |            ~~~~~~~~
-LL |     if let A::TupleWithFields(3) = x { }
-   |            ~~~~~~~~~~~~~~~~~~
+LL -     if let A(3) = x { }
+LL +     if let A::Tuple(3) = x { }
+   |
+LL -     if let A(3) = x { }
+LL +     if let A::TupleWithFields(3) = x { }
+   |
 
 error[E0423]: expected function, tuple struct or tuple variant, found enum `A`
   --> $DIR/issue-73427.rs:46:13
@@ -161,10 +171,12 @@ LL | | }
    | |_^
 help: try to construct one of the enum's variants
    |
-LL |     let x = A::Tuple(3);
-   |             ~~~~~~~~
-LL |     let x = A::TupleWithFields(3);
-   |             ~~~~~~~~~~~~~~~~~~
+LL -     let x = A(3);
+LL +     let x = A::Tuple(3);
+   |
+LL -     let x = A(3);
+LL +     let x = A::TupleWithFields(3);
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/resolve/privacy-enum-ctor.stderr b/tests/ui/resolve/privacy-enum-ctor.stderr
index 12a6580048e..3bbab3716af 100644
--- a/tests/ui/resolve/privacy-enum-ctor.stderr
+++ b/tests/ui/resolve/privacy-enum-ctor.stderr
@@ -17,12 +17,14 @@ LL | |         }
    | |_________^
 help: you might have meant to use the following enum variant
    |
-LL |         m::Z::Unit;
-   |         ~~~~~~~~~~
+LL -         n::Z;
+LL +         m::Z::Unit;
+   |
 help: alternatively, the following enum variant is available
    |
-LL |         (m::Z::Fn(/* fields */));
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         n::Z;
+LL +         (m::Z::Fn(/* fields */));
+   |
 
 error[E0423]: expected value, found enum `Z`
   --> $DIR/privacy-enum-ctor.rs:25:9
@@ -43,12 +45,14 @@ LL | |         }
    | |_________^
 help: you might have meant to use the following enum variant
    |
-LL |         m::Z::Unit;
-   |         ~~~~~~~~~~
+LL -         Z;
+LL +         m::Z::Unit;
+   |
 help: alternatively, the following enum variant is available
    |
-LL |         (m::Z::Fn(/* fields */));
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         Z;
+LL +         (m::Z::Fn(/* fields */));
+   |
 
 error[E0423]: expected value, found enum `m::E`
   --> $DIR/privacy-enum-ctor.rs:41:16
@@ -72,16 +76,19 @@ LL | |     }
    | |_____^
 help: you might have meant to use the following enum variant
    |
-LL |     let _: E = E::Unit;
-   |                ~~~~~~~
+LL -     let _: E = m::E;
+LL +     let _: E = E::Unit;
+   |
 help: alternatively, the following enum variant is available
    |
-LL |     let _: E = (E::Fn(/* fields */));
-   |                ~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: E = m::E;
+LL +     let _: E = (E::Fn(/* fields */));
+   |
 help: a function with a similar name exists
    |
-LL |     let _: E = m::f;
-   |                   ~
+LL -     let _: E = m::E;
+LL +     let _: E = m::f;
+   |
 help: consider importing one of these constants instead
    |
 LL + use std::f128::consts::E;
@@ -117,12 +124,14 @@ LL | |     }
    | |_____^
 help: you might have meant to use the following enum variant
    |
-LL |     let _: E = E::Unit;
-   |                ~~~~~~~
+LL -     let _: E = E;
+LL +     let _: E = E::Unit;
+   |
 help: alternatively, the following enum variant is available
    |
-LL |     let _: E = (E::Fn(/* fields */));
-   |                ~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: E = E;
+LL +     let _: E = (E::Fn(/* fields */));
+   |
 help: consider importing one of these constants instead
    |
 LL + use std::f128::consts::E;
@@ -168,12 +177,14 @@ LL | |         }
    | |_________^
 help: you might have meant to use the following enum variant
    |
-LL |     let _: Z = m::Z::Unit;
-   |                ~~~~~~~~~~
+LL -     let _: Z = m::n::Z;
+LL +     let _: Z = m::Z::Unit;
+   |
 help: alternatively, the following enum variant is available
    |
-LL |     let _: Z = (m::Z::Fn(/* fields */));
-   |                ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: Z = m::n::Z;
+LL +     let _: Z = (m::Z::Fn(/* fields */));
+   |
 
 error[E0412]: cannot find type `Z` in this scope
   --> $DIR/privacy-enum-ctor.rs:61:12
diff --git a/tests/ui/resolve/privacy-struct-ctor.stderr b/tests/ui/resolve/privacy-struct-ctor.stderr
index c1fcaaf0573..1d8c741c964 100644
--- a/tests/ui/resolve/privacy-struct-ctor.stderr
+++ b/tests/ui/resolve/privacy-struct-ctor.stderr
@@ -55,8 +55,9 @@ LL |         pub(in m) struct Z(pub(in m::n) u8);
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the field publicly accessible
    |
-LL |         pub(in m) struct Z(pub u8);
-   |                            ~~~
+LL -         pub(in m) struct Z(pub(in m::n) u8);
+LL +         pub(in m) struct Z(pub u8);
+   |
 
 error[E0603]: tuple struct constructor `S` is private
   --> $DIR/privacy-struct-ctor.rs:29:8
@@ -112,8 +113,9 @@ LL |         pub(in m) struct Z(pub(in m::n) u8);
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: consider making the field publicly accessible
    |
-LL |         pub(in m) struct Z(pub u8);
-   |                            ~~~
+LL -         pub(in m) struct Z(pub(in m::n) u8);
+LL +         pub(in m) struct Z(pub u8);
+   |
 
 error[E0603]: tuple struct constructor `S` is private
   --> $DIR/privacy-struct-ctor.rs:41:16
diff --git a/tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr b/tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr
index 999e9a47d6c..f1db2d71b6a 100644
--- a/tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr
+++ b/tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr
@@ -3,7 +3,8 @@ error[E0259]: the name `std` is defined multiple times
    = note: `std` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | extern crate std as other_std;
+LL - extern crate std;
+LL + extern crate std as other_std;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr b/tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr
index a8d0efedb6c..40c76821bb8 100644
--- a/tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr
+++ b/tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr
@@ -7,8 +7,9 @@ LL | use std::slice as std;
    = note: `std` must be defined only once in the type namespace of this module
 help: you can use `as` to change the binding name of the import
    |
-LL | use std::slice as other_std;
-   |                ~~~~~~~~~~~~
+LL - use std::slice as std;
+LL + use std::slice as other_std;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/resolve/resolve-inconsistent-names.stderr b/tests/ui/resolve/resolve-inconsistent-names.stderr
index d6240fb8f87..3197e0b0894 100644
--- a/tests/ui/resolve/resolve-inconsistent-names.stderr
+++ b/tests/ui/resolve/resolve-inconsistent-names.stderr
@@ -34,8 +34,9 @@ LL |         (A, B) | (ref B, c) | (c, A) => ()
    |
 help: if you meant to match on unit variant `E::A`, use the full path in the pattern
    |
-LL |         (E::A, B) | (ref B, c) | (c, A) => ()
-   |          ~~~~
+LL -         (A, B) | (ref B, c) | (c, A) => ()
+LL +         (E::A, B) | (ref B, c) | (c, A) => ()
+   |
 
 error[E0408]: variable `B` is not bound in all patterns
   --> $DIR/resolve-inconsistent-names.rs:19:31
@@ -64,8 +65,9 @@ LL |         (CONST1, _) | (_, Const2) => ()
    |
 help: if you meant to match on constant `m::Const2`, use the full path in the pattern
    |
-LL |         (CONST1, _) | (_, m::Const2) => ()
-   |                           ~~~~~~~~~
+LL -         (CONST1, _) | (_, Const2) => ()
+LL +         (CONST1, _) | (_, m::Const2) => ()
+   |
 
 error[E0408]: variable `CONST1` is not bound in all patterns
   --> $DIR/resolve-inconsistent-names.rs:31:23
diff --git a/tests/ui/resolve/resolve-issue-135614-assoc-const.import_trait_associated_functions.stderr b/tests/ui/resolve/resolve-issue-135614-assoc-const.import_trait_associated_functions.stderr
index b41fa1818e2..3d6d47578c3 100644
--- a/tests/ui/resolve/resolve-issue-135614-assoc-const.import_trait_associated_functions.stderr
+++ b/tests/ui/resolve/resolve-issue-135614-assoc-const.import_trait_associated_functions.stderr
@@ -11,8 +11,9 @@ LL |     const DEFAULT: u32 = 0;
    = note: the matched value is of type `u32`
 help: introduce a variable instead
    |
-LL |     let DEFAULT_var: u32 = 0;
-   |         ~~~~~~~~~~~
+LL -     let DEFAULT: u32 = 0;
+LL +     let DEFAULT_var: u32 = 0;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/resolve/resolve-issue-135614-assoc-const.normal.stderr b/tests/ui/resolve/resolve-issue-135614-assoc-const.normal.stderr
index 908f5bdd897..f041487da41 100644
--- a/tests/ui/resolve/resolve-issue-135614-assoc-const.normal.stderr
+++ b/tests/ui/resolve/resolve-issue-135614-assoc-const.normal.stderr
@@ -21,8 +21,9 @@ LL |     const DEFAULT: u32 = 0;
    = note: the matched value is of type `u32`
 help: introduce a variable instead
    |
-LL |     let DEFAULT_var: u32 = 0;
-   |         ~~~~~~~~~~~
+LL -     let DEFAULT: u32 = 0;
+LL +     let DEFAULT_var: u32 = 0;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/resolve-variant-assoc-item.stderr b/tests/ui/resolve/resolve-variant-assoc-item.stderr
index 9a5a605ac05..4b15114f022 100644
--- a/tests/ui/resolve/resolve-variant-assoc-item.stderr
+++ b/tests/ui/resolve/resolve-variant-assoc-item.stderr
@@ -6,8 +6,9 @@ LL |     E::V::associated_item;
    |
 help: there is an enum variant `E::V`; try using the variant's enum
    |
-LL |     E::associated_item;
-   |     ~
+LL -     E::V::associated_item;
+LL +     E::associated_item;
+   |
 
 error[E0433]: failed to resolve: `V` is a variant, not a module
   --> $DIR/resolve-variant-assoc-item.rs:6:5
@@ -17,8 +18,9 @@ LL |     V::associated_item;
    |
 help: there is an enum variant `E::V`; try using the variant's enum
    |
-LL |     E::associated_item;
-   |     ~
+LL -     V::associated_item;
+LL +     E::associated_item;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/suggest-path-for-tuple-struct.stderr b/tests/ui/resolve/suggest-path-for-tuple-struct.stderr
index 12c631f5a83..68a5b550978 100644
--- a/tests/ui/resolve/suggest-path-for-tuple-struct.stderr
+++ b/tests/ui/resolve/suggest-path-for-tuple-struct.stderr
@@ -6,8 +6,9 @@ LL |     let _ = SomeTupleStruct.new();
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = SomeTupleStruct::new();
-   |                            ~~
+LL -     let _ = SomeTupleStruct.new();
+LL +     let _ = SomeTupleStruct::new();
+   |
 
 error[E0423]: expected value, found struct `SomeRegularStruct`
   --> $DIR/suggest-path-for-tuple-struct.rs:24:13
@@ -17,8 +18,9 @@ LL |     let _ = SomeRegularStruct.new();
    |
 help: use the path separator to refer to an item
    |
-LL |     let _ = SomeRegularStruct::new();
-   |                              ~~
+LL -     let _ = SomeRegularStruct.new();
+LL +     let _ = SomeRegularStruct::new();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr b/tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr
index 9c12fd2644c..5db943cd10d 100644
--- a/tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr
+++ b/tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr
@@ -6,8 +6,9 @@ LL |     a.I
    |
 help: use the path separator to refer to an item
    |
-LL |     a::I
-   |      ~~
+LL -     a.I
+LL +     a::I
+   |
 
 error[E0423]: expected value, found module `a`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:23:5
@@ -17,8 +18,9 @@ LL |     a.g()
    |
 help: use the path separator to refer to an item
    |
-LL |     a::g()
-   |      ~~
+LL -     a.g()
+LL +     a::g()
+   |
 
 error[E0423]: expected value, found module `a`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:29:5
@@ -28,8 +30,9 @@ LL |     a.b.J
    |
 help: use the path separator to refer to an item
    |
-LL |     a::b.J
-   |      ~~
+LL -     a.b.J
+LL +     a::b.J
+   |
 
 error[E0423]: expected value, found module `a::b`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:35:5
@@ -42,12 +45,14 @@ LL |     a::b.J
    |
 help: use the path separator to refer to an item
    |
-LL |     a::b::J
-   |         ~~
+LL -     a::b.J
+LL +     a::b::J
+   |
 help: a constant with a similar name exists
    |
-LL |     a::I.J
-   |        ~
+LL -     a::b.J
+LL +     a::I.J
+   |
 
 error[E0423]: expected value, found module `a`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:42:5
@@ -57,8 +62,9 @@ LL |     a.b.f();
    |
 help: use the path separator to refer to an item
    |
-LL |     a::b.f();
-   |      ~~
+LL -     a.b.f();
+LL +     a::b.f();
+   |
 
 error[E0423]: expected value, found module `a::b`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:46:12
@@ -82,12 +88,14 @@ LL |     a::b.f()
    |
 help: use the path separator to refer to an item
    |
-LL |     a::b::f()
-   |         ~~
+LL -     a::b.f()
+LL +     a::b::f()
+   |
 help: a constant with a similar name exists
    |
-LL |     a::I.f()
-   |        ~
+LL -     a::b.f()
+LL +     a::I.f()
+   |
 
 error[E0423]: expected value, found module `a::b`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:59:5
@@ -145,8 +153,9 @@ LL |     let _ = create!(method);
    = note: this error originates in the macro `create` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |         a::f()
-   |          ~~
+LL -         a.f()
+LL +         a::f()
+   |
 
 error[E0423]: expected value, found module `a`
   --> $DIR/suggest-path-instead-of-mod-dot-item.rs:85:9
@@ -160,8 +169,9 @@ LL |     let _ = create!(field);
    = note: this error originates in the macro `create` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: use the path separator to refer to an item
    |
-LL |         a::f
-   |          ~~
+LL -         a.f
+LL +         a::f
+   |
 
 error: aborting due to 13 previous errors
 
diff --git a/tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr b/tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr
index 5662021a2d5..15fdb975a1b 100644
--- a/tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr
+++ b/tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr
@@ -28,8 +28,9 @@ LL |         println!("{self.config}");
    |                    +++++
 help: a local variable with a similar name exists
    |
-LL |         println!("{cofig}");
-   |                    ~~~~~
+LL -         println!("{config}");
+LL +         println!("{cofig}");
+   |
 
 error[E0425]: cannot find value `bah` in this scope
   --> $DIR/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs:33:9
@@ -46,8 +47,9 @@ LL |         Self::bah;
    |         ++++++
 help: a function with a similar name exists
    |
-LL |         ba;
-   |         ~~
+LL -         bah;
+LL +         ba;
+   |
 
 error[E0425]: cannot find value `BAR` in this scope
   --> $DIR/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs:35:9
@@ -64,8 +66,9 @@ LL |         Self::BAR;
    |         ++++++
 help: a constant with a similar name exists
    |
-LL |         BARR;
-   |         ~~~~
+LL -         BAR;
+LL +         BARR;
+   |
 
 error[E0412]: cannot find type `Baz` in this scope
   --> $DIR/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs:37:18
@@ -82,8 +85,9 @@ LL |         let foo: Self::Baz = "".to_string();
    |                  ++++++
 help: a type alias with a similar name exists
    |
-LL |         let foo: Bar = "".to_string();
-   |                  ~~~
+LL -         let foo: Baz = "".to_string();
+LL +         let foo: Bar = "".to_string();
+   |
 
 error[E0425]: cannot find function `baz` in this scope
   --> $DIR/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs:31:9
@@ -100,8 +104,9 @@ LL |         self.baz();
    |         +++++
 help: a function with a similar name exists
    |
-LL |         ba();
-   |         ~~
+LL -         baz();
+LL +         ba();
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr b/tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr
index 3ae134e43bc..1ea7f1d39cb 100644
--- a/tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr
+++ b/tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr
@@ -18,8 +18,9 @@ LL |     Struct::fob();
    |
 help: there is an associated function `foo` with a similar name
    |
-LL |     Struct::foo();
-   |             ~~~
+LL -     Struct::fob();
+LL +     Struct::foo();
+   |
 
 error[E0433]: failed to resolve: use of undeclared type `Struc`
   --> $DIR/typo-suggestion-mistyped-in-path.rs:27:5
@@ -38,8 +39,9 @@ LL |     modul::foo();
    |
 help: there is a crate or module with a similar name
    |
-LL |     module::foo();
-   |     ~~~~~~
+LL -     modul::foo();
+LL +     module::foo();
+   |
 
 error[E0433]: failed to resolve: use of undeclared type `Trai`
   --> $DIR/typo-suggestion-mistyped-in-path.rs:39:5
diff --git a/tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr b/tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr
index 8addc0303fb..f885705a17b 100644
--- a/tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr
+++ b/tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr
@@ -12,7 +12,8 @@ LL | fn g<F:Typedef(isize) -> isize>(x: F) {}
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait Typedef = isize;
+LL - type Typedef = isize;
+LL + trait Typedef = isize;
    |
 
 error: aborting due to 2 previous errors
diff --git a/tests/ui/rfcs/rfc-2008-non-exhaustive/struct.stderr b/tests/ui/rfcs/rfc-2008-non-exhaustive/struct.stderr
index 39b1ef1e078..d0244f39769 100644
--- a/tests/ui/rfcs/rfc-2008-non-exhaustive/struct.stderr
+++ b/tests/ui/rfcs/rfc-2008-non-exhaustive/struct.stderr
@@ -58,8 +58,9 @@ LL |     let NormalStruct { first_field, second_field } = ns;
    |
 help: add `..` at the end of the field list to ignore all other fields
    |
-LL |     let NormalStruct { first_field, second_field , .. } = ns;
-   |                                                  ~~~~~~
+LL -     let NormalStruct { first_field, second_field } = ns;
+LL +     let NormalStruct { first_field, second_field , .. } = ns;
+   |
 
 error[E0423]: cannot initialize a tuple struct which contains private fields
   --> $DIR/struct.rs:20:14
@@ -75,8 +76,9 @@ LL |     let TupleStruct { 0: first_field, 1: second_field } = ts;
    |
 help: add `..` at the end of the field list to ignore all other fields
    |
-LL |     let TupleStruct { 0: first_field, 1: second_field , .. } = ts;
-   |                                                       ~~~~~~
+LL -     let TupleStruct { 0: first_field, 1: second_field } = ts;
+LL +     let TupleStruct { 0: first_field, 1: second_field , .. } = ts;
+   |
 
 error[E0638]: `..` required with struct marked as non-exhaustive
   --> $DIR/struct.rs:35:9
@@ -86,8 +88,9 @@ LL |     let UnitStruct { } = us;
    |
 help: add `..` at the end of the field list to ignore all other fields
    |
-LL |     let UnitStruct { .. } = us;
-   |                      ~~~~
+LL -     let UnitStruct { } = us;
+LL +     let UnitStruct { .. } = us;
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/rfcs/rfc-2008-non-exhaustive/variant.stderr b/tests/ui/rfcs/rfc-2008-non-exhaustive/variant.stderr
index 4083f57a9cd..4cabd5a8140 100644
--- a/tests/ui/rfcs/rfc-2008-non-exhaustive/variant.stderr
+++ b/tests/ui/rfcs/rfc-2008-non-exhaustive/variant.stderr
@@ -82,8 +82,9 @@ LL |         NonExhaustiveVariants::Struct { field } => ""
    |
 help: add `..` at the end of the field list to ignore all other fields
    |
-LL |         NonExhaustiveVariants::Struct { field , .. } => ""
-   |                                               ~~~~~~
+LL -         NonExhaustiveVariants::Struct { field } => ""
+LL +         NonExhaustiveVariants::Struct { field , .. } => ""
+   |
 
 error[E0638]: `..` required with variant marked as non-exhaustive
   --> $DIR/variant.rs:30:12
@@ -93,8 +94,9 @@ LL |     if let NonExhaustiveVariants::Struct { field } = variant_struct {
    |
 help: add `..` at the end of the field list to ignore all other fields
    |
-LL |     if let NonExhaustiveVariants::Struct { field , .. } = variant_struct {
-   |                                                  ~~~~~~
+LL -     if let NonExhaustiveVariants::Struct { field } = variant_struct {
+LL +     if let NonExhaustiveVariants::Struct { field , .. } = variant_struct {
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/rfcs/rfc-2126-extern-absolute-paths/not-allowed.stderr b/tests/ui/rfcs/rfc-2126-extern-absolute-paths/not-allowed.stderr
index d0c084f7bd5..37a0f2bcaa8 100644
--- a/tests/ui/rfcs/rfc-2126-extern-absolute-paths/not-allowed.stderr
+++ b/tests/ui/rfcs/rfc-2126-extern-absolute-paths/not-allowed.stderr
@@ -6,8 +6,9 @@ LL | use alloc;
    |
 help: consider importing this module instead
    |
-LL | use std::alloc;
-   |     ~~~~~~~~~~
+LL - use alloc;
+LL + use std::alloc;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/rmeta/rmeta_meta_main.stderr b/tests/ui/rmeta/rmeta_meta_main.stderr
index af11c88d928..7ee44ce29b2 100644
--- a/tests/ui/rmeta/rmeta_meta_main.stderr
+++ b/tests/ui/rmeta/rmeta_meta_main.stderr
@@ -6,8 +6,9 @@ LL |     let _ = Foo { field2: 42 };
    |
 help: a field with a similar name exists
    |
-LL |     let _ = Foo { field: 42 };
-   |                   ~~~~~
+LL -     let _ = Foo { field2: 42 };
+LL +     let _ = Foo { field: 42 };
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/rust-2018/remove-extern-crate.stderr b/tests/ui/rust-2018/remove-extern-crate.stderr
index 020db9975c0..cb090c621e9 100644
--- a/tests/ui/rust-2018/remove-extern-crate.stderr
+++ b/tests/ui/rust-2018/remove-extern-crate.stderr
@@ -19,8 +19,9 @@ LL |     extern crate core;
    |
 help: convert it to a `use`
    |
-LL |     use core;
-   |     ~~~
+LL -     extern crate core;
+LL +     use core;
+   |
 
 warning: `extern crate` is not idiomatic in the new edition
   --> $DIR/remove-extern-crate.rs:45:5
@@ -30,8 +31,9 @@ LL |     pub extern crate core;
    |
 help: convert it to a `use`
    |
-LL |     pub use core;
-   |         ~~~
+LL -     pub extern crate core;
+LL +     pub use core;
+   |
 
 warning: 3 warnings emitted
 
diff --git a/tests/ui/rust-2018/trait-import-suggestions.stderr b/tests/ui/rust-2018/trait-import-suggestions.stderr
index 85262888579..077b4a6cf2f 100644
--- a/tests/ui/rust-2018/trait-import-suggestions.stderr
+++ b/tests/ui/rust-2018/trait-import-suggestions.stderr
@@ -14,8 +14,9 @@ LL +     use crate::foo::foobar::Foobar;
    |
 help: there is a method `bar` with a similar name
    |
-LL |         x.bar();
-   |           ~~~
+LL -         x.foobar();
+LL +         x.bar();
+   |
 
 error[E0599]: no method named `bar` found for type `u32` in the current scope
   --> $DIR/trait-import-suggestions.rs:28:7
@@ -33,8 +34,9 @@ LL + use crate::foo::Bar;
    |
 help: there is a method `foobar` with a similar name
    |
-LL |     x.foobar();
-   |       ~~~~~~
+LL -     x.bar();
+LL +     x.foobar();
+   |
 
 error[E0599]: no method named `baz` found for type `u32` in the current scope
   --> $DIR/trait-import-suggestions.rs:29:7
@@ -44,8 +46,9 @@ LL |     x.baz();
    |
 help: there is a method `bar` with a similar name
    |
-LL |     x.bar();
-   |       ~~~
+LL -     x.baz();
+LL +     x.bar();
+   |
 
 error[E0599]: no function or associated item named `from_str` found for type `u32` in the current scope
   --> $DIR/trait-import-suggestions.rs:30:18
@@ -60,8 +63,9 @@ LL + use std::str::FromStr;
    |
 help: there is an associated function `from` with a similar name
    |
-LL |     let y = u32::from("33");
-   |                  ~~~~
+LL -     let y = u32::from_str("33");
+LL +     let y = u32::from("33");
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/rust-2021/future-prelude-collision-shadow.stderr b/tests/ui/rust-2021/future-prelude-collision-shadow.stderr
index d9c0fa47eca..966613e12b5 100644
--- a/tests/ui/rust-2021/future-prelude-collision-shadow.stderr
+++ b/tests/ui/rust-2021/future-prelude-collision-shadow.stderr
@@ -14,8 +14,9 @@ LL +     use std::convert::TryInto;
    |
 help: there is a method `into` with a similar name
    |
-LL |         let _: u32 = 3u8.into().unwrap();
-   |                          ~~~~
+LL -         let _: u32 = 3u8.try_into().unwrap();
+LL +         let _: u32 = 3u8.into().unwrap();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/rust-2021/ice-return-unsized-can-impl-2.stderr b/tests/ui/rust-2021/ice-return-unsized-can-impl-2.stderr
index b8a9a5c8129..ac19f91881d 100644
--- a/tests/ui/rust-2021/ice-return-unsized-can-impl-2.stderr
+++ b/tests/ui/rust-2021/ice-return-unsized-can-impl-2.stderr
@@ -7,8 +7,9 @@ LL |     fn concrete(b: B) -> B;
    = note: `B` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `B`
    |
-LL |     fn concrete<T: B>(b: T) -> B;
-   |                ++++++    ~
+LL -     fn concrete(b: B) -> B;
+LL +     fn concrete<T: B>(b: T) -> B;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn concrete(b: impl B) -> B;
@@ -34,8 +35,9 @@ LL |     fn f(a: A) -> A;
    = note: `A` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `A`
    |
-LL |     fn f<T: A>(a: T) -> A;
-   |         ++++++    ~
+LL -     fn f(a: A) -> A;
+LL +     fn f<T: A>(a: T) -> A;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn f(a: impl A) -> A;
diff --git a/tests/ui/rust-2021/ice-return-unsized-can-impl.stderr b/tests/ui/rust-2021/ice-return-unsized-can-impl.stderr
index c0969570e92..463c6892ca2 100644
--- a/tests/ui/rust-2021/ice-return-unsized-can-impl.stderr
+++ b/tests/ui/rust-2021/ice-return-unsized-can-impl.stderr
@@ -7,8 +7,9 @@ LL |     fn g(new: B) -> B;
    = note: `B` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `B`
    |
-LL |     fn g<T: B>(new: T) -> B;
-   |         ++++++      ~
+LL -     fn g(new: B) -> B;
+LL +     fn g<T: B>(new: T) -> B;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn g(new: impl B) -> B;
diff --git a/tests/ui/rust-2021/ice-unsized-fn-params-2.stderr b/tests/ui/rust-2021/ice-unsized-fn-params-2.stderr
index d35c8ab3e42..7f837bbe50f 100644
--- a/tests/ui/rust-2021/ice-unsized-fn-params-2.stderr
+++ b/tests/ui/rust-2021/ice-unsized-fn-params-2.stderr
@@ -7,8 +7,9 @@ LL | fn guard(_s: Copy) -> bool {
    = note: `Copy` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `Copy`
    |
-LL | fn guard<T: Copy>(_s: T) -> bool {
-   |         +++++++++     ~
+LL - fn guard(_s: Copy) -> bool {
+LL + fn guard<T: Copy>(_s: T) -> bool {
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn guard(_s: impl Copy) -> bool {
diff --git a/tests/ui/rust-2021/ice-unsized-fn-params.stderr b/tests/ui/rust-2021/ice-unsized-fn-params.stderr
index d56e9981a28..c31500ba800 100644
--- a/tests/ui/rust-2021/ice-unsized-fn-params.stderr
+++ b/tests/ui/rust-2021/ice-unsized-fn-params.stderr
@@ -7,8 +7,9 @@ LL |     fn g(b: B) -> B;
    = note: `B` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `B`
    |
-LL |     fn g<T: B>(b: T) -> B;
-   |         ++++++    ~
+LL -     fn g(b: B) -> B;
+LL +     fn g<T: B>(b: T) -> B;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn g(b: impl B) -> B;
@@ -34,8 +35,9 @@ LL |     fn f(a: A) -> A;
    = note: `A` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `A`
    |
-LL |     fn f<T: A>(a: T) -> A;
-   |         ++++++    ~
+LL -     fn f(a: A) -> A;
+LL +     fn f<T: A>(a: T) -> A;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn f(a: impl A) -> A;
diff --git a/tests/ui/self/arbitrary_self_type_mut_difference.stderr b/tests/ui/self/arbitrary_self_type_mut_difference.stderr
index ffc61ee0d78..31c1c9b7382 100644
--- a/tests/ui/self/arbitrary_self_type_mut_difference.stderr
+++ b/tests/ui/self/arbitrary_self_type_mut_difference.stderr
@@ -11,8 +11,9 @@ LL |     fn x(self: Pin<&mut Self>) {}
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: there is a method `y` with a similar name
    |
-LL |     Pin::new(&S).y();
-   |                  ~
+LL -     Pin::new(&S).x();
+LL +     Pin::new(&S).y();
+   |
 
 error[E0599]: no method named `y` found for struct `Pin<&mut S>` in the current scope
   --> $DIR/arbitrary_self_type_mut_difference.rs:12:22
@@ -27,8 +28,9 @@ LL |     fn y(self: Pin<&Self>) {}
    |     ^^^^^^^^^^^^^^^^^^^^^^
 help: there is a method `x` with a similar name
    |
-LL |     Pin::new(&mut S).x();
-   |                      ~
+LL -     Pin::new(&mut S).y();
+LL +     Pin::new(&mut S).x();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/self/arbitrary_self_types_not_allow_call_with_no_deref.stderr b/tests/ui/self/arbitrary_self_types_not_allow_call_with_no_deref.stderr
index 4c0ab88493e..8843efc6ff8 100644
--- a/tests/ui/self/arbitrary_self_types_not_allow_call_with_no_deref.stderr
+++ b/tests/ui/self/arbitrary_self_types_not_allow_call_with_no_deref.stderr
@@ -13,8 +13,9 @@ LL |     foo_cpp_ref.0.frobnicate_ref();
    |                 ++
 help: there is a method `frobnicate_cpp_ref` with a similar name
    |
-LL |     foo_cpp_ref.frobnicate_cpp_ref();
-   |                 ~~~~~~~~~~~~~~~~~~
+LL -     foo_cpp_ref.frobnicate_ref();
+LL +     foo_cpp_ref.frobnicate_cpp_ref();
+   |
 
 error[E0599]: no method named `frobnicate_self` found for struct `CppRef` in the current scope
   --> $DIR/arbitrary_self_types_not_allow_call_with_no_deref.rs:32:17
@@ -31,8 +32,9 @@ LL |     foo_cpp_ref.0.frobnicate_self(); // would desugar to `Foo::frobnicate_s
    |                 ++
 help: there is a method `frobnicate_cpp_ref` with a similar name
    |
-LL |     foo_cpp_ref.frobnicate_cpp_ref(); // would desugar to `Foo::frobnicate_self(*foo_cpp_ref)`
-   |                 ~~~~~~~~~~~~~~~~~~
+LL -     foo_cpp_ref.frobnicate_self(); // would desugar to `Foo::frobnicate_self(*foo_cpp_ref)`
+LL +     foo_cpp_ref.frobnicate_cpp_ref(); // would desugar to `Foo::frobnicate_self(*foo_cpp_ref)`
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/self/invalid-self-dyn-receiver.rs b/tests/ui/self/invalid-self-dyn-receiver.rs
new file mode 100644
index 00000000000..a989b331b5e
--- /dev/null
+++ b/tests/ui/self/invalid-self-dyn-receiver.rs
@@ -0,0 +1,20 @@
+// Makes sure we don't ICE when encountering a receiver that is *ostensibly* dyn safe,
+// because it satisfies `&dyn Bar: DispatchFromDyn<&dyn Bar>`, but is not a valid receiver
+// in wfcheck.
+
+#![feature(arbitrary_self_types)]
+
+use std::ops::Deref;
+
+trait Foo: Deref<Target = dyn Bar> {
+     fn method(self: &dyn Bar) {}
+     //~^ ERROR invalid `self` parameter type: `&dyn Bar`
+}
+
+trait Bar {}
+
+fn test(x: &dyn Foo) {
+     x.method();
+}
+
+fn main() {}
diff --git a/tests/ui/self/invalid-self-dyn-receiver.stderr b/tests/ui/self/invalid-self-dyn-receiver.stderr
new file mode 100644
index 00000000000..f77f5686ad2
--- /dev/null
+++ b/tests/ui/self/invalid-self-dyn-receiver.stderr
@@ -0,0 +1,12 @@
+error[E0307]: invalid `self` parameter type: `&dyn Bar`
+  --> $DIR/invalid-self-dyn-receiver.rs:10:22
+   |
+LL |      fn method(self: &dyn Bar) {}
+   |                      ^^^^^^^^
+   |
+   = note: type of `self` must be `Self` or some type implementing `Receiver`
+   = help: consider changing to `self`, `&self`, `&mut self`, or a type implementing `Receiver` such as `self: Box<Self>`, `self: Rc<Self>`, or `self: Arc<Self>`
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0307`.
diff --git a/tests/ui/self/self-infer.stderr b/tests/ui/self/self-infer.stderr
index 4f9e3f21dca..c6bdff22b69 100644
--- a/tests/ui/self/self-infer.stderr
+++ b/tests/ui/self/self-infer.stderr
@@ -6,8 +6,9 @@ LL |     fn f(self: _) {}
    |
 help: use type parameters instead
    |
-LL |     fn f<T>(self: T) {}
-   |         +++       ~
+LL -     fn f(self: _) {}
+LL +     fn f<T>(self: T) {}
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/self-infer.rs:5:17
@@ -17,8 +18,9 @@ LL |     fn g(self: &_) {}
    |
 help: use type parameters instead
    |
-LL |     fn g<T>(self: &T) {}
-   |         +++        ~
+LL -     fn g(self: &_) {}
+LL +     fn g<T>(self: &T) {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/simd/portable-intrinsics-arent-exposed.stderr b/tests/ui/simd/portable-intrinsics-arent-exposed.stderr
index d38667f750d..71b4273fa06 100644
--- a/tests/ui/simd/portable-intrinsics-arent-exposed.stderr
+++ b/tests/ui/simd/portable-intrinsics-arent-exposed.stderr
@@ -15,8 +15,9 @@ LL | use std::simd::intrinsics;
    |
 help: consider importing this module instead
    |
-LL | use std::intrinsics;
-   |     ~~~~~~~~~~~~~~~
+LL - use std::simd::intrinsics;
+LL + use std::intrinsics;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/span/issue-35987.stderr b/tests/ui/span/issue-35987.stderr
index 36c59137b31..634bb5ed68f 100644
--- a/tests/ui/span/issue-35987.stderr
+++ b/tests/ui/span/issue-35987.stderr
@@ -17,10 +17,12 @@ LL |     fn add(self, rhs: Self) -> Self::Output {
    |
 help: use fully-qualified syntax
    |
-LL |     fn add(self, rhs: Self) -> <Foo<T> as BitOr>::Output {
-   |                                ~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     fn add(self, rhs: Self) -> <Foo<T> as IntoFuture>::Output {
-   |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     fn add(self, rhs: Self) -> Self::Output {
+LL +     fn add(self, rhs: Self) -> <Foo<T> as BitOr>::Output {
+   |
+LL -     fn add(self, rhs: Self) -> Self::Output {
+LL +     fn add(self, rhs: Self) -> <Foo<T> as IntoFuture>::Output {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/span/issue-37767.stderr b/tests/ui/span/issue-37767.stderr
index 457870821a1..2bb64e3da86 100644
--- a/tests/ui/span/issue-37767.stderr
+++ b/tests/ui/span/issue-37767.stderr
@@ -16,12 +16,14 @@ LL |     fn foo(&mut self) {}
    |     ^^^^^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     A::foo(&mut a)
-   |     ~~~~~~~~~~~~~~
+LL -     a.foo()
+LL +     A::foo(&mut a)
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     B::foo(&mut a)
-   |     ~~~~~~~~~~~~~~
+LL -     a.foo()
+LL +     B::foo(&mut a)
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/issue-37767.rs:22:7
@@ -41,12 +43,14 @@ LL |     fn foo(&self) {}
    |     ^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     C::foo(&a)
-   |     ~~~~~~~~~~
+LL -     a.foo()
+LL +     C::foo(&a)
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     D::foo(&a)
-   |     ~~~~~~~~~~
+LL -     a.foo()
+LL +     D::foo(&a)
+   |
 
 error[E0034]: multiple applicable items in scope
   --> $DIR/issue-37767.rs:34:7
@@ -66,12 +70,14 @@ LL |     fn foo(self) {}
    |     ^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     E::foo(a)
-   |     ~~~~~~~~~
+LL -     a.foo()
+LL +     E::foo(a)
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     F::foo(a)
-   |     ~~~~~~~~~
+LL -     a.foo()
+LL +     F::foo(a)
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/span/issue-81800.stderr b/tests/ui/span/issue-81800.stderr
index 86c64573b14..c1583c3ef8f 100644
--- a/tests/ui/span/issue-81800.stderr
+++ b/tests/ui/span/issue-81800.stderr
@@ -6,8 +6,9 @@ LL | fn x˂-
    |
 help: Unicode character '˂' (Modifier Letter Left Arrowhead) looks like '<' (Less-Than Sign), but it is not
    |
-LL | fn x<-
-   |     ~
+LL - fn x˂-
+LL + fn x<-
+   |
 
 error: expected one of `#`, `>`, `const`, identifier, or lifetime, found `-`
   --> $DIR/issue-81800.rs:1:6
diff --git a/tests/ui/span/missing-unit-argument.stderr b/tests/ui/span/missing-unit-argument.stderr
index 6261831b752..e77ec3c8447 100644
--- a/tests/ui/span/missing-unit-argument.stderr
+++ b/tests/ui/span/missing-unit-argument.stderr
@@ -8,8 +8,9 @@ note: tuple variant defined here
   --> $SRC_DIR/core/src/result.rs:LL:COL
 help: provide the argument
    |
-LL |     let _: Result<(), String> = Ok(());
-   |                                   ~~~~
+LL -     let _: Result<(), String> = Ok();
+LL +     let _: Result<(), String> = Ok(());
+   |
 
 error[E0061]: this function takes 2 arguments but 0 arguments were supplied
   --> $DIR/missing-unit-argument.rs:12:5
@@ -24,8 +25,9 @@ LL | fn foo(():(), ():()) {}
    |    ^^^ -----  -----
 help: provide the arguments
    |
-LL |     foo((), ());
-   |        ~~~~~~~~
+LL -     foo();
+LL +     foo((), ());
+   |
 
 error[E0061]: this function takes 2 arguments but 1 argument was supplied
   --> $DIR/missing-unit-argument.rs:13:5
@@ -40,8 +42,9 @@ LL | fn foo(():(), ():()) {}
    |    ^^^        -----
 help: provide the argument
    |
-LL |     foo((), ());
-   |        ~~~~~~~~
+LL -     foo(());
+LL +     foo((), ());
+   |
 
 error[E0061]: this function takes 1 argument but 0 arguments were supplied
   --> $DIR/missing-unit-argument.rs:14:5
@@ -56,8 +59,9 @@ LL | fn bar(():()) {}
    |    ^^^ -----
 help: provide the argument
    |
-LL |     bar(());
-   |        ~~~~
+LL -     bar();
+LL +     bar(());
+   |
 
 error[E0061]: this method takes 1 argument but 0 arguments were supplied
   --> $DIR/missing-unit-argument.rs:15:7
@@ -72,8 +76,9 @@ LL |     fn baz(self, (): ()) { }
    |        ^^^       ------
 help: provide the argument
    |
-LL |     S.baz(());
-   |          ~~~~
+LL -     S.baz();
+LL +     S.baz(());
+   |
 
 error[E0061]: this method takes 1 argument but 0 arguments were supplied
   --> $DIR/missing-unit-argument.rs:16:7
@@ -88,8 +93,9 @@ LL |     fn generic<T>(self, _: T) { }
    |        ^^^^^^^          ----
 help: provide the argument
    |
-LL |     S.generic::<()>(());
-   |                    ~~~~
+LL -     S.generic::<()>();
+LL +     S.generic::<()>(());
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/stability-attribute/const-stability-attribute-implies-using-stable.stderr b/tests/ui/stability-attribute/const-stability-attribute-implies-using-stable.stderr
index 050834ab676..4cbd93d17cf 100644
--- a/tests/ui/stability-attribute/const-stability-attribute-implies-using-stable.stderr
+++ b/tests/ui/stability-attribute/const-stability-attribute-implies-using-stable.stderr
@@ -11,8 +11,9 @@ LL | #![deny(stable_features)]
    |         ^^^^^^^^^^^^^^^
 help: if you are using features which are still unstable, change to using `const_foobar`
    |
-LL | #![feature(const_foobar)]
-   |            ~~~~~~~~~~~~
+LL - #![feature(const_foo)]
+LL + #![feature(const_foobar)]
+   |
 help: if you are using features which are now stable, remove this line
    |
 LL - #![feature(const_foo)]
diff --git a/tests/ui/stability-attribute/const-stability-attribute-implies-using-unstable.stderr b/tests/ui/stability-attribute/const-stability-attribute-implies-using-unstable.stderr
index 50cc14c3b4f..38331919ee8 100644
--- a/tests/ui/stability-attribute/const-stability-attribute-implies-using-unstable.stderr
+++ b/tests/ui/stability-attribute/const-stability-attribute-implies-using-unstable.stderr
@@ -11,8 +11,9 @@ LL | #![deny(stable_features)]
    |         ^^^^^^^^^^^^^^^
 help: if you are using features which are still unstable, change to using `const_foobar`
    |
-LL | #![feature(const_foobar)]
-   |            ~~~~~~~~~~~~
+LL - #![feature(const_foo)]
+LL + #![feature(const_foobar)]
+   |
 help: if you are using features which are now stable, remove this line
    |
 LL - #![feature(const_foo)]
diff --git a/tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr b/tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr
index d783f1e8e40..1080b977410 100644
--- a/tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr
+++ b/tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr
@@ -11,8 +11,9 @@ LL | #![deny(stable_features)]
    |         ^^^^^^^^^^^^^^^
 help: if you are using features which are still unstable, change to using `foobar`
    |
-LL | #![feature(foobar)]
-   |            ~~~~~~
+LL - #![feature(foo)]
+LL + #![feature(foobar)]
+   |
 help: if you are using features which are now stable, remove this line
    |
 LL - #![feature(foo)]
diff --git a/tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr b/tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr
index 4940650fd42..02cb25633ab 100644
--- a/tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr
+++ b/tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr
@@ -11,8 +11,9 @@ LL | #![deny(stable_features)]
    |         ^^^^^^^^^^^^^^^
 help: if you are using features which are still unstable, change to using `foobar`
    |
-LL | #![feature(foobar)]
-   |            ~~~~~~
+LL - #![feature(foo)]
+LL + #![feature(foobar)]
+   |
 help: if you are using features which are now stable, remove this line
    |
 LL - #![feature(foo)]
diff --git a/tests/ui/static/static-reference-to-fn-1.stderr b/tests/ui/static/static-reference-to-fn-1.stderr
index 6bf64974ef5..72036269b29 100644
--- a/tests/ui/static/static-reference-to-fn-1.stderr
+++ b/tests/ui/static/static-reference-to-fn-1.stderr
@@ -9,8 +9,9 @@ LL |         func: &foo,
    = note: fn items are distinct from fn pointers
 help: consider casting to a fn pointer
    |
-LL |         func: &(foo as fn() -> Option<isize>),
-   |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -         func: &foo,
+LL +         func: &(foo as fn() -> Option<isize>),
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/statics/issue-15261.stderr b/tests/ui/statics/issue-15261.stderr
index 4067d151de3..7edd79e08b1 100644
--- a/tests/ui/statics/issue-15261.stderr
+++ b/tests/ui/statics/issue-15261.stderr
@@ -9,8 +9,9 @@ LL | static n: &'static usize = unsafe { &n_mut };
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw const` instead to create a raw pointer
    |
-LL | static n: &'static usize = unsafe { &raw const n_mut };
-   |                                     ~~~~~~~~~~
+LL - static n: &'static usize = unsafe { &n_mut };
+LL + static n: &'static usize = unsafe { &raw const n_mut };
+   |
 
 warning: 1 warning emitted
 
diff --git a/tests/ui/statics/static-mut-shared-parens.stderr b/tests/ui/statics/static-mut-shared-parens.stderr
index aa7a760ded8..f428f9a18d4 100644
--- a/tests/ui/statics/static-mut-shared-parens.stderr
+++ b/tests/ui/statics/static-mut-shared-parens.stderr
@@ -9,8 +9,9 @@ LL |     let _ = unsafe { (&TEST) as *const usize };
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw const` instead to create a raw pointer
    |
-LL |     let _ = unsafe { (&raw const TEST) as *const usize };
-   |                       ~~~~~~~~~~
+LL -     let _ = unsafe { (&TEST) as *const usize };
+LL +     let _ = unsafe { (&raw const TEST) as *const usize };
+   |
 
 warning: creating a mutable reference to mutable static is discouraged
   --> $DIR/static-mut-shared-parens.rs:11:22
@@ -22,8 +23,9 @@ LL |     let _ = unsafe { ((&mut TEST)) as *const usize };
    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |     let _ = unsafe { ((&raw mut TEST)) as *const usize };
-   |                        ~~~~~~~~
+LL -     let _ = unsafe { ((&mut TEST)) as *const usize };
+LL +     let _ = unsafe { ((&raw mut TEST)) as *const usize };
+   |
 
 warning: 2 warnings emitted
 
diff --git a/tests/ui/statics/static-mut-xc.stderr b/tests/ui/statics/static-mut-xc.stderr
index 176deb518fc..d03835c30d8 100644
--- a/tests/ui/statics/static-mut-xc.stderr
+++ b/tests/ui/statics/static-mut-xc.stderr
@@ -54,8 +54,9 @@ LL |     static_bound(&static_mut_xc::a);
    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
 help: use `&raw const` instead to create a raw pointer
    |
-LL |     static_bound(&raw const static_mut_xc::a);
-   |                  ~~~~~~~~~~
+LL -     static_bound(&static_mut_xc::a);
+LL +     static_bound(&raw const static_mut_xc::a);
+   |
 
 warning: creating a mutable reference to mutable static is discouraged
   --> $DIR/static-mut-xc.rs:35:22
@@ -67,8 +68,9 @@ LL |     static_bound_set(&mut static_mut_xc::a);
    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
 help: use `&raw mut` instead to create a raw pointer
    |
-LL |     static_bound_set(&raw mut static_mut_xc::a);
-   |                      ~~~~~~~~
+LL -     static_bound_set(&mut static_mut_xc::a);
+LL +     static_bound_set(&raw mut static_mut_xc::a);
+   |
 
 warning: 7 warnings emitted
 
diff --git a/tests/ui/statics/static-recursive.stderr b/tests/ui/statics/static-recursive.stderr
index f2dd5b8a6cf..8ea997fa214 100644
--- a/tests/ui/statics/static-recursive.stderr
+++ b/tests/ui/statics/static-recursive.stderr
@@ -9,8 +9,9 @@ LL | static mut S: *const u8 = unsafe { &S as *const *const u8 as *const u8 };
    = note: `#[warn(static_mut_refs)]` on by default
 help: use `&raw const` instead to create a raw pointer
    |
-LL | static mut S: *const u8 = unsafe { &raw const S as *const *const u8 as *const u8 };
-   |                                    ~~~~~~~~~~
+LL - static mut S: *const u8 = unsafe { &S as *const *const u8 as *const u8 };
+LL + static mut S: *const u8 = unsafe { &raw const S as *const *const u8 as *const u8 };
+   |
 
 warning: creating a shared reference to mutable static is discouraged
   --> $DIR/static-recursive.rs:19:20
diff --git a/tests/ui/stdlib-unit-tests/atomic-from-mut-not-available.alignment_mismatch.stderr b/tests/ui/stdlib-unit-tests/atomic-from-mut-not-available.alignment_mismatch.stderr
index 47b17f9fcd7..6a8a7b152c5 100644
--- a/tests/ui/stdlib-unit-tests/atomic-from-mut-not-available.alignment_mismatch.stderr
+++ b/tests/ui/stdlib-unit-tests/atomic-from-mut-not-available.alignment_mismatch.stderr
@@ -9,8 +9,9 @@ note: if you're trying to build a new `AtomicU64`, consider using `AtomicU64::ne
    = note: this error originates in the macro `atomic_int` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: there is an associated function `from` with a similar name
    |
-LL |     core::sync::atomic::AtomicU64::from(&mut 0u64);
-   |                                    ~~~~
+LL -     core::sync::atomic::AtomicU64::from_mut(&mut 0u64);
+LL +     core::sync::atomic::AtomicU64::from(&mut 0u64);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/str/str-as-char.stderr b/tests/ui/str/str-as-char.stderr
index 0638d371c17..b2c716fa4f5 100644
--- a/tests/ui/str/str-as-char.stderr
+++ b/tests/ui/str/str-as-char.stderr
@@ -6,8 +6,9 @@ LL |     println!('●●');
    |
 help: if you meant to write a string literal, use double quotes
    |
-LL |     println!("●●");
-   |              ~  ~
+LL -     println!('●●');
+LL +     println!("●●");
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/structs-enums/issue-103869.stderr b/tests/ui/structs-enums/issue-103869.stderr
index 2334e5e9712..10e0f29f876 100644
--- a/tests/ui/structs-enums/issue-103869.stderr
+++ b/tests/ui/structs-enums/issue-103869.stderr
@@ -10,8 +10,9 @@ LL |     vec: Vec<usize>,
    = help: enum variants can be `Variant`, `Variant = <integer>`, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }`
 help: perhaps you meant to use `struct` here
    |
-LL | struct VecOrMap {
-   | ~~~~~~
+LL - enum VecOrMap {
+LL + struct VecOrMap {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr b/tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr
index 664a00e3303..231bada006c 100644
--- a/tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr
+++ b/tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr
@@ -6,8 +6,9 @@ LL |     if let Some(Foo::Bar {_}) = foo {}
    |
 help: to omit remaining fields, use `..`
    |
-LL |     if let Some(Foo::Bar {..}) = foo {}
-   |                           ~~
+LL -     if let Some(Foo::Bar {_}) = foo {}
+LL +     if let Some(Foo::Bar {..}) = foo {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/structs/default-field-values/non-exhaustive-ctor.disabled.stderr b/tests/ui/structs/default-field-values/non-exhaustive-ctor.disabled.stderr
index 63793425657..c7689cfd323 100644
--- a/tests/ui/structs/default-field-values/non-exhaustive-ctor.disabled.stderr
+++ b/tests/ui/structs/default-field-values/non-exhaustive-ctor.disabled.stderr
@@ -66,8 +66,9 @@ LL |     let _ = S { };
    |
 help: all remaining fields have default values, if you added `#![feature(default_field_values)]` to your crate you could use those values with `..`
    |
-LL |     let _ = S { .. };
-   |               ~~~~~~
+LL -     let _ = S { };
+LL +     let _ = S { .. };
+   |
 
 error[E0063]: missing fields `field1` and `field2` in initializer of `S`
   --> $DIR/non-exhaustive-ctor.rs:26:13
diff --git a/tests/ui/structs/default-field-values/non-exhaustive-ctor.enabled.stderr b/tests/ui/structs/default-field-values/non-exhaustive-ctor.enabled.stderr
index 6d035ebdc47..d9b8e76aa0d 100644
--- a/tests/ui/structs/default-field-values/non-exhaustive-ctor.enabled.stderr
+++ b/tests/ui/structs/default-field-values/non-exhaustive-ctor.enabled.stderr
@@ -6,8 +6,9 @@ LL |     let _ = S { };
    |
 help: all remaining fields have default values, you can use those values with `..`
    |
-LL |     let _ = S { .. };
-   |               ~~~~~~
+LL -     let _ = S { };
+LL +     let _ = S { .. };
+   |
 
 error[E0063]: missing fields `field1` and `field2` in initializer of `S`
   --> $DIR/non-exhaustive-ctor.rs:26:13
diff --git a/tests/ui/structs/struct-field-cfg.stderr b/tests/ui/structs/struct-field-cfg.stderr
index f30d343d582..2bca6f302db 100644
--- a/tests/ui/structs/struct-field-cfg.stderr
+++ b/tests/ui/structs/struct-field-cfg.stderr
@@ -20,16 +20,19 @@ LL |     let Foo { #[cfg(any())] present: () } = foo;
    |
 help: include the missing field in the pattern
    |
-LL |     let Foo { present } = foo;
-   |             ~~~~~~~~~~~
+LL -     let Foo { #[cfg(any())] present: () } = foo;
+LL +     let Foo { present } = foo;
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let Foo { present: _ } = foo;
-   |             ~~~~~~~~~~~~~~
+LL -     let Foo { #[cfg(any())] present: () } = foo;
+LL +     let Foo { present: _ } = foo;
+   |
 help: or always ignore missing fields here
    |
-LL |     let Foo { .. } = foo;
-   |             ~~~~~~
+LL -     let Foo { #[cfg(any())] present: () } = foo;
+LL +     let Foo { .. } = foo;
+   |
 
 error[E0026]: struct `Foo` does not have a field named `absent`
   --> $DIR/struct-field-cfg.rs:16:42
diff --git a/tests/ui/structs/struct-fields-hints-no-dupe.stderr b/tests/ui/structs/struct-fields-hints-no-dupe.stderr
index 2b88d802833..650f6ddfa88 100644
--- a/tests/ui/structs/struct-fields-hints-no-dupe.stderr
+++ b/tests/ui/structs/struct-fields-hints-no-dupe.stderr
@@ -6,8 +6,9 @@ LL |         bar : 42,
    |
 help: a field with a similar name exists
    |
-LL |         barr : 42,
-   |         ~~~~
+LL -         bar : 42,
+LL +         barr : 42,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/structs/struct-fields-hints.stderr b/tests/ui/structs/struct-fields-hints.stderr
index 8217d7a6e81..6526e49600e 100644
--- a/tests/ui/structs/struct-fields-hints.stderr
+++ b/tests/ui/structs/struct-fields-hints.stderr
@@ -6,8 +6,9 @@ LL |         bar : 42,
    |
 help: a field with a similar name exists
    |
-LL |         car : 42,
-   |         ~~~
+LL -         bar : 42,
+LL +         car : 42,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/structs/struct-fields-typo.stderr b/tests/ui/structs/struct-fields-typo.stderr
index d87bace7277..dacf2ecea17 100644
--- a/tests/ui/structs/struct-fields-typo.stderr
+++ b/tests/ui/structs/struct-fields-typo.stderr
@@ -6,8 +6,9 @@ LL |     let x = foo.baa;
    |
 help: a field with a similar name exists
    |
-LL |     let x = foo.bar;
-   |                 ~~~
+LL -     let x = foo.baa;
+LL +     let x = foo.bar;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/structs/struct-pat-derived-error.stderr b/tests/ui/structs/struct-pat-derived-error.stderr
index d1d68121cf1..a086de08983 100644
--- a/tests/ui/structs/struct-pat-derived-error.stderr
+++ b/tests/ui/structs/struct-pat-derived-error.stderr
@@ -6,8 +6,9 @@ LL |         let A { x, y } = self.d;
    |
 help: a field with a similar name exists
    |
-LL |         let A { x, y } = self.b;
-   |                               ~
+LL -         let A { x, y } = self.d;
+LL +         let A { x, y } = self.b;
+   |
 
 error[E0026]: struct `A` does not have fields named `x`, `y`
   --> $DIR/struct-pat-derived-error.rs:8:17
@@ -23,16 +24,19 @@ LL |         let A { x, y } = self.d;
    |
 help: include the missing fields in the pattern
    |
-LL |         let A { x, y, b, c } = self.d;
-   |                     ~~~~~~~~
+LL -         let A { x, y } = self.d;
+LL +         let A { x, y, b, c } = self.d;
+   |
 help: if you don't care about these missing fields, you can explicitly ignore them
    |
-LL |         let A { x, y, b: _, c: _ } = self.d;
-   |                     ~~~~~~~~~~~~~~
+LL -         let A { x, y } = self.d;
+LL +         let A { x, y, b: _, c: _ } = self.d;
+   |
 help: or always ignore missing fields here
    |
-LL |         let A { x, y, .. } = self.d;
-   |                     ~~~~~~
+LL -         let A { x, y } = self.d;
+LL +         let A { x, y, .. } = self.d;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/structs/struct-path-self-type-mismatch.stderr b/tests/ui/structs/struct-path-self-type-mismatch.stderr
index bbe5bae29bb..6517d7f00dd 100644
--- a/tests/ui/structs/struct-path-self-type-mismatch.stderr
+++ b/tests/ui/structs/struct-path-self-type-mismatch.stderr
@@ -44,8 +44,9 @@ LL | |         }
    = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
 help: use the type name directly
    |
-LL |         Foo::<U> {
-   |         ~~~~~~~~
+LL -         Self {
+LL +         Foo::<U> {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/structs/struct-tuple-field-names.stderr b/tests/ui/structs/struct-tuple-field-names.stderr
index 5f1ab2f9d68..7692010aa54 100644
--- a/tests/ui/structs/struct-tuple-field-names.stderr
+++ b/tests/ui/structs/struct-tuple-field-names.stderr
@@ -6,8 +6,9 @@ LL |         E::S { 0, 1 } => {}
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         E::S(_, _) => {}
-   |             ~~~~~~
+LL -         E::S { 0, 1 } => {}
+LL +         E::S(_, _) => {}
+   |
 
 error[E0769]: tuple variant `S` written as struct variant
   --> $DIR/struct-tuple-field-names.rs:13:9
@@ -17,8 +18,9 @@ LL |         S { } => {}
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         S(_, _) => {}
-   |          ~~~~~~
+LL -         S { } => {}
+LL +         S(_, _) => {}
+   |
 
 error[E0027]: pattern does not mention field `1`
   --> $DIR/struct-tuple-field-names.rs:16:12
@@ -28,16 +30,19 @@ LL |     if let E::S { 0: a } = x {
    |
 help: include the missing field in the pattern
    |
-LL |     if let E::S { 0: a, 1: _ } = x {
-   |                       ~~~~~~~~
+LL -     if let E::S { 0: a } = x {
+LL +     if let E::S { 0: a, 1: _ } = x {
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     if let E::S { 0: a, 1: _ } = x {
-   |                       ~~~~~~~~
+LL -     if let E::S { 0: a } = x {
+LL +     if let E::S { 0: a, 1: _ } = x {
+   |
 help: or always ignore missing fields here
    |
-LL |     if let E::S { 0: a, .. } = x {
-   |                       ~~~~~~
+LL -     if let E::S { 0: a } = x {
+LL +     if let E::S { 0: a, .. } = x {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/structs/suggest-private-fields.stderr b/tests/ui/structs/suggest-private-fields.stderr
index f67a4ed78e2..adf90f0e1fd 100644
--- a/tests/ui/structs/suggest-private-fields.stderr
+++ b/tests/ui/structs/suggest-private-fields.stderr
@@ -6,8 +6,9 @@ LL |         aa: 20,
    |
 help: a field with a similar name exists
    |
-LL |         a: 20,
-   |         ~
+LL -         aa: 20,
+LL +         a: 20,
+   |
 
 error[E0560]: struct `B` has no field named `bb`
   --> $DIR/suggest-private-fields.rs:17:9
@@ -25,8 +26,9 @@ LL |         aa: 20,
    |
 help: a field with a similar name exists
    |
-LL |         a: 20,
-   |         ~
+LL -         aa: 20,
+LL +         a: 20,
+   |
 
 error[E0560]: struct `A` has no field named `bb`
   --> $DIR/suggest-private-fields.rs:24:9
@@ -36,8 +38,9 @@ LL |         bb: 20,
    |
 help: a field with a similar name exists
    |
-LL |         b: 20,
-   |         ~
+LL -         bb: 20,
+LL +         b: 20,
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr b/tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr
index af530e2b759..befc6a1b538 100644
--- a/tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr
+++ b/tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr
@@ -15,16 +15,19 @@ LL |         Foo::Bar { a, aa: 1, c } => (),
    |
 help: include the missing field in the pattern
    |
-LL |         Foo::Bar { a, aa: 1, c, b } => (),
-   |                               ~~~~~
+LL -         Foo::Bar { a, aa: 1, c } => (),
+LL +         Foo::Bar { a, aa: 1, c, b } => (),
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Foo::Bar { a, aa: 1, c, b: _ } => (),
-   |                               ~~~~~~~~
+LL -         Foo::Bar { a, aa: 1, c } => (),
+LL +         Foo::Bar { a, aa: 1, c, b: _ } => (),
+   |
 help: or always ignore missing fields here
    |
-LL |         Foo::Bar { a, aa: 1, c, .. } => (),
-   |                               ~~~~~~
+LL -         Foo::Bar { a, aa: 1, c } => (),
+LL +         Foo::Bar { a, aa: 1, c, .. } => (),
+   |
 
 error[E0026]: variant `Foo::Baz` does not have a field named `bb`
   --> $DIR/suggest-replacing-field-when-specifying-same-type.rs:13:20
@@ -43,16 +46,19 @@ LL |         Foo::Baz { bb: 1.0 } => (),
    |
 help: include the missing field in the pattern
    |
-LL |         Foo::Baz { bb: 1.0, a } => (),
-   |                           ~~~~~
+LL -         Foo::Baz { bb: 1.0 } => (),
+LL +         Foo::Baz { bb: 1.0, a } => (),
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Foo::Baz { bb: 1.0, a: _ } => (),
-   |                           ~~~~~~~~
+LL -         Foo::Baz { bb: 1.0 } => (),
+LL +         Foo::Baz { bb: 1.0, a: _ } => (),
+   |
 help: or always ignore missing fields here
    |
-LL |         Foo::Baz { bb: 1.0, .. } => (),
-   |                           ~~~~~~
+LL -         Foo::Baz { bb: 1.0 } => (),
+LL +         Foo::Baz { bb: 1.0, .. } => (),
+   |
 
 error[E0026]: variant `Foo::Bar` does not have a field named `aa`
   --> $DIR/suggest-replacing-field-when-specifying-same-type.rs:20:23
@@ -68,16 +74,19 @@ LL |         Foo::Bar { a, aa: "", c } => (),
    |
 help: include the missing field in the pattern
    |
-LL |         Foo::Bar { a, aa: "", c, b } => (),
-   |                                ~~~~~
+LL -         Foo::Bar { a, aa: "", c } => (),
+LL +         Foo::Bar { a, aa: "", c, b } => (),
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Foo::Bar { a, aa: "", c, b: _ } => (),
-   |                                ~~~~~~~~
+LL -         Foo::Bar { a, aa: "", c } => (),
+LL +         Foo::Bar { a, aa: "", c, b: _ } => (),
+   |
 help: or always ignore missing fields here
    |
-LL |         Foo::Bar { a, aa: "", c, .. } => (),
-   |                                ~~~~~~
+LL -         Foo::Bar { a, aa: "", c } => (),
+LL +         Foo::Bar { a, aa: "", c, .. } => (),
+   |
 
 error[E0026]: variant `Foo::Baz` does not have a field named `bb`
   --> $DIR/suggest-replacing-field-when-specifying-same-type.rs:23:20
@@ -93,16 +102,19 @@ LL |         Foo::Baz { bb: "" } => (),
    |
 help: include the missing field in the pattern
    |
-LL |         Foo::Baz { bb: "", a } => (),
-   |                          ~~~~~
+LL -         Foo::Baz { bb: "" } => (),
+LL +         Foo::Baz { bb: "", a } => (),
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |         Foo::Baz { bb: "", a: _ } => (),
-   |                          ~~~~~~~~
+LL -         Foo::Baz { bb: "" } => (),
+LL +         Foo::Baz { bb: "", a: _ } => (),
+   |
 help: or always ignore missing fields here
    |
-LL |         Foo::Baz { bb: "", .. } => (),
-   |                          ~~~~~~
+LL -         Foo::Baz { bb: "" } => (),
+LL +         Foo::Baz { bb: "", .. } => (),
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/suggestions/ambiguous-assoc-type-path-suggest-similar-item.stderr b/tests/ui/suggestions/ambiguous-assoc-type-path-suggest-similar-item.stderr
index 5863aa28f41..76e3c21473d 100644
--- a/tests/ui/suggestions/ambiguous-assoc-type-path-suggest-similar-item.stderr
+++ b/tests/ui/suggestions/ambiguous-assoc-type-path-suggest-similar-item.stderr
@@ -6,8 +6,9 @@ LL |     String::from::utf8;
    |
 help: there is an associated function with a similar name: `from_utf8`
    |
-LL |     String::from_utf8;
-   |             ~~~~~~~~~
+LL -     String::from::utf8;
+LL +     String::from_utf8;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:16:5
@@ -17,8 +18,9 @@ LL |     String::from::utf8();
    |
 help: there is an associated function with a similar name: `from_utf8`
    |
-LL |     String::from_utf8();
-   |             ~~~~~~~~~
+LL -     String::from::utf8();
+LL +     String::from_utf8();
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:19:5
@@ -28,8 +30,9 @@ LL |     String::from::utf16();
    |
 help: there is an associated function with a similar name: `from_utf16`
    |
-LL |     String::from_utf16();
-   |             ~~~~~~~~~~
+LL -     String::from::utf16();
+LL +     String::from_utf16();
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:22:5
@@ -39,8 +42,9 @@ LL |     String::from::method_that_doesnt_exist();
    |
 help: if there were a trait named `Example` with associated type `from` implemented for `String`, you could use the fully-qualified path
    |
-LL |     <String as Example>::from::method_that_doesnt_exist();
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     String::from::method_that_doesnt_exist();
+LL +     <String as Example>::from::method_that_doesnt_exist();
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:25:5
@@ -50,8 +54,9 @@ LL |     str::into::string();
    |
 help: there is an associated function with a similar name: `into_string`
    |
-LL |     str::into_string();
-   |          ~~~~~~~~~~~
+LL -     str::into::string();
+LL +     str::into_string();
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:28:5
@@ -61,8 +66,9 @@ LL |     str::char::indices();
    |
 help: there is an associated function with a similar name: `char_indices`
    |
-LL |     str::char_indices();
-   |          ~~~~~~~~~~~~
+LL -     str::char::indices();
+LL +     str::char_indices();
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:31:5
@@ -72,8 +78,9 @@ LL |     Foo::bar::baz;
    |
 help: there is an associated function with a similar name: `bar_baz`
    |
-LL |     Foo::bar_baz;
-   |          ~~~~~~~
+LL -     Foo::bar::baz;
+LL +     Foo::bar_baz;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:34:5
@@ -83,8 +90,9 @@ LL |     Foo::bar::quux;
    |
 help: there is an associated function with a similar name: `bar_quux`
    |
-LL |     Foo::bar_quux;
-   |          ~~~~~~~~
+LL -     Foo::bar::quux;
+LL +     Foo::bar_quux;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:37:5
@@ -94,8 +102,9 @@ LL |     Foo::bar::fizz;
    |
 help: if there were a trait named `Example` with associated type `bar` implemented for `Foo`, you could use the fully-qualified path
    |
-LL |     <Foo as Example>::bar::fizz;
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     Foo::bar::fizz;
+LL +     <Foo as Example>::bar::fizz;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:40:5
@@ -105,8 +114,9 @@ LL |     i32::wrapping::add;
    |
 help: there is an associated function with a similar name: `wrapping_add`
    |
-LL |     i32::wrapping_add;
-   |          ~~~~~~~~~~~~
+LL -     i32::wrapping::add;
+LL +     i32::wrapping_add;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:43:5
@@ -116,8 +126,9 @@ LL |     i32::wrapping::method_that_doesnt_exist;
    |
 help: if there were a trait named `Example` with associated type `wrapping` implemented for `i32`, you could use the fully-qualified path
    |
-LL |     <i32 as Example>::wrapping::method_that_doesnt_exist;
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     i32::wrapping::method_that_doesnt_exist;
+LL +     <i32 as Example>::wrapping::method_that_doesnt_exist;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/ambiguous-assoc-type-path-suggest-similar-item.rs:48:5
@@ -127,8 +138,9 @@ LL |     <dyn std::any::Any>::downcast::mut_unchecked;
    |
 help: if there were a trait named `Example` with associated type `downcast` implemented for `(dyn Any + 'static)`, you could use the fully-qualified path
    |
-LL |     <(dyn Any + 'static) as Example>::downcast::mut_unchecked;
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     <dyn std::any::Any>::downcast::mut_unchecked;
+LL +     <(dyn Any + 'static) as Example>::downcast::mut_unchecked;
+   |
 
 error: aborting due to 12 previous errors
 
diff --git a/tests/ui/suggestions/args-instead-of-tuple-errors.stderr b/tests/ui/suggestions/args-instead-of-tuple-errors.stderr
index 1051a16b40d..8644f4a1dd4 100644
--- a/tests/ui/suggestions/args-instead-of-tuple-errors.stderr
+++ b/tests/ui/suggestions/args-instead-of-tuple-errors.stderr
@@ -60,8 +60,9 @@ note: tuple variant defined here
   --> $SRC_DIR/core/src/option.rs:LL:COL
 help: provide the argument
    |
-LL |     let _: Option<(i8,)> = Some(/* (i8,) */);
-   |                                ~~~~~~~~~~~~~
+LL -     let _: Option<(i8,)> = Some();
+LL +     let _: Option<(i8,)> = Some(/* (i8,) */);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/args-instead-of-tuple-errors.rs:14:34
diff --git a/tests/ui/suggestions/args-instead-of-tuple.stderr b/tests/ui/suggestions/args-instead-of-tuple.stderr
index 3ca560f93eb..4b0bab971ee 100644
--- a/tests/ui/suggestions/args-instead-of-tuple.stderr
+++ b/tests/ui/suggestions/args-instead-of-tuple.stderr
@@ -34,8 +34,9 @@ note: tuple variant defined here
   --> $SRC_DIR/core/src/option.rs:LL:COL
 help: provide the argument
    |
-LL |     let _: Option<()> = Some(());
-   |                             ~~~~
+LL -     let _: Option<()> = Some();
+LL +     let _: Option<()> = Some(());
+   |
 
 error[E0308]: mismatched types
   --> $DIR/args-instead-of-tuple.rs:14:34
diff --git a/tests/ui/suggestions/assoc-const-as-field.stderr b/tests/ui/suggestions/assoc-const-as-field.stderr
index 6c095e52ac9..54b7ff39926 100644
--- a/tests/ui/suggestions/assoc-const-as-field.stderr
+++ b/tests/ui/suggestions/assoc-const-as-field.stderr
@@ -6,8 +6,9 @@ LL |     foo(Mod::Foo.Bar);
    |
 help: use the path separator to refer to an item
    |
-LL |     foo(Mod::Foo::Bar);
-   |                 ~~
+LL -     foo(Mod::Foo.Bar);
+LL +     foo(Mod::Foo::Bar);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/assoc-ct-for-assoc-method.stderr b/tests/ui/suggestions/assoc-ct-for-assoc-method.stderr
index 8f00a72f1e8..6d6fd983038 100644
--- a/tests/ui/suggestions/assoc-ct-for-assoc-method.stderr
+++ b/tests/ui/suggestions/assoc-ct-for-assoc-method.stderr
@@ -10,8 +10,9 @@ LL |     let x: i32 = MyS::foo;
            found fn item `fn() -> MyS {MyS::foo}`
 help: try referring to the associated const `FOO` instead (notice the capitalization difference)
    |
-LL |     let x: i32 = MyS::FOO;
-   |                       ~~~
+LL -     let x: i32 = MyS::foo;
+LL +     let x: i32 = MyS::FOO;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/assoc-ct-for-assoc-method.rs:15:18
@@ -25,8 +26,9 @@ LL |     let z: i32 = i32::max;
            found fn item `fn(i32, i32) -> i32 {<i32 as Ord>::max}`
 help: try referring to the associated const `MAX` instead
    |
-LL |     let z: i32 = i32::MAX;
-   |                       ~~~
+LL -     let z: i32 = i32::max;
+LL +     let z: i32 = i32::MAX;
+   |
 
 error[E0369]: cannot subtract `{integer}` from `fn(i32, i32) -> i32 {<i32 as Ord>::max}`
   --> $DIR/assoc-ct-for-assoc-method.rs:22:27
diff --git a/tests/ui/suggestions/bad-hex-float-lit.stderr b/tests/ui/suggestions/bad-hex-float-lit.stderr
index bc09abb1a56..94c0715a4e6 100644
--- a/tests/ui/suggestions/bad-hex-float-lit.stderr
+++ b/tests/ui/suggestions/bad-hex-float-lit.stderr
@@ -8,10 +8,12 @@ LL |     let _f: f32 = 0xAAf32;
    |
 help: rewrite this as a decimal floating point literal, or use `as` to turn a hex literal into a float
    |
-LL |     let _f: f32 = 0xAA as f32;
-   |                   ~~~~~~~~~~~
-LL |     let _f: f32 = 170_f32;
-   |                   ~~~~~~~
+LL -     let _f: f32 = 0xAAf32;
+LL +     let _f: f32 = 0xAA as f32;
+   |
+LL -     let _f: f32 = 0xAAf32;
+LL +     let _f: f32 = 170_f32;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/bad-hex-float-lit.rs:6:19
@@ -23,10 +25,12 @@ LL |     let _f: f32 = 0xAB_f32;
    |
 help: rewrite this as a decimal floating point literal, or use `as` to turn a hex literal into a float
    |
-LL |     let _f: f32 = 0xAB as f32;
-   |                   ~~~~~~~~~~~
-LL |     let _f: f32 = 171_f32;
-   |                   ~~~~~~~
+LL -     let _f: f32 = 0xAB_f32;
+LL +     let _f: f32 = 0xAB as f32;
+   |
+LL -     let _f: f32 = 0xAB_f32;
+LL +     let _f: f32 = 171_f32;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/bad-hex-float-lit.rs:10:19
@@ -38,10 +42,12 @@ LL |     let _f: f64 = 0xFF_f64;
    |
 help: rewrite this as a decimal floating point literal, or use `as` to turn a hex literal into a float
    |
-LL |     let _f: f64 = 0xFF as f64;
-   |                   ~~~~~~~~~~~
-LL |     let _f: f64 = 255_f64;
-   |                   ~~~~~~~
+LL -     let _f: f64 = 0xFF_f64;
+LL +     let _f: f64 = 0xFF as f64;
+   |
+LL -     let _f: f64 = 0xFF_f64;
+LL +     let _f: f64 = 255_f64;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/suggestions/bad-infer-in-trait-impl.stderr b/tests/ui/suggestions/bad-infer-in-trait-impl.stderr
index 50c398de2b0..68d8f5402e4 100644
--- a/tests/ui/suggestions/bad-infer-in-trait-impl.stderr
+++ b/tests/ui/suggestions/bad-infer-in-trait-impl.stderr
@@ -6,8 +6,9 @@ LL |     fn bar(s: _) {}
    |
 help: use type parameters instead
    |
-LL |     fn bar<T>(s: T) {}
-   |           +++    ~
+LL -     fn bar(s: _) {}
+LL +     fn bar<T>(s: T) {}
+   |
 
 error[E0050]: method `bar` has 1 parameter but the declaration in trait `Foo::bar` has 0
   --> $DIR/bad-infer-in-trait-impl.rs:6:15
diff --git a/tests/ui/suggestions/bool_typo_err_suggest.stderr b/tests/ui/suggestions/bool_typo_err_suggest.stderr
index 8d59ed63e54..faf799d0fda 100644
--- a/tests/ui/suggestions/bool_typo_err_suggest.stderr
+++ b/tests/ui/suggestions/bool_typo_err_suggest.stderr
@@ -6,8 +6,9 @@ LL |     let x = True;
    |
 help: you may want to use a bool value instead
    |
-LL |     let x = true;
-   |             ~~~~
+LL -     let x = True;
+LL +     let x = true;
+   |
 
 error[E0425]: cannot find value `False` in this scope
   --> $DIR/bool_typo_err_suggest.rs:9:13
@@ -17,8 +18,9 @@ LL |     let y = False;
    |
 help: you may want to use a bool value instead (notice the capitalization difference)
    |
-LL |     let y = false;
-   |             ~~~~~
+LL -     let y = False;
+LL +     let y = false;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/suggestions/bound-suggestions.stderr b/tests/ui/suggestions/bound-suggestions.stderr
index e30deb11398..51a6a51e7da 100644
--- a/tests/ui/suggestions/bound-suggestions.stderr
+++ b/tests/ui/suggestions/bound-suggestions.stderr
@@ -43,8 +43,9 @@ LL |     println!("{:?} {:?}", x, y);
    = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
 help: consider further restricting type parameter `Y` with trait `Debug`
    |
-LL | fn test_no_bounds_where<X, Y>(x: X, y: Y) where X: std::fmt::Debug, Y: std::fmt::Debug {
-   |                                                                   ~~~~~~~~~~~~~~~~~~~~
+LL - fn test_no_bounds_where<X, Y>(x: X, y: Y) where X: std::fmt::Debug, {
+LL + fn test_no_bounds_where<X, Y>(x: X, y: Y) where X: std::fmt::Debug, Y: std::fmt::Debug {
+   |
 
 error[E0277]: `X` doesn't implement `Debug`
   --> $DIR/bound-suggestions.rs:33:22
diff --git a/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr
index 4f92d3aceef..55a353c40ca 100644
--- a/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr
+++ b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr
@@ -12,8 +12,9 @@ LL |     const A: i32 = 2;
    = note: the matched value is of type `i32`
 help: introduce a variable instead
    |
-LL |     let A_var = 3;
-   |         ~~~~~
+LL -     let A = 3;
+LL +     let A_var = 3;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/crate-or-module-typo.stderr b/tests/ui/suggestions/crate-or-module-typo.stderr
index 75aa6e614b6..0ca0582105b 100644
--- a/tests/ui/suggestions/crate-or-module-typo.stderr
+++ b/tests/ui/suggestions/crate-or-module-typo.stderr
@@ -6,8 +6,9 @@ LL | use st::cell::Cell;
    |
 help: there is a crate or module with a similar name
    |
-LL | use std::cell::Cell;
-   |     ~~~
+LL - use st::cell::Cell;
+LL + use std::cell::Cell;
+   |
 
 error[E0432]: unresolved import `bas`
   --> $DIR/crate-or-module-typo.rs:11:5
@@ -17,8 +18,9 @@ LL | use bas::bar;
    |
 help: there is a crate or module with a similar name
    |
-LL | use bar::bar;
-   |     ~~~
+LL - use bas::bar;
+LL + use bar::bar;
+   |
 
 error[E0433]: failed to resolve: use of unresolved module or unlinked crate `st`
   --> $DIR/crate-or-module-typo.rs:14:10
@@ -28,8 +30,9 @@ LL |     bar: st::cell::Cell<bool>
    |
 help: there is a crate or module with a similar name
    |
-LL |     bar: std::cell::Cell<bool>
-   |          ~~~
+LL -     bar: st::cell::Cell<bool>
+LL +     bar: std::cell::Cell<bool>
+   |
 help: consider importing this module
    |
 LL + use std::cell;
diff --git a/tests/ui/suggestions/deref-path-method.stderr b/tests/ui/suggestions/deref-path-method.stderr
index bfcc2307fd7..dc2f6f66437 100644
--- a/tests/ui/suggestions/deref-path-method.stderr
+++ b/tests/ui/suggestions/deref-path-method.stderr
@@ -13,8 +13,9 @@ note: if you're trying to build a new `Vec<_, _>` consider using one of the foll
   --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
 help: the function `contains` is implemented on `[_]`
    |
-LL |     <[_]>::contains(&vec, &0);
-   |     ~~~~~
+LL -     Vec::contains(&vec, &0);
+LL +     <[_]>::contains(&vec, &0);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr b/tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr
index 348f7e00d46..53fdb5880c0 100644
--- a/tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr
+++ b/tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr
@@ -6,8 +6,9 @@ LL |     assert_eq!(10u64, 10usize);
    |
 help: change the type of the numeric literal from `usize` to `u64`
    |
-LL |     assert_eq!(10u64, 10u64);
-   |                         ~~~
+LL -     assert_eq!(10u64, 10usize);
+LL +     assert_eq!(10u64, 10u64);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021-without-dyn.stderr b/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021-without-dyn.stderr
index 404df206e18..20aa227d10f 100644
--- a/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021-without-dyn.stderr
+++ b/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021-without-dyn.stderr
@@ -7,8 +7,9 @@ LL |     fn f(a: A) -> A;
    = note: `A` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `A`
    |
-LL |     fn f<T: A>(a: T) -> A;
-   |         ++++++    ~
+LL -     fn f(a: A) -> A;
+LL +     fn f<T: A>(a: T) -> A;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn f(a: impl A) -> A;
@@ -34,8 +35,9 @@ LL |     fn f(b: B) -> B;
    = note: `B` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `B`
    |
-LL |     fn f<T: B>(b: T) -> B;
-   |         ++++++    ~
+LL -     fn f(b: B) -> B;
+LL +     fn f<T: B>(b: T) -> B;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn f(b: impl B) -> B;
@@ -61,8 +63,9 @@ LL |     fn f(&self, c: C) -> C;
    = note: `C` it is dyn-incompatible, so it can't be `dyn`
 help: use a new generic type parameter, constrained by `C`
    |
-LL |     fn f<T: C>(&self, c: T) -> C;
-   |         ++++++           ~
+LL -     fn f(&self, c: C) -> C;
+LL +     fn f<T: C>(&self, c: T) -> C;
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL |     fn f(&self, c: impl C) -> C;
@@ -89,8 +92,9 @@ LL |     fn f(a: A) -> A;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(a: Self) -> Self;
-   |             ~~~~     ~~~~
+LL -     fn f(a: A) -> A;
+LL +     fn f(a: Self) -> Self;
+   |
 
 error: associated item referring to unboxed trait object for its own trait
   --> $DIR/dyn-incompatible-trait-should-use-self-2021-without-dyn.rs:10:13
@@ -102,8 +106,9 @@ LL |     fn f(b: B) -> B;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(b: Self) -> Self;
-   |             ~~~~     ~~~~
+LL -     fn f(b: B) -> B;
+LL +     fn f(b: Self) -> Self;
+   |
 
 error: associated item referring to unboxed trait object for its own trait
   --> $DIR/dyn-incompatible-trait-should-use-self-2021-without-dyn.rs:16:20
@@ -115,8 +120,9 @@ LL |     fn f(&self, c: C) -> C;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(&self, c: Self) -> Self;
-   |                    ~~~~     ~~~~
+LL -     fn f(&self, c: C) -> C;
+LL +     fn f(&self, c: Self) -> Self;
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021.stderr b/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021.stderr
index 742011ad0c0..2e3919db1b7 100644
--- a/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021.stderr
+++ b/tests/ui/suggestions/dyn-incompatible-trait-should-use-self-2021.stderr
@@ -8,8 +8,9 @@ LL |     fn f(a: dyn A) -> dyn A;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(a: Self) -> Self;
-   |             ~~~~     ~~~~
+LL -     fn f(a: dyn A) -> dyn A;
+LL +     fn f(a: Self) -> Self;
+   |
 
 error[E0038]: the trait `A` is not dyn compatible
   --> $DIR/dyn-incompatible-trait-should-use-self-2021.rs:4:13
@@ -36,8 +37,9 @@ LL |     fn f(a: dyn B) -> dyn B;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(a: Self) -> Self;
-   |             ~~~~     ~~~~
+LL -     fn f(a: dyn B) -> dyn B;
+LL +     fn f(a: Self) -> Self;
+   |
 
 error[E0038]: the trait `B` is not dyn compatible
   --> $DIR/dyn-incompatible-trait-should-use-self-2021.rs:9:13
diff --git a/tests/ui/suggestions/dyn-incompatible-trait-should-use-self.stderr b/tests/ui/suggestions/dyn-incompatible-trait-should-use-self.stderr
index 843c139851d..f4b669d7fcd 100644
--- a/tests/ui/suggestions/dyn-incompatible-trait-should-use-self.stderr
+++ b/tests/ui/suggestions/dyn-incompatible-trait-should-use-self.stderr
@@ -8,8 +8,9 @@ LL |     fn f(a: A) -> A;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(a: Self) -> Self;
-   |             ~~~~     ~~~~
+LL -     fn f(a: A) -> A;
+LL +     fn f(a: Self) -> Self;
+   |
 
 error[E0038]: the trait `A` is not dyn compatible
   --> $DIR/dyn-incompatible-trait-should-use-self.rs:3:13
@@ -36,8 +37,9 @@ LL |     fn f(a: B) -> B;
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn f(a: Self) -> Self;
-   |             ~~~~     ~~~~
+LL -     fn f(a: B) -> B;
+LL +     fn f(a: Self) -> Self;
+   |
 
 error[E0038]: the trait `B` is not dyn compatible
   --> $DIR/dyn-incompatible-trait-should-use-self.rs:8:13
diff --git a/tests/ui/suggestions/dyn-incompatible-trait-should-use-where-sized.stderr b/tests/ui/suggestions/dyn-incompatible-trait-should-use-where-sized.stderr
index e2250807603..ac93c5df05e 100644
--- a/tests/ui/suggestions/dyn-incompatible-trait-should-use-where-sized.stderr
+++ b/tests/ui/suggestions/dyn-incompatible-trait-should-use-where-sized.stderr
@@ -20,12 +20,14 @@ LL |     fn foo(&self) where Self: Other, { }
    |            +++++
 help: alternatively, consider constraining `foo` so it does not apply to trait objects
    |
-LL |     fn foo() where Self: Other, Self: Sized { }
-   |                               ~~~~~~~~~~~~~
+LL -     fn foo() where Self: Other, { }
+LL +     fn foo() where Self: Other, Self: Sized { }
+   |
 help: consider changing method `bar`'s `self` parameter to be `&self`
    |
-LL |     fn bar(self: &Self) {}
-   |                  ~~~~~
+LL -     fn bar(self: ()) {}
+LL +     fn bar(self: &Self) {}
+   |
 
 error[E0307]: invalid `self` parameter type: `()`
   --> $DIR/dyn-incompatible-trait-should-use-where-sized.rs:6:18
diff --git a/tests/ui/suggestions/field-access.stderr b/tests/ui/suggestions/field-access.stderr
index 007bc6ecf93..4696950930f 100644
--- a/tests/ui/suggestions/field-access.stderr
+++ b/tests/ui/suggestions/field-access.stderr
@@ -11,8 +11,9 @@ LL |     if let B::Fst = a {};
    |
 help: you might have meant to use field `b` whose type is `B`
    |
-LL |     if let B::Fst = a.b {};
-   |                     ~~~
+LL -     if let B::Fst = a {};
+LL +     if let B::Fst = a.b {};
+   |
 
 error[E0308]: mismatched types
   --> $DIR/field-access.rs:25:9
@@ -28,8 +29,9 @@ LL |         B::Fst => (),
    |
 help: you might have meant to use field `b` whose type is `B`
    |
-LL |     match a.b {
-   |           ~~~
+LL -     match a {
+LL +     match a.b {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/field-access.rs:26:9
@@ -45,8 +47,9 @@ LL |         B::Snd => (),
    |
 help: you might have meant to use field `b` whose type is `B`
    |
-LL |     match a.b {
-   |           ~~~
+LL -     match a {
+LL +     match a.b {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/field-access.rs:32:9
@@ -59,8 +62,9 @@ LL |         1u32 => (),
    |
 help: you might have meant to use field `bar` whose type is `u32`
    |
-LL |     match unsafe { foo.bar } {
-   |           ~~~~~~~~~~~~~~~~~~
+LL -     match foo {
+LL +     match unsafe { foo.bar } {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/fn-to-method.normal.stderr b/tests/ui/suggestions/fn-to-method.normal.stderr
index 502be79481a..9bd9497ab4d 100644
--- a/tests/ui/suggestions/fn-to-method.normal.stderr
+++ b/tests/ui/suggestions/fn-to-method.normal.stderr
@@ -6,8 +6,9 @@ LL |     let x = cmp(&1, &2);
    |
 help: use the `.` operator to call the method `Ord::cmp` on `&{integer}`
    |
-LL |     let x = (&1).cmp(&2);
-   |             ~  ~~~~~~~~~
+LL -     let x = cmp(&1, &2);
+LL +     let x = (&1).cmp(&2);
+   |
 
 error[E0425]: cannot find function `len` in this scope
   --> $DIR/fn-to-method.rs:16:13
diff --git a/tests/ui/suggestions/for-loop-missing-in.stderr b/tests/ui/suggestions/for-loop-missing-in.stderr
index 61830b800a6..4e0cb229d50 100644
--- a/tests/ui/suggestions/for-loop-missing-in.stderr
+++ b/tests/ui/suggestions/for-loop-missing-in.stderr
@@ -17,8 +17,9 @@ LL |     for _i of 0..2 {
    |
 help: try using `in` here instead
    |
-LL |     for _i in 0..2 {
-   |            ~~
+LL -     for _i of 0..2 {
+LL +     for _i in 0..2 {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/suggestions/ice-unwrap-probe-many-result-125876.stderr b/tests/ui/suggestions/ice-unwrap-probe-many-result-125876.stderr
index d610a3b7cad..f943688e657 100644
--- a/tests/ui/suggestions/ice-unwrap-probe-many-result-125876.stderr
+++ b/tests/ui/suggestions/ice-unwrap-probe-many-result-125876.stderr
@@ -31,8 +31,9 @@ LL |     std::ptr::from_ref(num).cast_mut().as_deref();
    |
 help: there is a method `as_ref` with a similar name
    |
-LL |     std::ptr::from_ref(num).cast_mut().as_ref();
-   |                                        ~~~~~~
+LL -     std::ptr::from_ref(num).cast_mut().as_deref();
+LL +     std::ptr::from_ref(num).cast_mut().as_ref();
+   |
 
 error: aborting due to 2 previous errors; 2 warnings emitted
 
diff --git a/tests/ui/suggestions/imm-ref-trait-object-literal.stderr b/tests/ui/suggestions/imm-ref-trait-object-literal.stderr
index 79fa468dc49..90dee9005ab 100644
--- a/tests/ui/suggestions/imm-ref-trait-object-literal.stderr
+++ b/tests/ui/suggestions/imm-ref-trait-object-literal.stderr
@@ -14,8 +14,9 @@ LL | fn foo<X: Trait>(_: X) {}
    |           ^^^^^ required by this bound in `foo`
 help: consider changing this borrow's mutability
    |
-LL |   foo(&mut s);
-   |       ~~~~
+LL -   foo(&s);
+LL +   foo(&mut s);
+   |
 
 error[E0277]: the trait bound `S: Trait` is not satisfied
   --> $DIR/imm-ref-trait-object-literal.rs:13:7
diff --git a/tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr b/tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr
index 30f4509d49d..299cf1d74d5 100644
--- a/tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr
+++ b/tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr
@@ -11,8 +11,9 @@ LL |     fn g(mut x: impl Iterator<Item = &()>) -> Option<&'static ()> { x.next(
    |                                                       +++++++
 help: consider introducing a named lifetime parameter
    |
-LL |     fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
-   |         ++++                             ~~~                ~~~
+LL -     fn g(mut x: impl Iterator<Item = &()>) -> Option<&()> { x.next() }
+LL +     fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL -     fn g(mut x: impl Iterator<Item = &()>) -> Option<&()> { x.next() }
@@ -32,8 +33,9 @@ LL |     async fn i(mut x: impl Iterator<Item = &()>) -> Option<&'static ()> { x
    |                                                             +++++++
 help: consider introducing a named lifetime parameter
    |
-LL |     async fn i<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
-   |               ++++                             ~~~                ~~~
+LL -     async fn i(mut x: impl Iterator<Item = &()>) -> Option<&()> { x.next() }
+LL +     async fn i<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL -     async fn i(mut x: impl Iterator<Item = &()>) -> Option<&()> { x.next() }
@@ -49,12 +51,14 @@ LL |     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next()
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL |     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
-   |                                                          ~~~~~~~
+LL -     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL +     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
+   |
 help: consider introducing a named lifetime parameter
    |
-LL |     fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
-   |         ++++                             ~~~                ~~~
+LL -     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL +     fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL -     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
@@ -70,12 +74,14 @@ LL |     async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.n
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL |     async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
-   |                                                                ~~~~~~~
+LL -     async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL +     async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
+   |
 help: consider introducing a named lifetime parameter
    |
-LL |     async fn i<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
-   |               ++++                             ~~~                ~~~
+LL -     async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL +     async fn i<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL -     async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
@@ -95,8 +101,9 @@ LL |     fn g(mut x: impl Foo) -> Option<&'static ()> { x.next() }
    |                                      +++++++
 help: consider introducing a named lifetime parameter
    |
-LL |     fn g<'a>(mut x: impl Foo) -> Option<&'a ()> { x.next() }
-   |         ++++                            ~~~
+LL -     fn g(mut x: impl Foo) -> Option<&()> { x.next() }
+LL +     fn g<'a>(mut x: impl Foo) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL -     fn g(mut x: impl Foo) -> Option<&()> { x.next() }
@@ -116,8 +123,9 @@ LL |     fn g(mut x: impl Foo<()>) -> Option<&'static ()> { x.next() }
    |                                          +++++++
 help: consider introducing a named lifetime parameter
    |
-LL |     fn g<'a>(mut x: impl Foo<()>) -> Option<&'a ()> { x.next() }
-   |         ++++                                ~~~
+LL -     fn g(mut x: impl Foo<()>) -> Option<&()> { x.next() }
+LL +     fn g<'a>(mut x: impl Foo<()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL -     fn g(mut x: impl Foo<()>) -> Option<&()> { x.next() }
@@ -176,8 +184,9 @@ LL |     fn f(_: impl Iterator<Item = &'_ ()>) {}
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 help: consider introducing a named lifetime parameter
    |
-LL |     fn f<'a>(_: impl Iterator<Item = &'a ()>) {}
-   |         ++++                          ~~
+LL -     fn f(_: impl Iterator<Item = &'_ ()>) {}
+LL +     fn f<'a>(_: impl Iterator<Item = &'a ()>) {}
+   |
 
 error[E0658]: anonymous lifetimes in `impl Trait` are unstable
   --> $DIR/impl-trait-missing-lifetime-gated.rs:28:39
@@ -189,8 +198,9 @@ LL |     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next()
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 help: consider introducing a named lifetime parameter
    |
-LL |     fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'_ ()> { x.next() }
-   |         ++++                              ~~
+LL -     fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL +     fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'_ ()> { x.next() }
+   |
 
 error: lifetime may not live long enough
   --> $DIR/impl-trait-missing-lifetime-gated.rs:38:73
diff --git a/tests/ui/suggestions/impl-trait-missing-lifetime.stderr b/tests/ui/suggestions/impl-trait-missing-lifetime.stderr
index 70998b67c04..dfbc883680b 100644
--- a/tests/ui/suggestions/impl-trait-missing-lifetime.stderr
+++ b/tests/ui/suggestions/impl-trait-missing-lifetime.stderr
@@ -7,12 +7,14 @@ LL | fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
-   |                                                      ~~~~~~~
+LL - fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL + fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
+   |
 help: consider introducing a named lifetime parameter
    |
-LL | fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
-   |     ++++                             ~~~                ~~~
+LL - fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL + fn g<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL - fn g(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
@@ -28,12 +30,14 @@ LL | async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next(
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
-   |                                                            ~~~~~~~
+LL - async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL + async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'static ()> { x.next() }
+   |
 help: consider introducing a named lifetime parameter
    |
-LL | async fn i<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
-   |           ++++                             ~~~                ~~~
+LL - async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
+LL + async fn i<'a>(mut x: impl Iterator<Item = &'a ()>) -> Option<&'a ()> { x.next() }
+   |
 help: alternatively, you might want to return an owned value
    |
 LL - async fn i(mut x: impl Iterator<Item = &'_ ()>) -> Option<&'_ ()> { x.next() }
diff --git a/tests/ui/suggestions/impl-trait-with-missing-bounds.stderr b/tests/ui/suggestions/impl-trait-with-missing-bounds.stderr
index a763eb6f2f8..d0ce7c9ed4e 100644
--- a/tests/ui/suggestions/impl-trait-with-missing-bounds.stderr
+++ b/tests/ui/suggestions/impl-trait-with-missing-bounds.stderr
@@ -14,8 +14,9 @@ LL | fn qux(_: impl std::fmt::Debug) {}
    |                ^^^^^^^^^^^^^^^ required by this bound in `qux`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | fn foo<I: Iterator>(constraints: I) where <I as Iterator>::Item: Debug {
-   |       +++++++++++++              ~  ++++++++++++++++++++++++++++++++++
+LL - fn foo(constraints: impl  Iterator) {
+LL + fn foo<I: Iterator>(constraints: I) where <I as Iterator>::Item: Debug {
+   |
 
 error[E0277]: `<impl Iterator as Iterator>::Item` doesn't implement `Debug`
   --> $DIR/impl-trait-with-missing-bounds.rs:14:13
@@ -33,8 +34,9 @@ LL | fn qux(_: impl std::fmt::Debug) {}
    |                ^^^^^^^^^^^^^^^ required by this bound in `qux`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | fn bar<T, I: Iterator>(t: T, constraints: I) where T: std::fmt::Debug, <I as Iterator>::Item: Debug {
-   |         +++++++++++++                     ~                          ++++++++++++++++++++++++++++++
+LL - fn bar<T>(t: T, constraints: impl Iterator) where T: std::fmt::Debug {
+LL + fn bar<T, I: Iterator>(t: T, constraints: I) where T: std::fmt::Debug, <I as Iterator>::Item: Debug {
+   |
 
 error[E0277]: `<impl Iterator as Iterator>::Item` doesn't implement `Debug`
   --> $DIR/impl-trait-with-missing-bounds.rs:22:13
@@ -52,8 +54,9 @@ LL | fn qux(_: impl std::fmt::Debug) {}
    |                ^^^^^^^^^^^^^^^ required by this bound in `qux`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | fn baz<I: Iterator>(t: impl std::fmt::Debug, constraints: I) where <I as Iterator>::Item: Debug {
-   |       +++++++++++++                                       ~  ++++++++++++++++++++++++++++++++++
+LL - fn baz(t: impl std::fmt::Debug, constraints: impl Iterator) {
+LL + fn baz<I: Iterator>(t: impl std::fmt::Debug, constraints: I) where <I as Iterator>::Item: Debug {
+   |
 
 error[E0277]: `<impl Iterator as Iterator>::Item` doesn't implement `Debug`
   --> $DIR/impl-trait-with-missing-bounds.rs:30:13
@@ -71,8 +74,9 @@ LL | fn qux(_: impl std::fmt::Debug) {}
    |                ^^^^^^^^^^^^^^^ required by this bound in `qux`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | fn bat<I, T: std::fmt::Debug, U: Iterator>(t: T, constraints: U, _: I) where <U as Iterator>::Item: Debug {
-   |                             +++++++++++++                     ~        ++++++++++++++++++++++++++++++++++
+LL - fn bat<I, T: std::fmt::Debug>(t: T, constraints: impl Iterator, _: I) {
+LL + fn bat<I, T: std::fmt::Debug, U: Iterator>(t: T, constraints: U, _: I) where <U as Iterator>::Item: Debug {
+   |
 
 error[E0277]: `<impl Iterator + std::fmt::Debug as Iterator>::Item` doesn't implement `Debug`
   --> $DIR/impl-trait-with-missing-bounds.rs:37:13
@@ -90,8 +94,9 @@ LL | fn qux(_: impl std::fmt::Debug) {}
    |                ^^^^^^^^^^^^^^^ required by this bound in `qux`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | fn bak<I: Iterator + std::fmt::Debug>(constraints: I) where <I as Iterator>::Item: Debug {
-   |       +++++++++++++++++++++++++++++++              ~  ++++++++++++++++++++++++++++++++++
+LL - fn bak(constraints: impl  Iterator + std::fmt::Debug) {
+LL + fn bak<I: Iterator + std::fmt::Debug>(constraints: I) where <I as Iterator>::Item: Debug {
+   |
 
 error[E0277]: `<impl Iterator as Iterator>::Item` doesn't implement `Debug`
   --> $DIR/impl-trait-with-missing-bounds.rs:45:13
@@ -109,8 +114,9 @@ LL | fn qux(_: impl std::fmt::Debug) {}
    |                ^^^^^^^^^^^^^^^ required by this bound in `qux`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | fn baw<I: Iterator>(constraints: I) where <I as Iterator>::Item: Debug {
-   |       ~~~~~~~~~~~~~              ~  ++++++++++++++++++++++++++++++++++
+LL - fn baw<>(constraints: impl Iterator) {
+LL + fn baw<I: Iterator>(constraints: I) where <I as Iterator>::Item: Debug {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/suggestions/incorrect-variant-literal.svg b/tests/ui/suggestions/incorrect-variant-literal.svg
index 980a7b29a00..0f2ade633c5 100644
--- a/tests/ui/suggestions/incorrect-variant-literal.svg
+++ b/tests/ui/suggestions/incorrect-variant-literal.svg
@@ -1,4 +1,4 @@
-<svg width="886px" height="9038px" xmlns="http://www.w3.org/2000/svg">
+<svg width="886px" height="9542px" xmlns="http://www.w3.org/2000/svg">
   <style>
     .fg { fill: #AAAAAA }
     .bg { background: #000000 }
@@ -103,567 +103,567 @@
 </tspan>
     <tspan x="10px" y="748px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="766px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="766px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-009">()</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="784px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="784px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="802px">
+    <tspan x="10px" y="802px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="820px"><tspan class="fg-ansi256-009 bold">error[E0533]</tspan><tspan class="bold">: expected value, found struct variant `Enum::Struct`</tspan>
+    <tspan x="10px" y="820px">
 </tspan>
-    <tspan x="10px" y="838px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:16:5</tspan>
+    <tspan x="10px" y="838px"><tspan class="fg-ansi256-009 bold">error[E0533]</tspan><tspan class="bold">: expected value, found struct variant `Enum::Struct`</tspan>
 </tspan>
-    <tspan x="10px" y="856px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="856px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:16:5</tspan>
 </tspan>
-    <tspan x="10px" y="874px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct();</tspan>
+    <tspan x="10px" y="874px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="892px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">not a value</tspan>
+    <tspan x="10px" y="892px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct();</tspan>
 </tspan>
-    <tspan x="10px" y="910px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="910px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">not a value</tspan>
 </tspan>
-    <tspan x="10px" y="928px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: you might have meant to create a new value of the struct</tspan>
+    <tspan x="10px" y="928px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="946px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="946px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: you might have meant to create a new value of the struct</tspan>
 </tspan>
-    <tspan x="10px" y="964px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-010"> { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="964px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="982px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="982px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-009">()</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="1000px">
+    <tspan x="10px" y="1000px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-010"> { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="1018px"><tspan class="fg-ansi256-009 bold">error[E0063]</tspan><tspan class="bold">: missing field `0` in initializer of `Enum`</tspan>
+    <tspan x="10px" y="1018px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1036px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:18:5</tspan>
+    <tspan x="10px" y="1036px">
 </tspan>
-    <tspan x="10px" y="1054px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1054px"><tspan class="fg-ansi256-009 bold">error[E0063]</tspan><tspan class="bold">: missing field `0` in initializer of `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="1072px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple {};</tspan>
+    <tspan x="10px" y="1072px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:18:5</tspan>
 </tspan>
-    <tspan x="10px" y="1090px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">missing `0`</tspan>
+    <tspan x="10px" y="1090px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1108px">
+    <tspan x="10px" y="1108px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple {};</tspan>
 </tspan>
-    <tspan x="10px" y="1126px"><tspan class="fg-ansi256-009 bold">error[E0063]</tspan><tspan class="bold">: missing field `x` in initializer of `Enum`</tspan>
+    <tspan x="10px" y="1126px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">missing `0`</tspan>
 </tspan>
-    <tspan x="10px" y="1144px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:19:5</tspan>
+    <tspan x="10px" y="1144px">
 </tspan>
-    <tspan x="10px" y="1162px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1162px"><tspan class="fg-ansi256-009 bold">error[E0063]</tspan><tspan class="bold">: missing field `x` in initializer of `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="1180px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct {};</tspan>
+    <tspan x="10px" y="1180px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:19:5</tspan>
 </tspan>
-    <tspan x="10px" y="1198px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">missing `x`</tspan>
+    <tspan x="10px" y="1198px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1216px">
+    <tspan x="10px" y="1216px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct {};</tspan>
 </tspan>
-    <tspan x="10px" y="1234px"><tspan class="fg-ansi256-009 bold">error[E0618]</tspan><tspan class="bold">: expected function, found `Enum`</tspan>
+    <tspan x="10px" y="1234px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">missing `x`</tspan>
 </tspan>
-    <tspan x="10px" y="1252px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:20:5</tspan>
+    <tspan x="10px" y="1252px">
 </tspan>
-    <tspan x="10px" y="1270px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1270px"><tspan class="fg-ansi256-009 bold">error[E0618]</tspan><tspan class="bold">: expected function, found `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="1288px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Unit,</tspan>
+    <tspan x="10px" y="1288px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:20:5</tspan>
 </tspan>
-    <tspan x="10px" y="1306px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Unit` defined here</tspan>
+    <tspan x="10px" y="1306px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1324px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="1324px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Unit,</tspan>
 </tspan>
-    <tspan x="10px" y="1342px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit(0);</tspan>
+    <tspan x="10px" y="1342px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Unit` defined here</tspan>
 </tspan>
-    <tspan x="10px" y="1360px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^</tspan><tspan class="fg-ansi256-012 bold">---</tspan>
+    <tspan x="10px" y="1360px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="1378px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1378px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit(0);</tspan>
 </tspan>
-    <tspan x="10px" y="1396px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">call expression requires function</tspan>
+    <tspan x="10px" y="1396px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^</tspan><tspan class="fg-ansi256-012 bold">---</tspan>
 </tspan>
-    <tspan x="10px" y="1414px">
+    <tspan x="10px" y="1414px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1432px"><tspan class="fg-ansi256-009 bold">error[E0533]</tspan><tspan class="bold">: expected value, found struct variant `Enum::Struct`</tspan>
+    <tspan x="10px" y="1432px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">call expression requires function</tspan>
 </tspan>
-    <tspan x="10px" y="1450px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:22:5</tspan>
+    <tspan x="10px" y="1450px">
 </tspan>
-    <tspan x="10px" y="1468px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1468px"><tspan class="fg-ansi256-009 bold">error[E0533]</tspan><tspan class="bold">: expected value, found struct variant `Enum::Struct`</tspan>
 </tspan>
-    <tspan x="10px" y="1486px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct(0);</tspan>
+    <tspan x="10px" y="1486px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:22:5</tspan>
 </tspan>
-    <tspan x="10px" y="1504px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">not a value</tspan>
+    <tspan x="10px" y="1504px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1522px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1522px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct(0);</tspan>
 </tspan>
-    <tspan x="10px" y="1540px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: you might have meant to create a new value of the struct</tspan>
+    <tspan x="10px" y="1540px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">not a value</tspan>
 </tspan>
     <tspan x="10px" y="1558px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1576px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-010"> { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="1576px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: you might have meant to create a new value of the struct</tspan>
 </tspan>
-    <tspan x="10px" y="1594px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="1594px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1612px">
+    <tspan x="10px" y="1612px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-009">(0)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="1630px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Unit` has no field named `x`</tspan>
+    <tspan x="10px" y="1630px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-010"> { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="1648px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:23:18</tspan>
+    <tspan x="10px" y="1648px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1666px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1666px">
 </tspan>
-    <tspan x="10px" y="1684px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit { x: 0 };</tspan>
+    <tspan x="10px" y="1684px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Unit` has no field named `x`</tspan>
 </tspan>
-    <tspan x="10px" y="1702px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Unit` does not have this field</tspan>
+    <tspan x="10px" y="1702px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:23:18</tspan>
 </tspan>
     <tspan x="10px" y="1720px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1738px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
+    <tspan x="10px" y="1738px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit { x: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="1756px">
+    <tspan x="10px" y="1756px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Unit` does not have this field</tspan>
 </tspan>
-    <tspan x="10px" y="1774px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Tuple` has no field named `x`</tspan>
+    <tspan x="10px" y="1774px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1792px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:24:19</tspan>
+    <tspan x="10px" y="1792px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
 </tspan>
-    <tspan x="10px" y="1810px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1810px">
 </tspan>
-    <tspan x="10px" y="1828px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
+    <tspan x="10px" y="1828px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Tuple` has no field named `x`</tspan>
 </tspan>
-    <tspan x="10px" y="1846px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">-----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Tuple` defined here</tspan>
+    <tspan x="10px" y="1846px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:24:19</tspan>
 </tspan>
-    <tspan x="10px" y="1864px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="1864px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1882px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple { x: 0 };</tspan>
+    <tspan x="10px" y="1882px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
 </tspan>
-    <tspan x="10px" y="1900px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                   </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">field does not exist</tspan>
+    <tspan x="10px" y="1900px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">-----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Tuple` defined here</tspan>
 </tspan>
-    <tspan x="10px" y="1918px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1918px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="1936px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: `Enum::Tuple` is a tuple variant, use the appropriate syntax</tspan>
+    <tspan x="10px" y="1936px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple { x: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="1954px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="1954px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                   </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">field does not exist</tspan>
 </tspan>
-    <tspan x="10px" y="1972px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="1972px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="1990px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="1990px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: `Enum::Tuple` is a tuple variant, use the appropriate syntax</tspan>
 </tspan>
-    <tspan x="10px" y="2008px">
+    <tspan x="10px" y="2008px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2026px"><tspan class="fg-ansi256-009 bold">error[E0618]</tspan><tspan class="bold">: expected function, found `Enum`</tspan>
+    <tspan x="10px" y="2026px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-009"> { x: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="2044px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:26:5</tspan>
+    <tspan x="10px" y="2044px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
     <tspan x="10px" y="2062px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2080px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Unit,</tspan>
+    <tspan x="10px" y="2080px">
 </tspan>
-    <tspan x="10px" y="2098px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Unit` defined here</tspan>
+    <tspan x="10px" y="2098px"><tspan class="fg-ansi256-009 bold">error[E0618]</tspan><tspan class="bold">: expected function, found `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="2116px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="2116px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:26:5</tspan>
 </tspan>
-    <tspan x="10px" y="2134px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit(0, 0);</tspan>
+    <tspan x="10px" y="2134px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2152px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^</tspan><tspan class="fg-ansi256-012 bold">------</tspan>
+    <tspan x="10px" y="2152px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Unit,</tspan>
 </tspan>
-    <tspan x="10px" y="2170px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2170px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Unit` defined here</tspan>
 </tspan>
-    <tspan x="10px" y="2188px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">call expression requires function</tspan>
+    <tspan x="10px" y="2188px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="2206px">
+    <tspan x="10px" y="2206px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit(0, 0);</tspan>
 </tspan>
-    <tspan x="10px" y="2224px"><tspan class="fg-ansi256-009 bold">error[E0061]</tspan><tspan class="bold">: this enum variant takes 1 argument but 2 arguments were supplied</tspan>
+    <tspan x="10px" y="2224px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^</tspan><tspan class="fg-ansi256-012 bold">------</tspan>
 </tspan>
-    <tspan x="10px" y="2242px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:27:5</tspan>
+    <tspan x="10px" y="2242px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2260px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2260px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">call expression requires function</tspan>
 </tspan>
-    <tspan x="10px" y="2278px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple(0, 0);</tspan>
+    <tspan x="10px" y="2278px">
 </tspan>
-    <tspan x="10px" y="2296px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^</tspan><tspan>    </tspan><tspan class="fg-ansi256-012 bold">-</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">unexpected argument #2 of type `{integer}`</tspan>
+    <tspan x="10px" y="2296px"><tspan class="fg-ansi256-009 bold">error[E0061]</tspan><tspan class="bold">: this enum variant takes 1 argument but 2 arguments were supplied</tspan>
 </tspan>
-    <tspan x="10px" y="2314px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2314px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:27:5</tspan>
 </tspan>
-    <tspan x="10px" y="2332px"><tspan class="fg-ansi256-010 bold">note</tspan><tspan>: tuple variant defined here</tspan>
+    <tspan x="10px" y="2332px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2350px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:6:5</tspan>
+    <tspan x="10px" y="2350px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple(0, 0);</tspan>
 </tspan>
-    <tspan x="10px" y="2368px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2368px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^</tspan><tspan>    </tspan><tspan class="fg-ansi256-012 bold">-</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">unexpected argument #2 of type `{integer}`</tspan>
 </tspan>
-    <tspan x="10px" y="2386px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
+    <tspan x="10px" y="2386px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2404px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-010 bold">^^^^^</tspan>
+    <tspan x="10px" y="2404px"><tspan class="fg-ansi256-010 bold">note</tspan><tspan>: tuple variant defined here</tspan>
 </tspan>
-    <tspan x="10px" y="2422px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: remove the extra argument</tspan>
+    <tspan x="10px" y="2422px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:6:5</tspan>
 </tspan>
     <tspan x="10px" y="2440px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2458px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Tuple(0</tspan><tspan class="fg-ansi256-009">, 0</tspan><tspan>);</tspan>
+    <tspan x="10px" y="2458px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
 </tspan>
-    <tspan x="10px" y="2476px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Tuple(0);</tspan>
+    <tspan x="10px" y="2476px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-010 bold">^^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="2494px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2494px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: remove the extra argument</tspan>
 </tspan>
-    <tspan x="10px" y="2512px">
+    <tspan x="10px" y="2512px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2530px"><tspan class="fg-ansi256-009 bold">error[E0533]</tspan><tspan class="bold">: expected value, found struct variant `Enum::Struct`</tspan>
+    <tspan x="10px" y="2530px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Tuple(0</tspan><tspan class="fg-ansi256-009">, 0</tspan><tspan>);</tspan>
 </tspan>
-    <tspan x="10px" y="2548px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:28:5</tspan>
+    <tspan x="10px" y="2548px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Tuple(0);</tspan>
 </tspan>
     <tspan x="10px" y="2566px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2584px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct(0, 0);</tspan>
+    <tspan x="10px" y="2584px">
 </tspan>
-    <tspan x="10px" y="2602px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">not a value</tspan>
+    <tspan x="10px" y="2602px"><tspan class="fg-ansi256-009 bold">error[E0533]</tspan><tspan class="bold">: expected value, found struct variant `Enum::Struct`</tspan>
 </tspan>
-    <tspan x="10px" y="2620px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2620px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:28:5</tspan>
 </tspan>
-    <tspan x="10px" y="2638px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: you might have meant to create a new value of the struct</tspan>
+    <tspan x="10px" y="2638px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2656px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2656px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct(0, 0);</tspan>
 </tspan>
-    <tspan x="10px" y="2674px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-010"> { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="2674px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">not a value</tspan>
 </tspan>
-    <tspan x="10px" y="2692px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="2692px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2710px">
+    <tspan x="10px" y="2710px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: you might have meant to create a new value of the struct</tspan>
 </tspan>
-    <tspan x="10px" y="2728px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Unit` has no field named `x`</tspan>
+    <tspan x="10px" y="2728px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2746px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:29:18</tspan>
+    <tspan x="10px" y="2746px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-009">(0, 0)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="2764px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2764px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Struct</tspan><tspan class="fg-ansi256-010"> { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="2782px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="2782px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2800px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Unit` does not have this field</tspan>
+    <tspan x="10px" y="2800px">
 </tspan>
-    <tspan x="10px" y="2818px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2818px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Unit` has no field named `x`</tspan>
 </tspan>
-    <tspan x="10px" y="2836px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
+    <tspan x="10px" y="2836px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:29:18</tspan>
 </tspan>
-    <tspan x="10px" y="2854px">
+    <tspan x="10px" y="2854px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2872px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Unit` has no field named `y`</tspan>
+    <tspan x="10px" y="2872px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit { x: 0, y: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="2890px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:29:24</tspan>
+    <tspan x="10px" y="2890px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                  </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Unit` does not have this field</tspan>
 </tspan>
     <tspan x="10px" y="2908px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="2926px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="2926px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
 </tspan>
-    <tspan x="10px" y="2944px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                        </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Unit` does not have this field</tspan>
+    <tspan x="10px" y="2944px">
 </tspan>
-    <tspan x="10px" y="2962px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="2962px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Unit` has no field named `y`</tspan>
 </tspan>
-    <tspan x="10px" y="2980px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
+    <tspan x="10px" y="2980px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:29:24</tspan>
 </tspan>
-    <tspan x="10px" y="2998px">
+    <tspan x="10px" y="2998px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3016px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Tuple` has no field named `x`</tspan>
+    <tspan x="10px" y="3016px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Unit { x: 0, y: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="3034px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:31:19</tspan>
+    <tspan x="10px" y="3034px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                        </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Unit` does not have this field</tspan>
 </tspan>
     <tspan x="10px" y="3052px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3070px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
+    <tspan x="10px" y="3070px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
 </tspan>
-    <tspan x="10px" y="3088px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">-----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Tuple` defined here</tspan>
+    <tspan x="10px" y="3088px">
 </tspan>
-    <tspan x="10px" y="3106px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="3106px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Tuple` has no field named `x`</tspan>
 </tspan>
-    <tspan x="10px" y="3124px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="3124px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:31:19</tspan>
 </tspan>
-    <tspan x="10px" y="3142px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                   </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">field does not exist</tspan>
+    <tspan x="10px" y="3142px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3160px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3160px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
 </tspan>
-    <tspan x="10px" y="3178px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: `Enum::Tuple` is a tuple variant, use the appropriate syntax</tspan>
+    <tspan x="10px" y="3178px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">-----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Tuple` defined here</tspan>
 </tspan>
-    <tspan x="10px" y="3196px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3196px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="3214px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="3214px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple { x: 0, y: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="3232px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="3232px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                   </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">field does not exist</tspan>
 </tspan>
-    <tspan x="10px" y="3250px">
+    <tspan x="10px" y="3250px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3268px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Tuple` has no field named `y`</tspan>
+    <tspan x="10px" y="3268px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: `Enum::Tuple` is a tuple variant, use the appropriate syntax</tspan>
 </tspan>
-    <tspan x="10px" y="3286px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:31:25</tspan>
+    <tspan x="10px" y="3286px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3304px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3304px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-009"> { x: 0, y: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="3322px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
+    <tspan x="10px" y="3322px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="3340px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">-----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Tuple` defined here</tspan>
+    <tspan x="10px" y="3340px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3358px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="3358px">
 </tspan>
-    <tspan x="10px" y="3376px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="3376px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Tuple` has no field named `y`</tspan>
 </tspan>
-    <tspan x="10px" y="3394px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                         </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">field does not exist</tspan>
+    <tspan x="10px" y="3394px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:31:25</tspan>
 </tspan>
     <tspan x="10px" y="3412px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3430px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: `Enum::Tuple` is a tuple variant, use the appropriate syntax</tspan>
+    <tspan x="10px" y="3430px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Tuple(i32),</tspan>
 </tspan>
-    <tspan x="10px" y="3448px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3448px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     </tspan><tspan class="fg-ansi256-012 bold">-----</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">`Enum::Tuple` defined here</tspan>
 </tspan>
-    <tspan x="10px" y="3466px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="3466px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="3484px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="3484px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Tuple { x: 0, y: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="3502px">
+    <tspan x="10px" y="3502px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                         </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">field does not exist</tspan>
 </tspan>
-    <tspan x="10px" y="3520px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Struct` has no field named `y`</tspan>
+    <tspan x="10px" y="3520px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3538px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:33:26</tspan>
+    <tspan x="10px" y="3538px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: `Enum::Tuple` is a tuple variant, use the appropriate syntax</tspan>
 </tspan>
     <tspan x="10px" y="3556px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3574px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="3574px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-009"> { x: 0, y: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="3592px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                          </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Struct` does not have this field</tspan>
+    <tspan x="10px" y="3592px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::Tuple</tspan><tspan class="fg-ansi256-010">(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
     <tspan x="10px" y="3610px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3628px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
+    <tspan x="10px" y="3628px">
 </tspan>
-    <tspan x="10px" y="3646px">
+    <tspan x="10px" y="3646px"><tspan class="fg-ansi256-009 bold">error[E0559]</tspan><tspan class="bold">: variant `Enum::Struct` has no field named `y`</tspan>
 </tspan>
-    <tspan x="10px" y="3664px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="3664px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:33:26</tspan>
 </tspan>
-    <tspan x="10px" y="3682px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:34:11</tspan>
+    <tspan x="10px" y="3682px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3700px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3700px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::Struct { x: 0, y: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="3718px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="3718px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>                          </tspan><tspan class="fg-ansi256-009 bold">^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">`Enum::Struct` does not have this field</tspan>
 </tspan>
-    <tspan x="10px" y="3736px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
+    <tspan x="10px" y="3736px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3754px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="3754px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">= </tspan><tspan class="bold">note</tspan><tspan>: all struct fields are already assigned</tspan>
 </tspan>
-    <tspan x="10px" y="3772px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit;</tspan>
+    <tspan x="10px" y="3772px">
 </tspan>
-    <tspan x="10px" y="3790px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="3790px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="3808px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3808px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:34:11</tspan>
 </tspan>
-    <tspan x="10px" y="3826px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name (notice the capitalization difference)</tspan>
+    <tspan x="10px" y="3826px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3844px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3844px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="3862px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="3862px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="3880px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="3880px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="3898px">
+    <tspan x="10px" y="3898px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit;</tspan>
 </tspan>
-    <tspan x="10px" y="3916px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="3916px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="3934px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:35:11</tspan>
+    <tspan x="10px" y="3934px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3952px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="3952px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name (notice the capitalization difference)</tspan>
 </tspan>
-    <tspan x="10px" y="3970px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="3970px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="3988px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
+    <tspan x="10px" y="3988px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4006px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="4006px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4024px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple;</tspan>
+    <tspan x="10px" y="4024px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4042px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="4042px">
 </tspan>
-    <tspan x="10px" y="4060px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4060px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="4078px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="4078px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:35:11</tspan>
 </tspan>
     <tspan x="10px" y="4096px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4114px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="4114px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="4132px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="4132px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="4150px">
+    <tspan x="10px" y="4150px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="4168px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="4168px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple;</tspan>
 </tspan>
-    <tspan x="10px" y="4186px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:36:11</tspan>
+    <tspan x="10px" y="4186px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
     <tspan x="10px" y="4204px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4222px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="4222px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="4240px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
+    <tspan x="10px" y="4240px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4258px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="4258px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4276px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct;</tspan>
+    <tspan x="10px" y="4276px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4294px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="4294px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4312px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4312px">
 </tspan>
-    <tspan x="10px" y="4330px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="4330px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="4348px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4348px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:36:11</tspan>
 </tspan>
-    <tspan x="10px" y="4366px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="4366px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4384px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="4384px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="4402px">
+    <tspan x="10px" y="4402px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="4420px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="4420px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="4438px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:37:11</tspan>
+    <tspan x="10px" y="4438px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct;</tspan>
 </tspan>
-    <tspan x="10px" y="4456px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4456px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="4474px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="4474px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4492px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
+    <tspan x="10px" y="4492px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="4510px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="4510px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4528px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit();</tspan>
+    <tspan x="10px" y="4528px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4546px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="4546px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
     <tspan x="10px" y="4564px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4582px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="4582px">
 </tspan>
-    <tspan x="10px" y="4600px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4600px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="4618px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="4618px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:37:11</tspan>
 </tspan>
-    <tspan x="10px" y="4636px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="4636px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4654px">
+    <tspan x="10px" y="4654px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="4672px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="4672px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="4690px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:38:11</tspan>
+    <tspan x="10px" y="4690px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="4708px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4708px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit();</tspan>
 </tspan>
-    <tspan x="10px" y="4726px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="4726px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="4744px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
+    <tspan x="10px" y="4744px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4762px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="4762px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="4780px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple();</tspan>
+    <tspan x="10px" y="4780px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4798px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="4798px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit()</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4816px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4816px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="4834px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="4834px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4852px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4852px">
 </tspan>
-    <tspan x="10px" y="4870px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="4870px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="4888px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="4888px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:38:11</tspan>
 </tspan>
-    <tspan x="10px" y="4906px">
+    <tspan x="10px" y="4906px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="4924px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="4924px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="4942px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:39:11</tspan>
+    <tspan x="10px" y="4942px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="4960px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="4960px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="4978px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="4978px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple();</tspan>
 </tspan>
-    <tspan x="10px" y="4996px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
+    <tspan x="10px" y="4996px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="5014px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="5014px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5032px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct();</tspan>
+    <tspan x="10px" y="5032px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="5050px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="5050px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5068px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5068px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple()</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5086px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="5086px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
     <tspan x="10px" y="5104px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5122px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="5122px">
 </tspan>
-    <tspan x="10px" y="5140px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="5140px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="5158px">
+    <tspan x="10px" y="5158px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:39:11</tspan>
 </tspan>
-    <tspan x="10px" y="5176px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `unit` found for enum `Enum`</tspan>
+    <tspan x="10px" y="5176px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5194px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:40:11</tspan>
+    <tspan x="10px" y="5194px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="5212px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5212px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="5230px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="5230px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="5248px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `unit` not found here</tspan>
+    <tspan x="10px" y="5248px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct();</tspan>
 </tspan>
-    <tspan x="10px" y="5266px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="5266px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="5284px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit {};</tspan>
+    <tspan x="10px" y="5284px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5302px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan>
+    <tspan x="10px" y="5302px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
     <tspan x="10px" y="5320px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5338px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="5338px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct()</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5356px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5356px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5374px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="5374px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5392px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="5392px">
 </tspan>
-    <tspan x="10px" y="5410px">
+    <tspan x="10px" y="5410px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `unit` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="5428px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `tuple` found for enum `Enum`</tspan>
+    <tspan x="10px" y="5428px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:40:11</tspan>
 </tspan>
-    <tspan x="10px" y="5446px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:41:11</tspan>
+    <tspan x="10px" y="5446px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5464px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5464px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="5482px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="5482px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `unit` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="5500px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `tuple` not found here</tspan>
+    <tspan x="10px" y="5500px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="5518px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="5518px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit {};</tspan>
 </tspan>
-    <tspan x="10px" y="5536px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple {};</tspan>
+    <tspan x="10px" y="5536px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="5554px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan>
+    <tspan x="10px" y="5554px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5572px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5572px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="5590px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="5590px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5608px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5608px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit {}</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5626px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="5626px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5644px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="5644px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
     <tspan x="10px" y="5662px">
 </tspan>
-    <tspan x="10px" y="5680px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `r#struct` found for enum `Enum`</tspan>
+    <tspan x="10px" y="5680px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `tuple` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="5698px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:42:11</tspan>
+    <tspan x="10px" y="5698px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:41:11</tspan>
 </tspan>
     <tspan x="10px" y="5716px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
     <tspan x="10px" y="5734px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="5752px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `r#struct` not found here</tspan>
+    <tspan x="10px" y="5752px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `tuple` not found here</tspan>
 </tspan>
     <tspan x="10px" y="5770px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="5788px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct {};</tspan>
+    <tspan x="10px" y="5788px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple {};</tspan>
 </tspan>
-    <tspan x="10px" y="5806px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan>
+    <tspan x="10px" y="5806px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan>
 </tspan>
     <tspan x="10px" y="5824px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
@@ -671,357 +671,413 @@
 </tspan>
     <tspan x="10px" y="5860px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5878px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="5878px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple {}</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5896px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="5896px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="5914px">
+    <tspan x="10px" y="5914px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="5932px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="5932px">
 </tspan>
-    <tspan x="10px" y="5950px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:43:11</tspan>
+    <tspan x="10px" y="5950px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `r#struct` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="5968px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="5968px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:42:11</tspan>
 </tspan>
-    <tspan x="10px" y="5986px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="5986px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6004px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
+    <tspan x="10px" y="6004px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="6022px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="6022px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `r#struct` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="6040px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit(0);</tspan>
+    <tspan x="10px" y="6040px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="6058px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="6058px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct {};</tspan>
 </tspan>
-    <tspan x="10px" y="6076px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6076px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="6094px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="6094px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6112px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6112px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="6130px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="6130px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6148px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="6148px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct {}</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="6166px">
+    <tspan x="10px" y="6166px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="6184px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="6184px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6202px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:44:11</tspan>
+    <tspan x="10px" y="6202px">
 </tspan>
-    <tspan x="10px" y="6220px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6220px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="6238px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="6238px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:43:11</tspan>
 </tspan>
-    <tspan x="10px" y="6256px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
+    <tspan x="10px" y="6256px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6274px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="6274px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="6292px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple(0);</tspan>
+    <tspan x="10px" y="6292px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="6310px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="6310px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="6328px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6328px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit(0);</tspan>
 </tspan>
-    <tspan x="10px" y="6346px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="6346px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
     <tspan x="10px" y="6364px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6382px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple</tspan><tspan>(0);</tspan>
+    <tspan x="10px" y="6382px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="6400px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~</tspan>
+    <tspan x="10px" y="6400px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6418px">
+    <tspan x="10px" y="6418px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit(0)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="6436px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="6436px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="6454px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:45:11</tspan>
+    <tspan x="10px" y="6454px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6472px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6472px">
 </tspan>
-    <tspan x="10px" y="6490px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="6490px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="6508px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
+    <tspan x="10px" y="6508px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:44:11</tspan>
 </tspan>
-    <tspan x="10px" y="6526px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="6526px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6544px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct(0);</tspan>
+    <tspan x="10px" y="6544px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="6562px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="6562px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="6580px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6580px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="6598px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="6598px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple(0);</tspan>
 </tspan>
-    <tspan x="10px" y="6616px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6616px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="6634px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="6634px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6652px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="6652px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="6670px">
+    <tspan x="10px" y="6670px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6688px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `unit` found for enum `Enum`</tspan>
+    <tspan x="10px" y="6688px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple</tspan><tspan>(0);</tspan>
 </tspan>
-    <tspan x="10px" y="6706px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:46:11</tspan>
+    <tspan x="10px" y="6706px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple</tspan><tspan>(0);</tspan>
 </tspan>
     <tspan x="10px" y="6724px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6742px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="6742px">
 </tspan>
-    <tspan x="10px" y="6760px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `unit` not found here</tspan>
+    <tspan x="10px" y="6760px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="6778px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="6778px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:45:11</tspan>
 </tspan>
-    <tspan x="10px" y="6796px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit { x: 0 };</tspan>
+    <tspan x="10px" y="6796px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6814px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan>
+    <tspan x="10px" y="6814px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="6832px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6832px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="6850px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="6850px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="6868px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6868px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct(0);</tspan>
 </tspan>
-    <tspan x="10px" y="6886px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="6886px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="6904px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="6904px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6922px">
+    <tspan x="10px" y="6922px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="6940px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `tuple` found for enum `Enum`</tspan>
+    <tspan x="10px" y="6940px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="6958px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:47:11</tspan>
+    <tspan x="10px" y="6958px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct(0)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="6976px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="6976px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="6994px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="6994px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7012px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `tuple` not found here</tspan>
+    <tspan x="10px" y="7012px">
 </tspan>
-    <tspan x="10px" y="7030px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="7030px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `unit` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="7048px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple { x: 0 };</tspan>
+    <tspan x="10px" y="7048px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:46:11</tspan>
 </tspan>
-    <tspan x="10px" y="7066px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan>
+    <tspan x="10px" y="7066px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7084px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7084px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="7102px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="7102px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `unit` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="7120px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7120px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="7138px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="7138px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit { x: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="7156px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="7156px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="7174px">
+    <tspan x="10px" y="7174px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7192px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `r#struct` found for enum `Enum`</tspan>
+    <tspan x="10px" y="7192px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="7210px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:48:11</tspan>
+    <tspan x="10px" y="7210px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7228px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7228px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit { x: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="7246px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="7246px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="7264px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `r#struct` not found here</tspan>
+    <tspan x="10px" y="7264px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7282px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="7282px">
 </tspan>
-    <tspan x="10px" y="7300px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct { x: 0 };</tspan>
+    <tspan x="10px" y="7300px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `tuple` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="7318px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan>
+    <tspan x="10px" y="7318px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:47:11</tspan>
 </tspan>
     <tspan x="10px" y="7336px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7354px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="7354px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="7372px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7372px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `tuple` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="7390px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="7390px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="7408px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="7408px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple { x: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="7426px">
+    <tspan x="10px" y="7426px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="7444px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="7444px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7462px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:49:11</tspan>
+    <tspan x="10px" y="7462px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
     <tspan x="10px" y="7480px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7498px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="7498px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple { x: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="7516px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
+    <tspan x="10px" y="7516px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="7534px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="7534px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7552px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit(0, 0);</tspan>
+    <tspan x="10px" y="7552px">
 </tspan>
-    <tspan x="10px" y="7570px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="7570px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `r#struct` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="7588px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7588px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:48:11</tspan>
 </tspan>
-    <tspan x="10px" y="7606px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="7606px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7624px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7624px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="7642px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="7642px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `r#struct` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="7660px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="7660px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="7678px">
+    <tspan x="10px" y="7678px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct { x: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="7696px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="7696px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="7714px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:50:11</tspan>
+    <tspan x="10px" y="7714px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7732px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7732px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="7750px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="7750px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7768px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
+    <tspan x="10px" y="7768px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct { x: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="7786px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="7786px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="7804px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple(0, 0);</tspan>
+    <tspan x="10px" y="7804px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7822px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="7822px">
 </tspan>
-    <tspan x="10px" y="7840px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="7840px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `unit` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="7858px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="7858px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:49:11</tspan>
 </tspan>
     <tspan x="10px" y="7876px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="7894px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple</tspan><tspan>(</tspan><tspan class="fg-ansi256-010">/* i32 */</tspan><tspan>);</tspan>
+    <tspan x="10px" y="7894px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="7912px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~</tspan><tspan> </tspan><tspan class="fg-ansi256-010">~~~~~~~~~</tspan>
+    <tspan x="10px" y="7912px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `unit` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="7930px">
+    <tspan x="10px" y="7930px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="7948px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
+    <tspan x="10px" y="7948px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit(0, 0);</tspan>
 </tspan>
-    <tspan x="10px" y="7966px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:51:11</tspan>
+    <tspan x="10px" y="7966px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
     <tspan x="10px" y="7984px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8002px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="8002px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="8020px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
+    <tspan x="10px" y="8020px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8038px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="8038px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit(0, 0)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="8056px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct(0, 0);</tspan>
+    <tspan x="10px" y="8056px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="8074px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
+    <tspan x="10px" y="8074px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8092px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8092px">
 </tspan>
-    <tspan x="10px" y="8110px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="8110px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `tuple` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="8128px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8128px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:50:11</tspan>
 </tspan>
-    <tspan x="10px" y="8146px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="8146px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8164px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="8164px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="8182px">
+    <tspan x="10px" y="8182px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `tuple` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="8200px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `unit` found for enum `Enum`</tspan>
+    <tspan x="10px" y="8200px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="8218px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:52:11</tspan>
+    <tspan x="10px" y="8218px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple(0, 0);</tspan>
 </tspan>
-    <tspan x="10px" y="8236px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8236px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="8254px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="8254px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8272px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `unit` not found here</tspan>
+    <tspan x="10px" y="8272px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="8290px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="8290px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8308px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="8308px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple</tspan><tspan>(</tspan><tspan class="fg-ansi256-009">0, 0</tspan><tspan>);</tspan>
 </tspan>
-    <tspan x="10px" y="8326px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan>
+    <tspan x="10px" y="8326px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple</tspan><tspan>(</tspan><tspan class="fg-ansi256-010">/* i32 */</tspan><tspan>);</tspan>
 </tspan>
     <tspan x="10px" y="8344px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8362px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="8362px">
 </tspan>
-    <tspan x="10px" y="8380px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8380px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant or associated item named `r#struct` found for enum `Enum` in the current scope</tspan>
 </tspan>
-    <tspan x="10px" y="8398px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
+    <tspan x="10px" y="8398px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:51:11</tspan>
 </tspan>
-    <tspan x="10px" y="8416px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~</tspan>
+    <tspan x="10px" y="8416px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8434px">
+    <tspan x="10px" y="8434px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="8452px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `tuple` found for enum `Enum`</tspan>
+    <tspan x="10px" y="8452px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant or associated item `r#struct` not found for this enum</tspan>
 </tspan>
-    <tspan x="10px" y="8470px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:53:11</tspan>
+    <tspan x="10px" y="8470px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="8488px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8488px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct(0, 0);</tspan>
 </tspan>
-    <tspan x="10px" y="8506px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="8506px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan><tspan> </tspan><tspan class="fg-ansi256-009 bold">variant or associated item not found in `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="8524px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `tuple` not found here</tspan>
+    <tspan x="10px" y="8524px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8542px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="8542px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="8560px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="8560px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8578px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan>
+    <tspan x="10px" y="8578px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct(0, 0)</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="8596px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8596px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="8614px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="8614px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8632px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8632px">
 </tspan>
-    <tspan x="10px" y="8650px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
+    <tspan x="10px" y="8650px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `unit` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="8668px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="8668px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:52:11</tspan>
 </tspan>
-    <tspan x="10px" y="8686px">
+    <tspan x="10px" y="8686px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8704px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `r#struct` found for enum `Enum`</tspan>
+    <tspan x="10px" y="8704px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="8722px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:54:11</tspan>
+    <tspan x="10px" y="8722px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `unit` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="8740px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8740px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="8758px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+    <tspan x="10px" y="8758px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::unit { x: 0, y: 0 };</tspan>
 </tspan>
-    <tspan x="10px" y="8776px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `r#struct` not found here</tspan>
+    <tspan x="10px" y="8776px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^</tspan>
 </tspan>
-    <tspan x="10px" y="8794px"><tspan class="fg-ansi256-012 bold">...</tspan>
+    <tspan x="10px" y="8794px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8812px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct { x: 0, y: 0 };</tspan>
+    <tspan x="10px" y="8812px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
 </tspan>
-    <tspan x="10px" y="8830px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan>
+    <tspan x="10px" y="8830px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8848px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+    <tspan x="10px" y="8848px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">unit { x: 0, y: 0 }</tspan><tspan>;</tspan>
 </tspan>
-    <tspan x="10px" y="8866px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+    <tspan x="10px" y="8866px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Unit</tspan><tspan>;</tspan>
 </tspan>
     <tspan x="10px" y="8884px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8902px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">| </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+    <tspan x="10px" y="8902px">
 </tspan>
-    <tspan x="10px" y="8920px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-010">~~~~~~~~~~~~~~~~~~~~~~~~~</tspan>
+    <tspan x="10px" y="8920px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `tuple` found for enum `Enum`</tspan>
 </tspan>
-    <tspan x="10px" y="8938px">
+    <tspan x="10px" y="8938px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:53:11</tspan>
 </tspan>
-    <tspan x="10px" y="8956px"><tspan class="fg-ansi256-009 bold">error</tspan><tspan class="bold">: aborting due to 39 previous errors</tspan>
+    <tspan x="10px" y="8956px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
 </tspan>
-    <tspan x="10px" y="8974px">
+    <tspan x="10px" y="8974px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
 </tspan>
-    <tspan x="10px" y="8992px"><tspan class="bold">Some errors have detailed explanations: E0061, E0063, E0533, E0559, E0599, E0618.</tspan>
+    <tspan x="10px" y="8992px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `tuple` not found here</tspan>
 </tspan>
-    <tspan x="10px" y="9010px"><tspan class="bold">For more information about an error, try `rustc --explain E0061`.</tspan>
+    <tspan x="10px" y="9010px"><tspan class="fg-ansi256-012 bold">...</tspan>
 </tspan>
-    <tspan x="10px" y="9028px">
+    <tspan x="10px" y="9028px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::tuple { x: 0, y: 0 };</tspan>
+</tspan>
+    <tspan x="10px" y="9046px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^</tspan>
+</tspan>
+    <tspan x="10px" y="9064px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9082px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+</tspan>
+    <tspan x="10px" y="9100px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9118px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">tuple { x: 0, y: 0 }</tspan><tspan>;</tspan>
+</tspan>
+    <tspan x="10px" y="9136px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Tuple(/* i32 */)</tspan><tspan>;</tspan>
+</tspan>
+    <tspan x="10px" y="9154px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9172px">
+</tspan>
+    <tspan x="10px" y="9190px"><tspan class="fg-ansi256-009 bold">error[E0599]</tspan><tspan class="bold">: no variant named `r#struct` found for enum `Enum`</tspan>
+</tspan>
+    <tspan x="10px" y="9208px"><tspan>  </tspan><tspan class="fg-ansi256-012 bold">--&gt; </tspan><tspan>$DIR/incorrect-variant-literal.rs:54:11</tspan>
+</tspan>
+    <tspan x="10px" y="9226px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9244px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> enum Enum {</tspan>
+</tspan>
+    <tspan x="10px" y="9262px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">---------</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">variant `r#struct` not found here</tspan>
+</tspan>
+    <tspan x="10px" y="9280px"><tspan class="fg-ansi256-012 bold">...</tspan>
+</tspan>
+    <tspan x="10px" y="9298px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>     Enum::r#struct { x: 0, y: 0 };</tspan>
+</tspan>
+    <tspan x="10px" y="9316px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan><tspan>           </tspan><tspan class="fg-ansi256-009 bold">^^^^^^^^</tspan>
+</tspan>
+    <tspan x="10px" y="9334px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9352px"><tspan class="fg-ansi256-014 bold">help</tspan><tspan>: there is a variant with a similar name</tspan>
+</tspan>
+    <tspan x="10px" y="9370px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9388px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-009">- </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-009">r#struct { x: 0, y: 0 }</tspan><tspan>;</tspan>
+</tspan>
+    <tspan x="10px" y="9406px"><tspan class="fg-ansi256-012 bold">LL</tspan><tspan> </tspan><tspan class="fg-ansi256-010">+ </tspan><tspan>    Enum::</tspan><tspan class="fg-ansi256-010">Struct { x: /* value */ }</tspan><tspan>;</tspan>
+</tspan>
+    <tspan x="10px" y="9424px"><tspan>   </tspan><tspan class="fg-ansi256-012 bold">|</tspan>
+</tspan>
+    <tspan x="10px" y="9442px">
+</tspan>
+    <tspan x="10px" y="9460px"><tspan class="fg-ansi256-009 bold">error</tspan><tspan class="bold">: aborting due to 39 previous errors</tspan>
+</tspan>
+    <tspan x="10px" y="9478px">
+</tspan>
+    <tspan x="10px" y="9496px"><tspan class="bold">Some errors have detailed explanations: E0061, E0063, E0533, E0559, E0599, E0618.</tspan>
+</tspan>
+    <tspan x="10px" y="9514px"><tspan class="bold">For more information about an error, try `rustc --explain E0061`.</tspan>
+</tspan>
+    <tspan x="10px" y="9532px">
 </tspan>
   </text>
 
diff --git a/tests/ui/suggestions/issue-101465.stderr b/tests/ui/suggestions/issue-101465.stderr
index 0dad813b389..ff612a908cb 100644
--- a/tests/ui/suggestions/issue-101465.stderr
+++ b/tests/ui/suggestions/issue-101465.stderr
@@ -12,8 +12,9 @@ LL | |     }
    |
 help: you could change the return type to be a boxed trait object
    |
-LL | fn foo() -> Box<dyn Tr> {
-   |             ~~~~~~~   +
+LL - fn foo() -> impl Tr {
+LL + fn foo() -> Box<dyn Tr> {
+   |
 help: if you change the return type to expect trait objects, box the returned expressions
    |
 LL ~         true => Box::new(B),
diff --git a/tests/ui/suggestions/issue-102972.stderr b/tests/ui/suggestions/issue-102972.stderr
index 4b0d3b96f85..438f28ad032 100644
--- a/tests/ui/suggestions/issue-102972.stderr
+++ b/tests/ui/suggestions/issue-102972.stderr
@@ -32,8 +32,9 @@ note: `into_iter` takes ownership of the receiver `self`, which moves `iter`
   --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL
 help: if you want to call `next` on a iterator within the loop, consider using `while let`
    |
-LL |     while let Some(_i) = iter.next() {
-   |     ~~~~~~~~~~~~~~~  ~~~     +++++++
+LL -     for _i in iter {
+LL +     while let Some(_i) = iter.next() {
+   |
 
 error[E0499]: cannot borrow `i` as mutable more than once at a time
   --> $DIR/issue-102972.rs:22:9
@@ -69,8 +70,9 @@ note: `into_iter` takes ownership of the receiver `self`, which moves `iter`
   --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL
 help: if you want to call `next` on a iterator within the loop, consider using `while let`
    |
-LL |     while let Some(()) = iter.next() {
-   |     ~~~~~~~~~~~~~~~  ~~~     +++++++
+LL -     for () in iter {
+LL +     while let Some(()) = iter.next() {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/issue-109291.stderr b/tests/ui/suggestions/issue-109291.stderr
index d4a9351af3a..c2c36f10544 100644
--- a/tests/ui/suggestions/issue-109291.stderr
+++ b/tests/ui/suggestions/issue-109291.stderr
@@ -11,8 +11,9 @@ note: if you're trying to build a new `Backtrace` consider using one of the foll
   --> $SRC_DIR/std/src/backtrace.rs:LL:COL
 help: there is an associated function `force_capture` with a similar name
    |
-LL |     println!("Custom backtrace: {}", std::backtrace::Backtrace::force_capture());
-   |                                                                 ~~~~~~~~~~~~~
+LL -     println!("Custom backtrace: {}", std::backtrace::Backtrace::forced_capture());
+LL +     println!("Custom backtrace: {}", std::backtrace::Backtrace::force_capture());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr b/tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr
index a3ab0b8efb0..75d78ed6a35 100644
--- a/tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr
+++ b/tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr
@@ -14,8 +14,9 @@ LL | fn assert_is_send<T: Send>(_: &T) {}
    |                      ^^^^ required by this bound in `assert_is_send`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | async fn run<F: Foo>(_: &(), foo: F) -> std::io::Result<()> where <F as Foo>::Bar: Send {
-   |             ++++++++              ~                         +++++++++++++++++++++++++++
+LL - async fn run(_: &(), foo: impl Foo) -> std::io::Result<()> {
+LL + async fn run<F: Foo>(_: &(), foo: F) -> std::io::Result<()> where <F as Foo>::Bar: Send {
+   |
 
 error[E0277]: `<impl Foo as Foo>::Bar` cannot be sent between threads safely
   --> $DIR/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs:24:20
@@ -33,8 +34,9 @@ LL | fn assert_is_send<T: Send>(_: &T) {}
    |                      ^^^^ required by this bound in `assert_is_send`
 help: introduce a type parameter with a trait bound instead of using `impl Trait`
    |
-LL | async fn run2<F: Foo>(_: &(), foo: F) -> std::io::Result<()> where <F as Foo>::Bar: Send {
-   |              ~~~~~~~~              ~                         +++++++++++++++++++++++++++
+LL - async fn run2< >(_: &(), foo: impl Foo) -> std::io::Result<()> {
+LL + async fn run2<F: Foo>(_: &(), foo: F) -> std::io::Result<()> where <F as Foo>::Bar: Send {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/suggestions/issue-84592.stderr b/tests/ui/suggestions/issue-84592.stderr
index fe0a7b6731e..751bd5dc2dd 100644
--- a/tests/ui/suggestions/issue-84592.stderr
+++ b/tests/ui/suggestions/issue-84592.stderr
@@ -9,8 +9,9 @@ LL | fn two_lifetimes_needed(a: &(), b: &()) -> TwoLifetimes<'_, '_> {
    = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `a` or `b`
 help: consider introducing a named lifetime parameter
    |
-LL | fn two_lifetimes_needed<'a>(a: &'a (), b: &'a ()) -> TwoLifetimes<'a, 'a> {
-   |                        ++++     ++         ++                     ~~  ~~
+LL - fn two_lifetimes_needed(a: &(), b: &()) -> TwoLifetimes<'_, '_> {
+LL + fn two_lifetimes_needed<'a>(a: &'a (), b: &'a ()) -> TwoLifetimes<'a, 'a> {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/issue-84700.stderr b/tests/ui/suggestions/issue-84700.stderr
index d0705582660..e68b6fb5447 100644
--- a/tests/ui/suggestions/issue-84700.stderr
+++ b/tests/ui/suggestions/issue-84700.stderr
@@ -15,8 +15,9 @@ LL |         FarmAnimal::Chicken(_) => "cluck, cluck!".to_string(),
    |
 help: the struct variant's field is being ignored
    |
-LL |         FarmAnimal::Chicken { num_eggs: _ } => "cluck, cluck!".to_string(),
-   |                             ~~~~~~~~~~~~~~~
+LL -         FarmAnimal::Chicken(_) => "cluck, cluck!".to_string(),
+LL +         FarmAnimal::Chicken { num_eggs: _ } => "cluck, cluck!".to_string(),
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/suggestions/issue-89064.stderr b/tests/ui/suggestions/issue-89064.stderr
index 837fef60d1e..457cd7982aa 100644
--- a/tests/ui/suggestions/issue-89064.stderr
+++ b/tests/ui/suggestions/issue-89064.stderr
@@ -64,8 +64,9 @@ LL |     let _ = 42.into::<Option<_>>();
    |
 help: consider moving this generic argument to the `Into` trait, which takes up to 1 argument
    |
-LL |     let _ = Into::<Option<_>>::into(42);
-   |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = 42.into::<Option<_>>();
+LL +     let _ = Into::<Option<_>>::into(42);
+   |
 help: remove the unnecessary generics
    |
 LL -     let _ = 42.into::<Option<_>>();
diff --git a/tests/ui/suggestions/issue-89640.stderr b/tests/ui/suggestions/issue-89640.stderr
index 3252cd6bba4..e23b8eada9c 100644
--- a/tests/ui/suggestions/issue-89640.stderr
+++ b/tests/ui/suggestions/issue-89640.stderr
@@ -6,8 +6,9 @@ LL |     le t x: i32 = 3;
    |
 help: consider removing the space to spell keyword `let`
    |
-LL |     let x: i32 = 3;
-   |     ~~~
+LL -     le t x: i32 = 3;
+LL +     let x: i32 = 3;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/issue-90974.stderr b/tests/ui/suggestions/issue-90974.stderr
index 1a732ecaf94..114024789fb 100644
--- a/tests/ui/suggestions/issue-90974.stderr
+++ b/tests/ui/suggestions/issue-90974.stderr
@@ -6,8 +6,9 @@ LL |     println!("{}", (3.).recip());
    |
 help: you must specify a concrete type for this numeric value, like `f32`
    |
-LL |     println!("{}", (3_f32).recip());
-   |                     ~~~~~
+LL -     println!("{}", (3.).recip());
+LL +     println!("{}", (3_f32).recip());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/issue-94171.stderr b/tests/ui/suggestions/issue-94171.stderr
index 3d73ee1d27a..bcbd46cd8ec 100644
--- a/tests/ui/suggestions/issue-94171.stderr
+++ b/tests/ui/suggestions/issue-94171.stderr
@@ -6,8 +6,9 @@ LL | (; {`
    |
 help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
    |
-LL | (; {'
-   |     ~
+LL - (; {`
+LL + (; {'
+   |
 
 error: mismatched closing delimiter: `]`
   --> $DIR/issue-94171.rs:1:5
diff --git a/tests/ui/suggestions/js-style-comparison-op.stderr b/tests/ui/suggestions/js-style-comparison-op.stderr
index 58b1fddd3dd..f63ce8a8345 100644
--- a/tests/ui/suggestions/js-style-comparison-op.stderr
+++ b/tests/ui/suggestions/js-style-comparison-op.stderr
@@ -6,8 +6,9 @@ LL |     if 1 === 1 {
    |
 help: `===` is not a valid comparison operator, use `==`
    |
-LL |     if 1 == 1 {
-   |          ~~
+LL -     if 1 === 1 {
+LL +     if 1 == 1 {
+   |
 
 error: invalid comparison operator `!==`
   --> $DIR/js-style-comparison-op.rs:5:17
@@ -17,8 +18,9 @@ LL |     } else if 1 !== 1 {
    |
 help: `!==` is not a valid comparison operator, use `!=`
    |
-LL |     } else if 1 != 1 {
-   |                 ~~
+LL -     } else if 1 !== 1 {
+LL +     } else if 1 != 1 {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/suggestions/lifetimes/issue-105544.stderr b/tests/ui/suggestions/lifetimes/issue-105544.stderr
index 553643c0c3f..526f7e36163 100644
--- a/tests/ui/suggestions/lifetimes/issue-105544.stderr
+++ b/tests/ui/suggestions/lifetimes/issue-105544.stderr
@@ -9,8 +9,9 @@ LL |     (d, p)
    |
 help: consider adding an explicit lifetime bound
    |
-LL | fn foo<'a>(d: impl Sized + 'a, p: &'a mut ()) -> impl Sized + 'a {
-   |       ++++               ++++      ++                         ~~
+LL - fn foo(d: impl Sized, p: &mut ()) -> impl Sized + '_ {
+LL + fn foo<'a>(d: impl Sized + 'a, p: &'a mut ()) -> impl Sized + 'a {
+   |
 
 error[E0309]: the parameter type `impl Sized` may not live long enough
   --> $DIR/issue-105544.rs:15:5
@@ -37,8 +38,9 @@ LL |     (d, p)
    |
 help: consider adding an explicit lifetime bound
    |
-LL | fn foo2<'b, 'a>(d: impl Sized + 'a + 'b, p: &'b mut ()) -> impl Sized + 'b {
-   |         +++                        ++++      ++                         ~~
+LL - fn foo2<'a>(d: impl Sized + 'a, p: &mut ()) -> impl Sized + '_ {
+LL + fn foo2<'b, 'a>(d: impl Sized + 'a + 'b, p: &'b mut ()) -> impl Sized + 'b {
+   |
 
 error[E0311]: the parameter type `T` may not live long enough
   --> $DIR/issue-105544.rs:28:5
@@ -51,8 +53,9 @@ LL |     (d, p)
    |
 help: consider adding an explicit lifetime bound
    |
-LL | fn bar<'a, T : Sized + 'a>(d: T, p: &'a  mut ()) -> impl Sized + 'a {
-   |        +++           ++++            ++                          ~~
+LL - fn bar<T : Sized>(d: T, p: & mut ()) -> impl Sized + '_ {
+LL + fn bar<'a, T : Sized + 'a>(d: T, p: &'a  mut ()) -> impl Sized + 'a {
+   |
 
 error[E0309]: the parameter type `T` may not live long enough
   --> $DIR/issue-105544.rs:36:5
@@ -79,8 +82,9 @@ LL |     (d, p)
    |
 help: consider adding an explicit lifetime bound
    |
-LL | fn bar2<'b, 'a, T : Sized + 'a + 'b>(d: T, p: &'b mut ()) -> impl Sized + 'b {
-   |         +++                    ++++            ++                         ~~
+LL - fn bar2<'a, T : Sized + 'a>(d: T, p: &mut ()) -> impl Sized + '_ {
+LL + fn bar2<'b, 'a, T : Sized + 'a + 'b>(d: T, p: &'b mut ()) -> impl Sized + 'b {
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr
index ea01dcd5020..b92719e8033 100644
--- a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr
+++ b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr
@@ -66,8 +66,9 @@ LL | |     }
    |
 help: consider adding an explicit lifetime bound
    |
-LL | fn qux<'b, 'a, G: 'a + 'b, T>(g: G, dest: &'b mut T) -> impl FnOnce() + 'b
-   |        +++           ++++                  ++                           ~~
+LL - fn qux<'a, G: 'a, T>(g: G, dest: &mut T) -> impl FnOnce() + '_
+LL + fn qux<'b, 'a, G: 'a + 'b, T>(g: G, dest: &'b mut T) -> impl FnOnce() + 'b
+   |
 
 error[E0311]: the parameter type `G` may not live long enough
   --> $DIR/missing-lifetimes-in-signature.rs:61:9
@@ -82,8 +83,9 @@ LL | |         }
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     fn qux<'c, 'b, G: Get<T> + 'b + 'c, T>(g: G, dest: &'c mut T) -> impl FnOnce() + 'c {
-   |            +++                    ++++                  ++                           ~~
+LL -     fn qux<'b, G: Get<T> + 'b, T>(g: G, dest: &mut T) -> impl FnOnce() + '_ {
+LL +     fn qux<'c, 'b, G: Get<T> + 'b + 'c, T>(g: G, dest: &'c mut T) -> impl FnOnce() + 'c {
+   |
 
 error[E0311]: the parameter type `G` may not live long enough
   --> $DIR/missing-lifetimes-in-signature.rs:73:5
@@ -100,8 +102,9 @@ LL | |     }
    |
 help: consider adding an explicit lifetime bound
    |
-LL | fn bat<'b, 'a, G: 'a + 'b, T>(g: G, dest: &'b mut T) -> impl FnOnce() + 'b + 'a
-   |        +++           ++++                  ++                           ~~
+LL - fn bat<'a, G: 'a, T>(g: G, dest: &mut T) -> impl FnOnce() + '_ + 'a
+LL + fn bat<'b, 'a, G: 'a + 'b, T>(g: G, dest: &'b mut T) -> impl FnOnce() + 'b + 'a
+   |
 
 error[E0621]: explicit lifetime required in the type of `dest`
   --> $DIR/missing-lifetimes-in-signature.rs:73:5
diff --git a/tests/ui/suggestions/lifetimes/type-param-missing-lifetime.stderr b/tests/ui/suggestions/lifetimes/type-param-missing-lifetime.stderr
index 2f74a006b3b..c2d41f093f8 100644
--- a/tests/ui/suggestions/lifetimes/type-param-missing-lifetime.stderr
+++ b/tests/ui/suggestions/lifetimes/type-param-missing-lifetime.stderr
@@ -44,8 +44,9 @@ LL |         check_bound(arg, lt);
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     async fn bar2<'c, 'b>(_dummy: &'a u8, arg: A, lt: Inv<'c>) where A: 'c {
-   |                   +++                                     ~~   +++++++++++
+LL -     async fn bar2<'b>(_dummy: &'a u8, arg: A, lt: Inv<'_>) {
+LL +     async fn bar2<'c, 'b>(_dummy: &'a u8, arg: A, lt: Inv<'c>) where A: 'c {
+   |
 
 error[E0311]: the parameter type `A` may not live long enough
   --> $DIR/type-param-missing-lifetime.rs:47:9
@@ -58,8 +59,9 @@ LL |         check_bound(self.0 .1, self.0 .0);
    |
 help: consider adding an explicit lifetime bound
    |
-LL | impl<'a, A: 'a> MyTy<Elided<'a, A>> {
-   |      +++  ++++              ~~
+LL - impl<A> MyTy<Elided<'_, A>> {
+LL + impl<'a, A: 'a> MyTy<Elided<'a, A>> {
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/missing-impl-trait-block-but-not-ascii.stderr b/tests/ui/suggestions/missing-impl-trait-block-but-not-ascii.stderr
index 56cdc11b62e..96b57928ef6 100644
--- a/tests/ui/suggestions/missing-impl-trait-block-but-not-ascii.stderr
+++ b/tests/ui/suggestions/missing-impl-trait-block-but-not-ascii.stderr
@@ -6,8 +6,9 @@ LL | impl T for S;
    |
 help: Unicode character ';' (Fullwidth Semicolon) looks like ';' (Semicolon), but it is not
    |
-LL | impl T for S;
-   |             ~
+LL - impl T for S;
+LL + impl T for S;
+   |
 
 error: expected `{}`, found `;`
   --> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:13
diff --git a/tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr b/tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr
index cc735ef4c5e..0819fa86a45 100644
--- a/tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr
+++ b/tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr
@@ -11,8 +11,9 @@ LL |     fn bar(&self, _: T);
    |        ^^^
 help: consider moving this generic argument to the `Foo` trait, which takes up to 1 argument
    |
-LL |     Foo::<i32>::bar(1, 0);
-   |     ~~~~~~~~~~~~~~~~~~~~~
+LL -     1.bar::<i32>(0);
+LL +     Foo::<i32>::bar(1, 0);
+   |
 help: remove the unnecessary generics
    |
 LL -     1.bar::<i32>(0);
diff --git a/tests/ui/suggestions/multibyte-escapes.stderr b/tests/ui/suggestions/multibyte-escapes.stderr
index 1e7c43e6538..7208d2f5be8 100644
--- a/tests/ui/suggestions/multibyte-escapes.stderr
+++ b/tests/ui/suggestions/multibyte-escapes.stderr
@@ -6,8 +6,9 @@ LL |     b'µ';
    |
 help: if you meant to use the unicode code point for 'µ', use a \xHH escape
    |
-LL |     b'\xB5';
-   |       ~~~~
+LL -     b'µ';
+LL +     b'\xB5';
+   |
 
 error: non-ASCII character in byte literal
   --> $DIR/multibyte-escapes.rs:9:7
@@ -26,8 +27,9 @@ LL |     b"字";
    |
 help: if you meant to use the UTF-8 encoding of '字', use \xHH escapes
    |
-LL |     b"\xE5\xAD\x97";
-   |       ~~~~~~~~~~~~
+LL -     b"字";
+LL +     b"\xE5\xAD\x97";
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr b/tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr
index 4523333850c..fd518f987f5 100644
--- a/tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr
+++ b/tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr
@@ -9,8 +9,9 @@ LL |     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
    |
 help: `S` is a tuple struct, use the appropriate syntax
    |
-LL |     let _x = (S(/* f32 */, /* f32 */), S { x: 3.0, y: 4.0 });
-   |               ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
+LL +     let _x = (S(/* f32 */, /* f32 */), S { x: 3.0, y: 4.0 });
+   |
 
 error[E0560]: struct `S` has no field named `y`
   --> $DIR/nested-non-tuple-tuple-struct.rs:8:27
@@ -23,8 +24,9 @@ LL |     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
    |
 help: `S` is a tuple struct, use the appropriate syntax
    |
-LL |     let _x = (S(/* f32 */, /* f32 */), S { x: 3.0, y: 4.0 });
-   |               ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
+LL +     let _x = (S(/* f32 */, /* f32 */), S { x: 3.0, y: 4.0 });
+   |
 
 error[E0560]: struct `S` has no field named `x`
   --> $DIR/nested-non-tuple-tuple-struct.rs:8:41
@@ -37,8 +39,9 @@ LL |     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
    |
 help: `S` is a tuple struct, use the appropriate syntax
    |
-LL |     let _x = (S { x: 1.0, y: 2.0 }, S(/* f32 */, /* f32 */));
-   |                                     ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
+LL +     let _x = (S { x: 1.0, y: 2.0 }, S(/* f32 */, /* f32 */));
+   |
 
 error[E0560]: struct `S` has no field named `y`
   --> $DIR/nested-non-tuple-tuple-struct.rs:8:49
@@ -51,8 +54,9 @@ LL |     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
    |
 help: `S` is a tuple struct, use the appropriate syntax
    |
-LL |     let _x = (S { x: 1.0, y: 2.0 }, S(/* f32 */, /* f32 */));
-   |                                     ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _x = (S { x: 1.0, y: 2.0 }, S { x: 3.0, y: 4.0 });
+LL +     let _x = (S { x: 1.0, y: 2.0 }, S(/* f32 */, /* f32 */));
+   |
 
 error[E0559]: variant `E::V` has no field named `x`
   --> $DIR/nested-non-tuple-tuple-struct.rs:13:22
@@ -65,8 +69,9 @@ LL |     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
    |
 help: `E::V` is a tuple variant, use the appropriate syntax
    |
-LL |     let _y = (E::V(/* f32 */, /* f32 */), E::V { x: 3.0, y: 4.0 });
-   |                   ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
+LL +     let _y = (E::V(/* f32 */, /* f32 */), E::V { x: 3.0, y: 4.0 });
+   |
 
 error[E0559]: variant `E::V` has no field named `y`
   --> $DIR/nested-non-tuple-tuple-struct.rs:13:30
@@ -79,8 +84,9 @@ LL |     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
    |
 help: `E::V` is a tuple variant, use the appropriate syntax
    |
-LL |     let _y = (E::V(/* f32 */, /* f32 */), E::V { x: 3.0, y: 4.0 });
-   |                   ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
+LL +     let _y = (E::V(/* f32 */, /* f32 */), E::V { x: 3.0, y: 4.0 });
+   |
 
 error[E0559]: variant `E::V` has no field named `x`
   --> $DIR/nested-non-tuple-tuple-struct.rs:13:47
@@ -93,8 +99,9 @@ LL |     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
    |
 help: `E::V` is a tuple variant, use the appropriate syntax
    |
-LL |     let _y = (E::V { x: 1.0, y: 2.0 }, E::V(/* f32 */, /* f32 */));
-   |                                            ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
+LL +     let _y = (E::V { x: 1.0, y: 2.0 }, E::V(/* f32 */, /* f32 */));
+   |
 
 error[E0559]: variant `E::V` has no field named `y`
   --> $DIR/nested-non-tuple-tuple-struct.rs:13:55
@@ -107,8 +114,9 @@ LL |     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
    |
 help: `E::V` is a tuple variant, use the appropriate syntax
    |
-LL |     let _y = (E::V { x: 1.0, y: 2.0 }, E::V(/* f32 */, /* f32 */));
-   |                                            ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _y = (E::V { x: 1.0, y: 2.0 }, E::V { x: 3.0, y: 4.0 });
+LL +     let _y = (E::V { x: 1.0, y: 2.0 }, E::V(/* f32 */, /* f32 */));
+   |
 
 error: aborting due to 8 previous errors
 
diff --git a/tests/ui/suggestions/parenthesized-deref-suggestion.stderr b/tests/ui/suggestions/parenthesized-deref-suggestion.stderr
index 29e973b3a17..71ee56dfc81 100644
--- a/tests/ui/suggestions/parenthesized-deref-suggestion.stderr
+++ b/tests/ui/suggestions/parenthesized-deref-suggestion.stderr
@@ -17,8 +17,9 @@ LL |     (x as [u32; 1]).0;
    |
 help: instead of using tuple indexing, use array indexing
    |
-LL |     (x as [u32; 1])[0];
-   |                    ~ +
+LL -     (x as [u32; 1]).0;
+LL +     (x as [u32; 1])[0];
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/suggestions/partialeq_suggest_swap.stderr b/tests/ui/suggestions/partialeq_suggest_swap.stderr
index 2cadc5a16d5..dc1748b7ad5 100644
--- a/tests/ui/suggestions/partialeq_suggest_swap.stderr
+++ b/tests/ui/suggestions/partialeq_suggest_swap.stderr
@@ -9,8 +9,9 @@ LL |     4i32 == T(4);
    = note: `T` implements `PartialEq<i32>`
 help: consider swapping the equality
    |
-LL |     T(4) == 4i32;
-   |     ~~~~    ~~~~
+LL -     4i32 == T(4);
+LL +     T(4) == 4i32;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/range-index-instead-of-colon.stderr b/tests/ui/suggestions/range-index-instead-of-colon.stderr
index df29356cc16..a3264fc2359 100644
--- a/tests/ui/suggestions/range-index-instead-of-colon.stderr
+++ b/tests/ui/suggestions/range-index-instead-of-colon.stderr
@@ -6,8 +6,9 @@ LL |     &[1, 2, 3][1:2];
    |
 help: you might have meant a range expression
    |
-LL |     &[1, 2, 3][1..2];
-   |                 ~~
+LL -     &[1, 2, 3][1:2];
+LL +     &[1, 2, 3][1..2];
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/raw-byte-string-prefix.stderr b/tests/ui/suggestions/raw-byte-string-prefix.stderr
index 4f5106849d5..20f255c2b39 100644
--- a/tests/ui/suggestions/raw-byte-string-prefix.stderr
+++ b/tests/ui/suggestions/raw-byte-string-prefix.stderr
@@ -7,8 +7,9 @@ LL |     rb"abc";
    = note: prefixed identifiers and literals are reserved since Rust 2021
 help: use `br` for a raw byte string
    |
-LL |     br"abc";
-   |     ~~
+LL -     rb"abc";
+LL +     br"abc";
+   |
 
 error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `"abc"`
   --> $DIR/raw-byte-string-prefix.rs:6:7
diff --git a/tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr b/tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr
index dde6060c433..06f465e9c0d 100644
--- a/tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr
+++ b/tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr
@@ -17,8 +17,9 @@ LL |     let _ = vec![1, 2, 3].into_iter().collect::Vec<_>>>>();
    |
 help: surround the type parameters with angle brackets
    |
-LL |     let _ = vec![1, 2, 3].into_iter().collect::<Vec<_>>();
-   |                                                +      ~
+LL -     let _ = vec![1, 2, 3].into_iter().collect::Vec<_>>>>();
+LL +     let _ = vec![1, 2, 3].into_iter().collect::<Vec<_>>();
+   |
 
 error: generic parameters without surrounding angle brackets
   --> $DIR/recover-missing-turbofish-surrounding-angle-braket.rs:6:48
@@ -28,8 +29,9 @@ LL |     let _ = vec![1, 2, 3].into_iter().collect::Vec<_>>>();
    |
 help: surround the type parameters with angle brackets
    |
-LL |     let _ = vec![1, 2, 3].into_iter().collect::<Vec<_>>();
-   |                                                +      ~
+LL -     let _ = vec![1, 2, 3].into_iter().collect::Vec<_>>>();
+LL +     let _ = vec![1, 2, 3].into_iter().collect::<Vec<_>>();
+   |
 
 error: generic parameters without surrounding angle brackets
   --> $DIR/recover-missing-turbofish-surrounding-angle-braket.rs:8:48
@@ -39,8 +41,9 @@ LL |     let _ = vec![1, 2, 3].into_iter().collect::Vec<_>>();
    |
 help: surround the type parameters with angle brackets
    |
-LL |     let _ = vec![1, 2, 3].into_iter().collect::<Vec<_>>();
-   |                                                +
+LL -     let _ = vec![1, 2, 3].into_iter().collect::Vec<_>>();
+LL +     let _ = vec![1, 2, 3].into_iter().collect::<Vec<_>>();
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/shadowed-lplace-method-2.stderr b/tests/ui/suggestions/shadowed-lplace-method-2.stderr
index 088da83f589..09815306d22 100644
--- a/tests/ui/suggestions/shadowed-lplace-method-2.stderr
+++ b/tests/ui/suggestions/shadowed-lplace-method-2.stderr
@@ -13,8 +13,9 @@ LL |     *x.foo(0) = ();
    |        ^^^ refers to `X::foo`
 help: you might have meant to call the other method; you can use the fully-qualified path to call it explicitly
    |
-LL |     *<_ as A>::foo(&mut x, 0) = ();
-   |      ++++++++++++++++++  ~
+LL -     *x.foo(0) = ();
+LL +     *<_ as A>::foo(&mut x, 0) = ();
+   |
 help: try wrapping the expression in `X`
    |
 LL |     *x.foo(0) = X { x: () };
diff --git a/tests/ui/suggestions/shadowed-lplace-method.stderr b/tests/ui/suggestions/shadowed-lplace-method.stderr
index 3e49716b031..aab9e442007 100644
--- a/tests/ui/suggestions/shadowed-lplace-method.stderr
+++ b/tests/ui/suggestions/shadowed-lplace-method.stderr
@@ -18,8 +18,9 @@ LL |     *rc.borrow_mut() = false;
    |         ^^^^^^^^^^ refers to `std::borrow::BorrowMut::borrow_mut`
 help: you might have meant to call the other method; you can use the fully-qualified path to call it explicitly
    |
-LL |     *std::cell::RefCell::<_>::borrow_mut(&rc) = false;
-   |      +++++++++++++++++++++++++++++++++++++  ~
+LL -     *rc.borrow_mut() = false;
+LL +     *std::cell::RefCell::<_>::borrow_mut(&rc) = false;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/silenced-binding-typo.stderr b/tests/ui/suggestions/silenced-binding-typo.stderr
index a1e8b9e30d4..f1321b6d597 100644
--- a/tests/ui/suggestions/silenced-binding-typo.stderr
+++ b/tests/ui/suggestions/silenced-binding-typo.stderr
@@ -8,8 +8,9 @@ LL |     let _y = x;
    |
 help: the leading underscore in `_x` marks it as unused, consider renaming it to `x`
    |
-LL |     let x = 42;
-   |         ~
+LL -     let _x = 42;
+LL +     let x = 42;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/struct-field-type-including-single-colon.stderr b/tests/ui/suggestions/struct-field-type-including-single-colon.stderr
index 4dd514480da..247454b8710 100644
--- a/tests/ui/suggestions/struct-field-type-including-single-colon.stderr
+++ b/tests/ui/suggestions/struct-field-type-including-single-colon.stderr
@@ -6,8 +6,9 @@ LL |     a: foo:A,
    |
 help: write a path separator here
    |
-LL |     a: foo::A,
-   |           ~~
+LL -     a: foo:A,
+LL +     a: foo::A,
+   |
 
 error: expected `,`, or `}`, found `:`
   --> $DIR/struct-field-type-including-single-colon.rs:9:11
@@ -25,8 +26,9 @@ LL |     b: foo::bar:B,
    |
 help: write a path separator here
    |
-LL |     b: foo::bar::B,
-   |                ~~
+LL -     b: foo::bar:B,
+LL +     b: foo::bar::B,
+   |
 
 error: expected `,`, or `}`, found `:`
   --> $DIR/struct-field-type-including-single-colon.rs:15:16
diff --git a/tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr b/tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr
index 102438e1ec5..4fda1e49911 100644
--- a/tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr
+++ b/tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr
@@ -10,8 +10,9 @@ LL | impl LocalTraitOne for dyn fmt::Display {}
    |                        +++
 help: alternatively use a blanket implementation to implement `LocalTraitOne` for all types that also implement `fmt::Display`
    |
-LL | impl<T: fmt::Display> LocalTraitOne for T {}
-   |     +++++++++++++++++                   ~
+LL - impl LocalTraitOne for fmt::Display {}
+LL + impl<T: fmt::Display> LocalTraitOne for T {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-blanket-impl-local-trait.rs:40:24
@@ -25,8 +26,9 @@ LL | impl LocalTraitOne for dyn fmt::Display + Send {}
    |                        +++
 help: alternatively use a blanket implementation to implement `LocalTraitOne` for all types that also implement `fmt::Display + Send`
    |
-LL | impl<T: fmt::Display + Send> LocalTraitOne for T {}
-   |     ++++++++++++++++++++++++                   ~
+LL - impl LocalTraitOne for fmt::Display + Send {}
+LL + impl<T: fmt::Display + Send> LocalTraitOne for T {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-blanket-impl-local-trait.rs:13:24
@@ -40,8 +42,9 @@ LL | impl LocalTraitTwo for dyn LocalTraitOne {}
    |                        +++
 help: alternatively use a blanket implementation to implement `LocalTraitTwo` for all types that also implement `LocalTraitOne`
    |
-LL | impl<T: LocalTraitOne> LocalTraitTwo for T {}
-   |     ++++++++++++++++++                   ~
+LL - impl LocalTraitTwo for LocalTraitOne {}
+LL + impl<T: LocalTraitOne> LocalTraitTwo for T {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-blanket-impl-local-trait.rs:46:29
@@ -55,8 +58,9 @@ LL | impl<E> GenericTrait<E> for dyn LocalTraitOne {}
    |                             +++
 help: alternatively use a blanket implementation to implement `GenericTrait<E>` for all types that also implement `LocalTraitOne`
    |
-LL | impl<E, T: LocalTraitOne> GenericTrait<E> for T {}
-   |       ++++++++++++++++++                      ~
+LL - impl<E> GenericTrait<E> for LocalTraitOne {}
+LL + impl<E, T: LocalTraitOne> GenericTrait<E> for T {}
+   |
 
 error[E0782]: expected a type, found a trait
   --> $DIR/suggest-blanket-impl-local-trait.rs:18:23
@@ -92,8 +96,9 @@ LL | impl<T, E> GenericTraitTwo<E> for dyn GenericTrait<T> {}
    |                                   +++
 help: alternatively use a blanket implementation to implement `GenericTraitTwo<E>` for all types that also implement `GenericTrait<T>`
    |
-LL | impl<T, E, U: GenericTrait<T>> GenericTraitTwo<E> for U {}
-   |          ++++++++++++++++++++                         ~
+LL - impl<T, E> GenericTraitTwo<E> for GenericTrait<T> {}
+LL + impl<T, E, U: GenericTrait<T>> GenericTraitTwo<E> for U {}
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/suggestions/suggest-change-mut.stderr b/tests/ui/suggestions/suggest-change-mut.stderr
index 216d1e810fd..5315456efea 100644
--- a/tests/ui/suggestions/suggest-change-mut.stderr
+++ b/tests/ui/suggestions/suggest-change-mut.stderr
@@ -19,8 +19,9 @@ LL | fn issue_81421<T: Read + Write>(mut stream: T) where &T: std::io::Read {
    |                                                +++++++++++++++++++++++
 help: consider changing this borrow's mutability
    |
-LL |         let mut stream_reader = BufReader::new(&mut stream);
-   |                                                ~~~~
+LL -         let mut stream_reader = BufReader::new(&stream);
+LL +         let mut stream_reader = BufReader::new(&mut stream);
+   |
 
 error[E0599]: the method `read_until` exists for struct `BufReader<&T>`, but its trait bounds were not satisfied
   --> $DIR/suggest-change-mut.rs:16:23
diff --git a/tests/ui/suggestions/suggest-closure-return-type-1.stderr b/tests/ui/suggestions/suggest-closure-return-type-1.stderr
index be473d3cfa2..146bf69a8bd 100644
--- a/tests/ui/suggestions/suggest-closure-return-type-1.stderr
+++ b/tests/ui/suggestions/suggest-closure-return-type-1.stderr
@@ -6,8 +6,9 @@ LL |     unbound_drop(|| -> _ { [] });
    |
 help: try giving this closure an explicit return type
    |
-LL |     unbound_drop(|| -> [_; 0] { [] });
-   |                        ~~~~~~
+LL -     unbound_drop(|| -> _ { [] });
+LL +     unbound_drop(|| -> [_; 0] { [] });
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/suggest-deref-in-match-issue-132784.stderr b/tests/ui/suggestions/suggest-deref-in-match-issue-132784.stderr
index 9338ef19089..54c927b59d4 100644
--- a/tests/ui/suggestions/suggest-deref-in-match-issue-132784.stderr
+++ b/tests/ui/suggestions/suggest-deref-in-match-issue-132784.stderr
@@ -11,8 +11,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match *x {
-   |           ~~
+LL -     match x {
+LL +     match *x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:9:9
@@ -27,8 +28,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match *x {
-   |           ~~
+LL -     match x {
+LL +     match *x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:16:9
@@ -43,8 +45,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &*x {
-   |           ~~~
+LL -     match &x {
+LL +     match &*x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:18:9
@@ -59,8 +62,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &*x {
-   |           ~~~
+LL -     match &x {
+LL +     match &*x {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:26:9
@@ -75,8 +79,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match *y {
-   |           ~~
+LL -     match y {
+LL +     match *y {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:28:9
@@ -91,8 +96,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match *y {
-   |           ~~
+LL -     match y {
+LL +     match *y {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:36:9
@@ -107,8 +113,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match *(z as Arc<Option<i32>>) {
-   |           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     match z as Arc<Option<i32>> {
+LL +     match *(z as Arc<Option<i32>>) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:38:9
@@ -123,8 +130,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match *(z as Arc<Option<i32>>) {
-   |           ~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     match z as Arc<Option<i32>> {
+LL +     match *(z as Arc<Option<i32>>) {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:46:9
@@ -139,8 +147,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &**z_const {
-   |           ~~~~~~~~~~
+LL -     match z_const {
+LL +     match &**z_const {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:48:9
@@ -155,8 +164,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &**z_const {
-   |           ~~~~~~~~~~
+LL -     match z_const {
+LL +     match &**z_const {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:57:9
@@ -171,8 +181,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &**z_mut {
-   |           ~~~~~~~~
+LL -     match z_mut {
+LL +     match &**z_mut {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:59:9
@@ -187,8 +198,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &**z_mut {
-   |           ~~~~~~~~
+LL -     match z_mut {
+LL +     match &**z_mut {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:68:9
@@ -203,8 +215,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &**y_mut {
-   |           ~~~~~~~~
+LL -     match y_mut {
+LL +     match &**y_mut {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:70:9
@@ -219,8 +232,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &**y_mut {
-   |           ~~~~~~~~
+LL -     match y_mut {
+LL +     match &**y_mut {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:79:9
@@ -235,8 +249,9 @@ LL |         Some(_) => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &*difficult {
-   |           ~~~~~~~~~~~
+LL -     match (& (&difficult)  ) {
+LL +     match &*difficult {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-deref-in-match-issue-132784.rs:81:9
@@ -251,8 +266,9 @@ LL |         None => {}
                 found enum `Option<_>`
 help: consider dereferencing to access the inner value using the Deref trait
    |
-LL |     match &*difficult {
-   |           ~~~~~~~~~~~
+LL -     match (& (&difficult)  ) {
+LL +     match &*difficult {
+   |
 
 error: aborting due to 16 previous errors
 
diff --git a/tests/ui/suggestions/suggest-field-through-deref.stderr b/tests/ui/suggestions/suggest-field-through-deref.stderr
index cc9fe2044c9..e3889781884 100644
--- a/tests/ui/suggestions/suggest-field-through-deref.stderr
+++ b/tests/ui/suggestions/suggest-field-through-deref.stderr
@@ -6,8 +6,9 @@ LL |     let _ = x.longname;
    |
 help: a field with a similar name exists
    |
-LL |     let _ = x.long_name;
-   |               ~~~~~~~~~
+LL -     let _ = x.longname;
+LL +     let _ = x.long_name;
+   |
 
 error[E0609]: no field `longname` on type `S`
   --> $DIR/suggest-field-through-deref.rs:12:15
@@ -17,8 +18,9 @@ LL |     let _ = y.longname;
    |
 help: a field with a similar name exists
    |
-LL |     let _ = y.long_name;
-   |               ~~~~~~~~~
+LL -     let _ = y.longname;
+LL +     let _ = y.long_name;
+   |
 
 error[E0609]: no field `longname` on type `Option<Arc<S>>`
   --> $DIR/suggest-field-through-deref.rs:14:15
@@ -28,8 +30,9 @@ LL |     let _ = a.longname;
    |
 help: a field with a similar name exists
    |
-LL |     let _ = a.unwrap().long_name;
-   |               ~~~~~~~~~~~~~~~~~~
+LL -     let _ = a.longname;
+LL +     let _ = a.unwrap().long_name;
+   |
 
 error[E0609]: no field `long_name` on type `Option<S>`
   --> $DIR/suggest-field-through-deref.rs:16:15
@@ -50,8 +53,9 @@ LL |     let _ = c.longname;
    |
 help: a field with a similar name exists
    |
-LL |     let _ = c.unwrap().long_name;
-   |               ~~~~~~~~~~~~~~~~~~
+LL -     let _ = c.longname;
+LL +     let _ = c.unwrap().long_name;
+   |
 
 error[E0609]: no field `long_name` on type `Result<S, ()>`
   --> $DIR/suggest-field-through-deref.rs:20:15
diff --git a/tests/ui/suggestions/suggest-let-and-typo-issue-132483.stderr b/tests/ui/suggestions/suggest-let-and-typo-issue-132483.stderr
index c84f9363f03..57983a07bf5 100644
--- a/tests/ui/suggestions/suggest-let-and-typo-issue-132483.stderr
+++ b/tests/ui/suggestions/suggest-let-and-typo-issue-132483.stderr
@@ -6,8 +6,9 @@ LL |     x2 = 1;
    |
 help: a local variable with a similar name exists
    |
-LL |     x1 = 1;
-   |     ~~
+LL -     x2 = 1;
+LL +     x1 = 1;
+   |
 help: you might have meant to introduce a new binding
    |
 LL |     let x2 = 1;
diff --git a/tests/ui/suggestions/suggest-let-for-assignment.stderr b/tests/ui/suggestions/suggest-let-for-assignment.stderr
index 8d97dbeb14a..9dc859dbe0e 100644
--- a/tests/ui/suggestions/suggest-let-for-assignment.stderr
+++ b/tests/ui/suggestions/suggest-let-for-assignment.stderr
@@ -40,8 +40,9 @@ LL |     let_some_variable = 6;
    |
 help: you might have meant to introduce a new binding
    |
-LL |     let some_variable = 6;
-   |     ~~~~~~~~~~~~~~~~~
+LL -     let_some_variable = 6;
+LL +     let some_variable = 6;
+   |
 
 error[E0425]: cannot find value `some_variable` in this scope
   --> $DIR/suggest-let-for-assignment.rs:11:35
@@ -57,8 +58,9 @@ LL |     letother_variable = 6;
    |
 help: you might have meant to introduce a new binding
    |
-LL |     let other_variable = 6;
-   |     ~~~~~~~~~~~~~~~~~~
+LL -     letother_variable = 6;
+LL +     let other_variable = 6;
+   |
 
 error[E0425]: cannot find value `other_variable` in this scope
   --> $DIR/suggest-let-for-assignment.rs:14:36
diff --git a/tests/ui/suggestions/suggest-methods.stderr b/tests/ui/suggestions/suggest-methods.stderr
index 5bacad8c6e8..6f1c2cc4cab 100644
--- a/tests/ui/suggestions/suggest-methods.stderr
+++ b/tests/ui/suggestions/suggest-methods.stderr
@@ -21,8 +21,9 @@ LL |     let _ = s.is_emtpy();
    |
 help: there is a method `is_empty` with a similar name
    |
-LL |     let _ = s.is_empty();
-   |               ~~~~~~~~
+LL -     let _ = s.is_emtpy();
+LL +     let _ = s.is_empty();
+   |
 
 error[E0599]: no method named `count_eos` found for type `u32` in the current scope
   --> $DIR/suggest-methods.rs:27:19
@@ -32,8 +33,9 @@ LL |     let _ = 63u32.count_eos();
    |
 help: there is a method `count_zeros` with a similar name
    |
-LL |     let _ = 63u32.count_zeros();
-   |                   ~~~~~~~~~~~
+LL -     let _ = 63u32.count_eos();
+LL +     let _ = 63u32.count_zeros();
+   |
 
 error[E0599]: no method named `count_o` found for type `u32` in the current scope
   --> $DIR/suggest-methods.rs:30:19
@@ -43,8 +45,9 @@ LL |     let _ = 63u32.count_o();
    |
 help: there is a method `count_ones` with a similar name
    |
-LL |     let _ = 63u32.count_ones();
-   |                   ~~~~~~~~~~
+LL -     let _ = 63u32.count_o();
+LL +     let _ = 63u32.count_ones();
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/suggest-move-types.stderr b/tests/ui/suggestions/suggest-move-types.stderr
index b222e8142ba..397e8ad29c6 100644
--- a/tests/ui/suggestions/suggest-move-types.stderr
+++ b/tests/ui/suggestions/suggest-move-types.stderr
@@ -8,8 +8,9 @@ LL | struct A<T, M: One<A=(), T>> {
    |
 help: move the constraint after the generic argument
    |
-LL | struct A<T, M: One<T, A = ()>> {
-   |                   ~~~~~~~~~~~
+LL - struct A<T, M: One<A=(), T>> {
+LL + struct A<T, M: One<T, A = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:33:43
@@ -21,8 +22,9 @@ LL | struct Al<'a, T, M: OneWithLifetime<A=(), T, 'a>> {
    |
 help: move the constraint after the generic arguments
    |
-LL | struct Al<'a, T, M: OneWithLifetime<'a, T, A = ()>> {
-   |                                    ~~~~~~~~~~~~~~~
+LL - struct Al<'a, T, M: OneWithLifetime<A=(), T, 'a>> {
+LL + struct Al<'a, T, M: OneWithLifetime<'a, T, A = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:40:46
@@ -34,8 +36,9 @@ LL | struct B<T, U, V, M: Three<A=(), B=(), C=(), T, U, V>> {
    |
 help: move the constraints after the generic arguments
    |
-LL | struct B<T, U, V, M: Three<T, U, V, A = (), B = (), C = ()>> {
-   |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct B<T, U, V, M: Three<A=(), B=(), C=(), T, U, V>> {
+LL + struct B<T, U, V, M: Three<T, U, V, A = (), B = (), C = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:48:71
@@ -47,8 +50,9 @@ LL | struct Bl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<A=(), B=(), C=(), T, U,
    |
 help: move the constraints after the generic arguments
    |
-LL | struct Bl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<'a, 'b, 'c, T, U, V, A = (), B = (), C = ()>> {
-   |                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct Bl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<A=(), B=(), C=(), T, U, V, 'a, 'b, 'c>> {
+LL + struct Bl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<'a, 'b, 'c, T, U, V, A = (), B = (), C = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:57:28
@@ -60,8 +64,9 @@ LL | struct C<T, U, V, M: Three<T, A=(), B=(), C=(), U, V>> {
    |
 help: move the constraints after the generic arguments
    |
-LL | struct C<T, U, V, M: Three<T, U, V, A = (), B = (), C = ()>> {
-   |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct C<T, U, V, M: Three<T, A=(), B=(), C=(), U, V>> {
+LL + struct C<T, U, V, M: Three<T, U, V, A = (), B = (), C = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:65:53
@@ -73,8 +78,9 @@ LL | struct Cl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<T, 'a, A=(), B=(), C=()
    |
 help: move the constraints after the generic arguments
    |
-LL | struct Cl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<'a, 'b, 'c, T, U, V, A = (), B = (), C = ()>> {
-   |                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct Cl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<T, 'a, A=(), B=(), C=(), U, 'b, V, 'c>> {
+LL + struct Cl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<'a, 'b, 'c, T, U, V, A = (), B = (), C = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:74:28
@@ -86,8 +92,9 @@ LL | struct D<T, U, V, M: Three<T, A=(), B=(), U, C=(), V>> {
    |
 help: move the constraints after the generic arguments
    |
-LL | struct D<T, U, V, M: Three<T, U, V, A = (), B = (), C = ()>> {
-   |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct D<T, U, V, M: Three<T, A=(), B=(), U, C=(), V>> {
+LL + struct D<T, U, V, M: Three<T, U, V, A = (), B = (), C = ()>> {
+   |
 
 error: generic arguments must come before the first constraint
   --> $DIR/suggest-move-types.rs:82:53
@@ -99,8 +106,9 @@ LL | struct Dl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<T, 'a, A=(), B=(), U, '
    |
 help: move the constraints after the generic arguments
    |
-LL | struct Dl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<'a, 'b, 'c, T, U, V, A = (), B = (), C = ()>> {
-   |                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct Dl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<T, 'a, A=(), B=(), U, 'b, C=(), V, 'c>> {
+LL + struct Dl<'a, 'b, 'c, T, U, V, M: ThreeWithLifetime<'a, 'b, 'c, T, U, V, A = (), B = (), C = ()>> {
+   |
 
 error[E0747]: type provided when a lifetime was expected
   --> $DIR/suggest-move-types.rs:33:43
diff --git a/tests/ui/suggestions/suggest-null-ptr.stderr b/tests/ui/suggestions/suggest-null-ptr.stderr
index a811d6d19c7..5be33d47237 100644
--- a/tests/ui/suggestions/suggest-null-ptr.stderr
+++ b/tests/ui/suggestions/suggest-null-ptr.stderr
@@ -15,8 +15,9 @@ LL |     fn foo(ptr: *const u8);
    |        ^^^ ---
 help: if you meant to create a null pointer, use `std::ptr::null()`
    |
-LL |         foo(std::ptr::null());
-   |             ~~~~~~~~~~~~~~~~
+LL -         foo(0);
+LL +         foo(std::ptr::null());
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-null-ptr.rs:21:17
@@ -35,8 +36,9 @@ LL |     fn foo_mut(ptr: *mut u8);
    |        ^^^^^^^ ---
 help: if you meant to create a null pointer, use `std::ptr::null_mut()`
    |
-LL |         foo_mut(std::ptr::null_mut());
-   |                 ~~~~~~~~~~~~~~~~~~~~
+LL -         foo_mut(0);
+LL +         foo_mut(std::ptr::null_mut());
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-null-ptr.rs:24:15
@@ -55,8 +57,9 @@ LL |     fn usize(ptr: *const usize);
    |        ^^^^^ ---
 help: if you meant to create a null pointer, use `std::ptr::null()`
    |
-LL |         usize(std::ptr::null());
-   |               ~~~~~~~~~~~~~~~~
+LL -         usize(0);
+LL +         usize(std::ptr::null());
+   |
 
 error[E0308]: mismatched types
   --> $DIR/suggest-null-ptr.rs:27:19
@@ -75,8 +78,9 @@ LL |     fn usize_mut(ptr: *mut usize);
    |        ^^^^^^^^^ ---
 help: if you meant to create a null pointer, use `std::ptr::null_mut()`
    |
-LL |         usize_mut(std::ptr::null_mut());
-   |                   ~~~~~~~~~~~~~~~~~~~~
+LL -         usize_mut(0);
+LL +         usize_mut(std::ptr::null_mut());
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/suggest-slice-swap.stderr b/tests/ui/suggestions/suggest-slice-swap.stderr
index 2840fc0a761..95b547aad5d 100644
--- a/tests/ui/suggestions/suggest-slice-swap.stderr
+++ b/tests/ui/suggestions/suggest-slice-swap.stderr
@@ -9,8 +9,9 @@ LL |     std::mem::swap(&mut arr[0], &mut arr[1]);
    |
 help: use `.swap()` to swap elements at the specified indices instead
    |
-LL |     arr.swap(1, 0);
-   |     ~~~~~~~~~~~~~~
+LL -     std::mem::swap(&mut arr[0], &mut arr[1]);
+LL +     arr.swap(1, 0);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr
index 0bd601e2170..e73aba51847 100644
--- a/tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr
+++ b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr
@@ -6,8 +6,9 @@ LL | impl<'a, T> Struct<T> for Trait<'a, T> {}
    |
 help: `impl` items mention the trait being implemented first and the type it is being implemented for second
    |
-LL | impl<'a, T> Trait<'a, T> for Struct<T> {}
-   |             ~~~~~~~~~~~~     ~~~~~~~~~
+LL - impl<'a, T> Struct<T> for Trait<'a, T> {}
+LL + impl<'a, T> Trait<'a, T> for Struct<T> {}
+   |
 
 error[E0404]: expected trait, found enum `Enum`
   --> $DIR/suggest-swapping-self-ty-and-trait-edition-2021.rs:19:13
@@ -17,8 +18,9 @@ LL | impl<'a, T> Enum<T> for Trait<'a, T> {}
    |
 help: `impl` items mention the trait being implemented first and the type it is being implemented for second
    |
-LL | impl<'a, T> Trait<'a, T> for Enum<T> {}
-   |             ~~~~~~~~~~~~     ~~~~~~~
+LL - impl<'a, T> Enum<T> for Trait<'a, T> {}
+LL + impl<'a, T> Trait<'a, T> for Enum<T> {}
+   |
 
 error[E0404]: expected trait, found union `Union`
   --> $DIR/suggest-swapping-self-ty-and-trait-edition-2021.rs:23:13
@@ -28,8 +30,9 @@ LL | impl<'a, T> Union<T> for Trait<'a, T> {}
    |
 help: `impl` items mention the trait being implemented first and the type it is being implemented for second
    |
-LL | impl<'a, T> Trait<'a, T> for Union<T> {}
-   |             ~~~~~~~~~~~~     ~~~~~~~~
+LL - impl<'a, T> Union<T> for Trait<'a, T> {}
+LL + impl<'a, T> Trait<'a, T> for Union<T> {}
+   |
 
 error[E0392]: type parameter `T` is never used
   --> $DIR/suggest-swapping-self-ty-and-trait-edition-2021.rs:5:19
diff --git a/tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr
index d1da9a89c19..929f893e34f 100644
--- a/tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr
+++ b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr
@@ -6,8 +6,9 @@ LL | impl<'a, T> Struct<T> for Trait<'a, T> {}
    |
 help: `impl` items mention the trait being implemented first and the type it is being implemented for second
    |
-LL | impl<'a, T> Trait<'a, T> for Struct<T> {}
-   |             ~~~~~~~~~~~~     ~~~~~~~~~
+LL - impl<'a, T> Struct<T> for Trait<'a, T> {}
+LL + impl<'a, T> Trait<'a, T> for Struct<T> {}
+   |
 
 error[E0404]: expected trait, found enum `Enum`
   --> $DIR/suggest-swapping-self-ty-and-trait.rs:18:13
@@ -17,8 +18,9 @@ LL | impl<'a, T> Enum<T> for Trait<'a, T> {}
    |
 help: `impl` items mention the trait being implemented first and the type it is being implemented for second
    |
-LL | impl<'a, T> Trait<'a, T> for Enum<T> {}
-   |             ~~~~~~~~~~~~     ~~~~~~~
+LL - impl<'a, T> Enum<T> for Trait<'a, T> {}
+LL + impl<'a, T> Trait<'a, T> for Enum<T> {}
+   |
 
 error[E0404]: expected trait, found union `Union`
   --> $DIR/suggest-swapping-self-ty-and-trait.rs:23:13
@@ -28,8 +30,9 @@ LL | impl<'a, T> Union<T> for Trait<'a, T> {}
    |
 help: `impl` items mention the trait being implemented first and the type it is being implemented for second
    |
-LL | impl<'a, T> Trait<'a, T> for Union<T> {}
-   |             ~~~~~~~~~~~~     ~~~~~~~~
+LL - impl<'a, T> Union<T> for Trait<'a, T> {}
+LL + impl<'a, T> Trait<'a, T> for Union<T> {}
+   |
 
 error[E0392]: type parameter `T` is never used
   --> $DIR/suggest-swapping-self-ty-and-trait.rs:3:19
diff --git a/tests/ui/suggestions/suggest-trait-in-ufcs-in-hrtb.stderr b/tests/ui/suggestions/suggest-trait-in-ufcs-in-hrtb.stderr
index cabaa76a886..fac93da9829 100644
--- a/tests/ui/suggestions/suggest-trait-in-ufcs-in-hrtb.stderr
+++ b/tests/ui/suggestions/suggest-trait-in-ufcs-in-hrtb.stderr
@@ -6,10 +6,12 @@ LL | impl<S> Foo for Bar<S> where for<'a> <&'a S>::Item: Foo {}
    |
 help: use fully-qualified syntax
    |
-LL | impl<S> Foo for Bar<S> where for<'a> <&'a S as IntoAsyncIterator>::Item: Foo {}
-   |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL | impl<S> Foo for Bar<S> where for<'a> <&'a S as IntoIterator>::Item: Foo {}
-   |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - impl<S> Foo for Bar<S> where for<'a> <&'a S>::Item: Foo {}
+LL + impl<S> Foo for Bar<S> where for<'a> <&'a S as IntoAsyncIterator>::Item: Foo {}
+   |
+LL - impl<S> Foo for Bar<S> where for<'a> <&'a S>::Item: Foo {}
+LL + impl<S> Foo for Bar<S> where for<'a> <&'a S as IntoIterator>::Item: Foo {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/suggest-tryinto-edition-change.stderr b/tests/ui/suggestions/suggest-tryinto-edition-change.stderr
index 5be55f75cd1..0008b4fb5ed 100644
--- a/tests/ui/suggestions/suggest-tryinto-edition-change.stderr
+++ b/tests/ui/suggestions/suggest-tryinto-edition-change.stderr
@@ -31,8 +31,9 @@ LL |     let _v: Vec<_> = FromIterator::from_iter(&[1]);
    = note: 'std::iter::FromIterator' is included in the prelude starting in Edition 2021
 help: a trait with a similar name exists
    |
-LL |     let _v: Vec<_> = IntoIterator::from_iter(&[1]);
-   |                      ~~~~~~~~~~~~
+LL -     let _v: Vec<_> = FromIterator::from_iter(&[1]);
+LL +     let _v: Vec<_> = IntoIterator::from_iter(&[1]);
+   |
 help: consider importing this trait
    |
 LL + use std::iter::FromIterator;
@@ -55,8 +56,9 @@ LL + use std::convert::TryInto;
    |
 help: there is a method `into` with a similar name
    |
-LL |     let _i: i16 = 0_i32.into().unwrap();
-   |                         ~~~~
+LL -     let _i: i16 = 0_i32.try_into().unwrap();
+LL +     let _i: i16 = 0_i32.into().unwrap();
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/suggestions/suggest-using-chars.stderr b/tests/ui/suggestions/suggest-using-chars.stderr
index ba80ec6a201..a197223beb0 100644
--- a/tests/ui/suggestions/suggest-using-chars.stderr
+++ b/tests/ui/suggestions/suggest-using-chars.stderr
@@ -6,8 +6,9 @@ LL |     let _ = "foo".iter();
    |
 help: because of the in-memory representation of `&str`, to obtain an `Iterator` over each of its codepoint use method `chars`
    |
-LL |     let _ = "foo".chars();
-   |                   ~~~~~
+LL -     let _ = "foo".iter();
+LL +     let _ = "foo".chars();
+   |
 
 error[E0599]: no method named `foo` found for reference `&'static str` in the current scope
   --> $DIR/suggest-using-chars.rs:3:19
@@ -23,8 +24,9 @@ LL |     let _ = String::from("bar").iter();
    |
 help: because of the in-memory representation of `&str`, to obtain an `Iterator` over each of its codepoint use method `chars`
    |
-LL |     let _ = String::from("bar").chars();
-   |                                 ~~~~~
+LL -     let _ = String::from("bar").iter();
+LL +     let _ = String::from("bar").chars();
+   |
 
 error[E0599]: no method named `iter` found for reference `&String` in the current scope
   --> $DIR/suggest-using-chars.rs:5:36
@@ -34,8 +36,9 @@ LL |     let _ = (&String::from("bar")).iter();
    |
 help: because of the in-memory representation of `&str`, to obtain an `Iterator` over each of its codepoint use method `chars`
    |
-LL |     let _ = (&String::from("bar")).chars();
-   |                                    ~~~~~
+LL -     let _ = (&String::from("bar")).iter();
+LL +     let _ = (&String::from("bar")).chars();
+   |
 
 error[E0599]: no method named `iter` found for type `{integer}` in the current scope
   --> $DIR/suggest-using-chars.rs:6:15
diff --git a/tests/ui/suggestions/suggest-variants.stderr b/tests/ui/suggestions/suggest-variants.stderr
index d93bf2d8cd7..b422da8fbfa 100644
--- a/tests/ui/suggestions/suggest-variants.stderr
+++ b/tests/ui/suggestions/suggest-variants.stderr
@@ -9,8 +9,9 @@ LL |     println!("My shape is {:?}", Shape::Squareee { size: 5});
    |
 help: there is a variant with a similar name
    |
-LL |     println!("My shape is {:?}", Shape::Square { size: 5});
-   |                                         ~~~~~~
+LL -     println!("My shape is {:?}", Shape::Squareee { size: 5});
+LL +     println!("My shape is {:?}", Shape::Square { size: 5});
+   |
 
 error[E0599]: no variant named `Circl` found for enum `Shape`
   --> $DIR/suggest-variants.rs:13:41
@@ -23,8 +24,9 @@ LL |     println!("My shape is {:?}", Shape::Circl { size: 5});
    |
 help: there is a variant with a similar name
    |
-LL |     println!("My shape is {:?}", Shape::Circle { size: 5});
-   |                                         ~~~~~~
+LL -     println!("My shape is {:?}", Shape::Circl { size: 5});
+LL +     println!("My shape is {:?}", Shape::Circle { size: 5});
+   |
 
 error[E0599]: no variant named `Rombus` found for enum `Shape`
   --> $DIR/suggest-variants.rs:14:41
@@ -46,8 +48,9 @@ LL |     Shape::Squareee;
    |
 help: there is a variant with a similar name
    |
-LL |     Shape::Square { size: /* value */ };
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Shape::Squareee;
+LL +     Shape::Square { size: /* value */ };
+   |
 
 error[E0599]: no variant or associated item named `Circl` found for enum `Shape` in the current scope
   --> $DIR/suggest-variants.rs:16:12
@@ -60,8 +63,9 @@ LL |     Shape::Circl;
    |
 help: there is a variant with a similar name
    |
-LL |     Shape::Circle { radius: /* value */ };
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Shape::Circl;
+LL +     Shape::Circle { radius: /* value */ };
+   |
 
 error[E0599]: no variant or associated item named `Rombus` found for enum `Shape` in the current scope
   --> $DIR/suggest-variants.rs:17:12
diff --git a/tests/ui/suggestions/suggest_print_over_printf.stderr b/tests/ui/suggestions/suggest_print_over_printf.stderr
index 8a79745133c..48a50de0f7a 100644
--- a/tests/ui/suggestions/suggest_print_over_printf.stderr
+++ b/tests/ui/suggestions/suggest_print_over_printf.stderr
@@ -6,8 +6,9 @@ LL |     printf("%d", x);
    |
 help: you may have meant to use the `print` macro
    |
-LL |     print!("%d", x);
-   |     ~~~~~~
+LL -     printf("%d", x);
+LL +     print!("%d", x);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/type-ascription-instead-of-path-2.stderr b/tests/ui/suggestions/type-ascription-instead-of-path-2.stderr
index ba0682cda32..70e8f5b58ac 100644
--- a/tests/ui/suggestions/type-ascription-instead-of-path-2.stderr
+++ b/tests/ui/suggestions/type-ascription-instead-of-path-2.stderr
@@ -7,8 +7,9 @@ LL |     let _ = vec![Ok(2)].into_iter().collect:<Result<Vec<_>,_>>()?;
    = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
 help: maybe write a path separator here
    |
-LL |     let _ = vec![Ok(2)].into_iter().collect::<Result<Vec<_>,_>>()?;
-   |                                            ~~
+LL -     let _ = vec![Ok(2)].into_iter().collect:<Result<Vec<_>,_>>()?;
+LL +     let _ = vec![Ok(2)].into_iter().collect::<Result<Vec<_>,_>>()?;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr
index 56b6a69a283..5ba56d095f7 100644
--- a/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr
+++ b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr
@@ -6,8 +6,9 @@ LL |     let _: Vec<A:B> = A::B;
    |
 help: you might have meant to write a path instead of an associated type bound
    |
-LL |     let _: Vec<A::B> = A::B;
-   |                 ~~
+LL -     let _: Vec<A:B> = A::B;
+LL +     let _: Vec<A::B> = A::B;
+   |
 
 error[E0107]: struct takes at least 1 generic argument but 0 generic arguments were supplied
   --> $DIR/type-ascription-instead-of-path-in-type.rs:6:12
diff --git a/tests/ui/suggestions/type-mismatch-byte-literal.stderr b/tests/ui/suggestions/type-mismatch-byte-literal.stderr
index 3d27149f0dc..e96ead569d9 100644
--- a/tests/ui/suggestions/type-mismatch-byte-literal.stderr
+++ b/tests/ui/suggestions/type-mismatch-byte-literal.stderr
@@ -8,8 +8,9 @@ LL |     let _x: u8 = 'X';
    |
 help: if you meant to write a byte literal, prefix with `b`
    |
-LL |     let _x: u8 = b'X';
-   |                  ~~~~
+LL -     let _x: u8 = 'X';
+LL +     let _x: u8 = b'X';
+   |
 
 error[E0308]: mismatched types
   --> $DIR/type-mismatch-byte-literal.rs:11:9
@@ -26,8 +27,9 @@ LL | fn foo(_t: u8) {}
    |    ^^^ ------
 help: if you meant to write a byte literal, prefix with `b`
    |
-LL |     foo(b'#');
-   |         ~~~~
+LL -     foo('#');
+LL +     foo(b'#');
+   |
 
 error[E0308]: mismatched types
   --> $DIR/type-mismatch-byte-literal.rs:15:18
@@ -39,8 +41,9 @@ LL |     let _a: u8 = '\x20';
    |
 help: if you meant to write a byte literal, prefix with `b`
    |
-LL |     let _a: u8 = b'\x20';
-   |                  ~~~~~~~
+LL -     let _a: u8 = '\x20';
+LL +     let _a: u8 = b'\x20';
+   |
 
 error[E0308]: mismatched types
   --> $DIR/type-mismatch-byte-literal.rs:20:9
diff --git a/tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr b/tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr
index fb3573ee2a4..e60de526945 100644
--- a/tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr
+++ b/tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr
@@ -28,8 +28,9 @@ LL |     let _ = RGB { r, g, c };
    |
 help: a field with a similar name exists
    |
-LL |     let _ = RGB { r, g, b };
-   |                         ~
+LL -     let _ = RGB { r, g, c };
+LL +     let _ = RGB { r, g, b };
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/suggestions/unnamable-types.stderr b/tests/ui/suggestions/unnamable-types.stderr
index dc236af91f8..bcd1a905194 100644
--- a/tests/ui/suggestions/unnamable-types.stderr
+++ b/tests/ui/suggestions/unnamable-types.stderr
@@ -12,8 +12,9 @@ LL | static B: _ = "abc";
    |
 help: replace this with a fully-specified type
    |
-LL | static B: &str = "abc";
-   |           ~~~~
+LL - static B: _ = "abc";
+LL + static B: &str = "abc";
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
   --> $DIR/unnamable-types.rs:17:10
diff --git a/tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr b/tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr
index c0162ec2cab..ade3f3099a3 100644
--- a/tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr
+++ b/tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr
@@ -10,8 +10,9 @@ LL |     let _: f64 = 0..10;
             found struct `std::ops::Range<{integer}>`
 help: remove the unnecessary `.` operator for a floating point literal
    |
-LL |     let _: f64 = 0.10;
-   |                   ~
+LL -     let _: f64 = 0..10;
+LL +     let _: f64 = 0.10;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unnecessary_dot_for_floating_point_literal.rs:3:18
@@ -25,8 +26,9 @@ LL |     let _: f64 = 1..;
             found struct `std::ops::RangeFrom<{integer}>`
 help: remove the unnecessary `.` operator for a floating point literal
    |
-LL |     let _: f64 = 1.;
-   |                   ~
+LL -     let _: f64 = 1..;
+LL +     let _: f64 = 1.;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unnecessary_dot_for_floating_point_literal.rs:4:18
@@ -40,8 +42,9 @@ LL |     let _: f64 = ..10;
             found struct `RangeTo<{integer}>`
 help: remove the unnecessary `.` operator and add an integer part for a floating point literal
    |
-LL |     let _: f64 = 0.10;
-   |                  ~~
+LL -     let _: f64 = ..10;
+LL +     let _: f64 = 0.10;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unnecessary_dot_for_floating_point_literal.rs:5:18
diff --git a/tests/ui/test-attrs/inaccessible-test-modules.stderr b/tests/ui/test-attrs/inaccessible-test-modules.stderr
index 7635f579d66..39f69b164fb 100644
--- a/tests/ui/test-attrs/inaccessible-test-modules.stderr
+++ b/tests/ui/test-attrs/inaccessible-test-modules.stderr
@@ -12,8 +12,9 @@ LL | use test as y;
    |
 help: consider importing this module instead
    |
-LL | use test::test as y;
-   |     ~~~~~~~~~~~~~~~
+LL - use test as y;
+LL + use test::test as y;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/test-attrs/issue-109816.stderr b/tests/ui/test-attrs/issue-109816.stderr
index 6f5e3ae6b63..433421fff1b 100644
--- a/tests/ui/test-attrs/issue-109816.stderr
+++ b/tests/ui/test-attrs/issue-109816.stderr
@@ -9,7 +9,8 @@ LL |     struct A5(u32, u8);
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL |     #[cfg(test)]
+LL -     #[test]
+LL +     #[cfg(test)]
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/test-attrs/test-attr-non-associated-functions.stderr b/tests/ui/test-attrs/test-attr-non-associated-functions.stderr
index 3e3a951aff3..0ede0cbb97f 100644
--- a/tests/ui/test-attrs/test-attr-non-associated-functions.stderr
+++ b/tests/ui/test-attrs/test-attr-non-associated-functions.stderr
@@ -6,7 +6,8 @@ LL |     #[test]
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL |     #[cfg(test)]
+LL -     #[test]
+LL +     #[cfg(test)]
    |
 
 error: the `#[test]` attribute may only be used on a non-associated function
@@ -17,7 +18,8 @@ LL |     #[test]
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL |     #[cfg(test)]
+LL -     #[test]
+LL +     #[cfg(test)]
    |
 
 error: aborting due to 2 previous errors
diff --git a/tests/ui/test-attrs/test-on-not-fn.stderr b/tests/ui/test-attrs/test-on-not-fn.stderr
index 7a9913fbcfa..a282db01254 100644
--- a/tests/ui/test-attrs/test-on-not-fn.stderr
+++ b/tests/ui/test-attrs/test-on-not-fn.stderr
@@ -8,8 +8,9 @@ LL | mod test {}
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:6:1
@@ -27,8 +28,9 @@ LL | | }
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:20:1
@@ -40,8 +42,9 @@ LL | extern "C" {}
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:23:1
@@ -53,8 +56,9 @@ LL | trait Foo {}
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:26:1
@@ -66,8 +70,9 @@ LL | impl Foo for i32 {}
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:29:1
@@ -79,8 +84,9 @@ LL | const FOO: i32 = -1_i32;
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:32:1
@@ -92,8 +98,9 @@ LL | static BAR: u64 = 10_000_u64;
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:35:1
@@ -107,8 +114,9 @@ LL | | }
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:40:1
@@ -120,8 +128,9 @@ LL | struct NewI32(i32);
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:43:1
@@ -136,8 +145,9 @@ LL | | }
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:50:1
@@ -153,8 +163,9 @@ LL | | }
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 warning: the `#[test]` attribute may only be used on a non-associated function
   --> $DIR/test-on-not-fn.rs:61:1
@@ -166,8 +177,9 @@ LL | foo!();
    |
 help: replace with conditional compilation to make the item only exist when tests are being run
    |
-LL | #[cfg(test)]
-   | ~~~~~~~~~~~~
+LL - #[test]
+LL + #[cfg(test)]
+   |
 
 error: aborting due to 11 previous errors; 1 warning emitted
 
diff --git a/tests/ui/trait-bounds/argument-with-unnecessary-method-call.stderr b/tests/ui/trait-bounds/argument-with-unnecessary-method-call.stderr
index 49230c98a12..7d795581ea9 100644
--- a/tests/ui/trait-bounds/argument-with-unnecessary-method-call.stderr
+++ b/tests/ui/trait-bounds/argument-with-unnecessary-method-call.stderr
@@ -14,8 +14,9 @@ LL | fn qux(_: impl From<Bar>) {}
    |                ^^^^^^^^^ required by this bound in `qux`
 help: try using a fully qualified path to specify the expected types
    |
-LL |     qux(<Bar as Into<T>>::into(Bar));
-   |         +++++++++++++++++++++++   ~
+LL -     qux(Bar.into());
+LL +     qux(<Bar as Into<T>>::into(Bar));
+   |
 help: consider removing this method call, as the receiver has type `Bar` and `Bar: From<Bar>` trivially holds
    |
 LL -     qux(Bar.into());
diff --git a/tests/ui/traits/alias/ambiguous.stderr b/tests/ui/traits/alias/ambiguous.stderr
index 034e8a3fb7b..542ee190129 100644
--- a/tests/ui/traits/alias/ambiguous.stderr
+++ b/tests/ui/traits/alias/ambiguous.stderr
@@ -16,12 +16,14 @@ LL |         fn foo(&self) {}
    |         ^^^^^^^^^^^^^
 help: disambiguate the method for candidate #1
    |
-LL |     A::foo(&t);
-   |     ~~~~~~~~~~
+LL -     t.foo();
+LL +     A::foo(&t);
+   |
 help: disambiguate the method for candidate #2
    |
-LL |     B::foo(&t);
-   |     ~~~~~~~~~~
+LL -     t.foo();
+LL +     B::foo(&t);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/alias/dont-elaborate-non-self.stderr b/tests/ui/traits/alias/dont-elaborate-non-self.stderr
index 952f78dd3da..1d96a6a6994 100644
--- a/tests/ui/traits/alias/dont-elaborate-non-self.stderr
+++ b/tests/ui/traits/alias/dont-elaborate-non-self.stderr
@@ -8,8 +8,9 @@ LL | fn f<Fut>(a: dyn F<Fut>) {}
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL | fn f<Fut>(a: impl F<Fut>) {}
-   |              ~~~~
+LL - fn f<Fut>(a: dyn F<Fut>) {}
+LL + fn f<Fut>(a: impl F<Fut>) {}
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL | fn f<Fut>(a: &dyn F<Fut>) {}
diff --git a/tests/ui/traits/alias/self-in-const-generics.stderr b/tests/ui/traits/alias/self-in-const-generics.stderr
index b5538cb6e2f..ea201a2dd97 100644
--- a/tests/ui/traits/alias/self-in-const-generics.stderr
+++ b/tests/ui/traits/alias/self-in-const-generics.stderr
@@ -14,8 +14,9 @@ LL | trait BB = Bar<{ 2 + 1 }>;
    |       this trait is not dyn compatible...
 help: consider using an opaque type instead
    |
-LL | fn foo(x: &impl BB) {}
-   |            ~~~~
+LL - fn foo(x: &dyn BB) {}
+LL + fn foo(x: &impl BB) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/alias/self-in-generics.stderr b/tests/ui/traits/alias/self-in-generics.stderr
index afe4dff45ed..abeb11907ad 100644
--- a/tests/ui/traits/alias/self-in-generics.stderr
+++ b/tests/ui/traits/alias/self-in-generics.stderr
@@ -16,8 +16,9 @@ LL | pub trait SelfInput = Fn(&mut Self);
    |           this trait is not dyn compatible...
 help: consider using an opaque type instead
    |
-LL | pub fn f(_f: &impl SelfInput) {}
-   |               ~~~~
+LL - pub fn f(_f: &dyn SelfInput) {}
+LL + pub fn f(_f: &impl SelfInput) {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr
index afe34a125b2..af4e4214be2 100644
--- a/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr
+++ b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr
@@ -6,7 +6,8 @@ LL | struct Struct<S: Strings>(S);
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait Strings = Iterator<Item=String>;
+LL - type Strings = Iterator<Item=String>;
+LL + trait Strings = Iterator<Item=String>;
    |
 
 error: aborting due to 1 previous error
diff --git a/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr
index 0020f9e416d..23974c5b4aa 100644
--- a/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr
+++ b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr
@@ -9,12 +9,14 @@ LL | struct Foo<T> where T: Bar, <T as Bar>::Baz: String {
    |
 help: constrain the associated type to `String`
    |
-LL | struct Foo<T> where T: Bar, T: Bar<Baz = String> {
-   |                             ~~~~~~~~~~~~~~~~~~~~
+LL - struct Foo<T> where T: Bar, <T as Bar>::Baz: String {
+LL + struct Foo<T> where T: Bar, T: Bar<Baz = String> {
+   |
 help: a trait with a similar name exists
    |
-LL | struct Foo<T> where T: Bar, <T as Bar>::Baz: ToString {
-   |                                              ~~~~~~~~
+LL - struct Foo<T> where T: Bar, <T as Bar>::Baz: String {
+LL + struct Foo<T> where T: Bar, <T as Bar>::Baz: ToString {
+   |
 
 error[E0404]: expected trait, found struct `String`
   --> $DIR/assoc_type_bound_with_struct.rs:9:54
@@ -27,12 +29,14 @@ LL | struct Qux<'a, T> where T: Bar, <&'a T as Bar>::Baz: String {
    |
 help: constrain the associated type to `String`
    |
-LL | struct Qux<'a, T> where T: Bar, &'a T: Bar<Baz = String> {
-   |                                 ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - struct Qux<'a, T> where T: Bar, <&'a T as Bar>::Baz: String {
+LL + struct Qux<'a, T> where T: Bar, &'a T: Bar<Baz = String> {
+   |
 help: a trait with a similar name exists
    |
-LL | struct Qux<'a, T> where T: Bar, <&'a T as Bar>::Baz: ToString {
-   |                                                      ~~~~~~~~
+LL - struct Qux<'a, T> where T: Bar, <&'a T as Bar>::Baz: String {
+LL + struct Qux<'a, T> where T: Bar, <&'a T as Bar>::Baz: ToString {
+   |
 
 error[E0404]: expected trait, found struct `String`
   --> $DIR/assoc_type_bound_with_struct.rs:13:45
@@ -45,12 +49,14 @@ LL | fn foo<T: Bar>(_: T) where <T as Bar>::Baz: String {
    |
 help: constrain the associated type to `String`
    |
-LL | fn foo<T: Bar>(_: T) where T: Bar<Baz = String> {
-   |                            ~~~~~~~~~~~~~~~~~~~~
+LL - fn foo<T: Bar>(_: T) where <T as Bar>::Baz: String {
+LL + fn foo<T: Bar>(_: T) where T: Bar<Baz = String> {
+   |
 help: a trait with a similar name exists
    |
-LL | fn foo<T: Bar>(_: T) where <T as Bar>::Baz: ToString {
-   |                                             ~~~~~~~~
+LL - fn foo<T: Bar>(_: T) where <T as Bar>::Baz: String {
+LL + fn foo<T: Bar>(_: T) where <T as Bar>::Baz: ToString {
+   |
 
 error[E0404]: expected trait, found struct `String`
   --> $DIR/assoc_type_bound_with_struct.rs:16:57
@@ -63,12 +69,14 @@ LL | fn qux<'a, T: Bar>(_: &'a T) where <&'a T as Bar>::Baz: String {
    |
 help: constrain the associated type to `String`
    |
-LL | fn qux<'a, T: Bar>(_: &'a T) where &'a T: Bar<Baz = String> {
-   |                                    ~~~~~~~~~~~~~~~~~~~~~~~~
+LL - fn qux<'a, T: Bar>(_: &'a T) where <&'a T as Bar>::Baz: String {
+LL + fn qux<'a, T: Bar>(_: &'a T) where &'a T: Bar<Baz = String> {
+   |
 help: a trait with a similar name exists
    |
-LL | fn qux<'a, T: Bar>(_: &'a T) where <&'a T as Bar>::Baz: ToString {
-   |                                                         ~~~~~~~~
+LL - fn qux<'a, T: Bar>(_: &'a T) where <&'a T as Bar>::Baz: String {
+LL + fn qux<'a, T: Bar>(_: &'a T) where <&'a T as Bar>::Baz: ToString {
+   |
 
 error[E0405]: cannot find trait `Unresolved` in this scope
   --> $DIR/assoc_type_bound_with_struct.rs:19:31
diff --git a/tests/ui/traits/bound/not-on-bare-trait-2021.stderr b/tests/ui/traits/bound/not-on-bare-trait-2021.stderr
index e50186aff7e..b81aa54b88d 100644
--- a/tests/ui/traits/bound/not-on-bare-trait-2021.stderr
+++ b/tests/ui/traits/bound/not-on-bare-trait-2021.stderr
@@ -6,8 +6,9 @@ LL | fn foo(_x: Foo + Send) {
    |
 help: use a new generic type parameter, constrained by `Foo + Send`
    |
-LL | fn foo<T: Foo + Send>(_x: T) {
-   |       +++++++++++++++     ~
+LL - fn foo(_x: Foo + Send) {
+LL + fn foo<T: Foo + Send>(_x: T) {
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn foo(_x: impl Foo + Send) {
@@ -25,8 +26,9 @@ LL | fn bar(x: Foo) -> Foo {
    |
 help: use a new generic type parameter, constrained by `Foo`
    |
-LL | fn bar<T: Foo>(x: T) -> Foo {
-   |       ++++++++    ~
+LL - fn bar(x: Foo) -> Foo {
+LL + fn bar<T: Foo>(x: T) -> Foo {
+   |
 help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
    |
 LL | fn bar(x: impl Foo) -> Foo {
diff --git a/tests/ui/traits/bound/not-on-bare-trait.stderr b/tests/ui/traits/bound/not-on-bare-trait.stderr
index c2cb303b018..9028e66fa02 100644
--- a/tests/ui/traits/bound/not-on-bare-trait.stderr
+++ b/tests/ui/traits/bound/not-on-bare-trait.stderr
@@ -39,8 +39,9 @@ LL | fn bar(_x: (dyn Foo + Send)) {
    = help: unsized fn params are gated as an unstable feature
 help: you can use `impl Trait` as the argument type
    |
-LL | fn bar(_x: (impl Foo + Send)) {
-   |             ~~~~
+LL - fn bar(_x: (dyn Foo + Send)) {
+LL + fn bar(_x: (impl Foo + Send)) {
+   |
 help: function arguments must have a statically known size, borrowed types always have a known size
    |
 LL | fn bar(_x: (&(dyn Foo + Send))) {
diff --git a/tests/ui/traits/bound/not-on-struct.stderr b/tests/ui/traits/bound/not-on-struct.stderr
index 2de35dc7fc3..1fb5b1c2067 100644
--- a/tests/ui/traits/bound/not-on-struct.stderr
+++ b/tests/ui/traits/bound/not-on-struct.stderr
@@ -166,8 +166,9 @@ LL + fn g() -> Traitor {
    |
 help: a trait with a similar name exists
    |
-LL | fn g() -> Trait + 'static {
-   |           ~~~~~
+LL - fn g() -> Traitor + 'static {
+LL + fn g() -> Trait + 'static {
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/traits/const-traits/eval-bad-signature.stderr b/tests/ui/traits/const-traits/eval-bad-signature.stderr
index a64cf631743..52de5283f7f 100644
--- a/tests/ui/traits/const-traits/eval-bad-signature.stderr
+++ b/tests/ui/traits/const-traits/eval-bad-signature.stderr
@@ -13,8 +13,9 @@ LL |     fn value() -> u32;
               found signature `fn() -> i64`
 help: change the output type to match the trait
    |
-LL |     fn value() -> u32 {
-   |                   ~~~
+LL -     fn value() -> i64 {
+LL +     fn value() -> u32 {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
index 5af263de28c..c6e0c699520 100644
--- a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
+++ b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
@@ -24,8 +24,9 @@ LL |     fn from_residual(t: T) -> _ {
    |
 help: try replacing `_` with the type in the corresponding trait method signature
    |
-LL |     fn from_residual(t: T) -> T {
-   |                               ~
+LL -     fn from_residual(t: T) -> _ {
+LL +     fn from_residual(t: T) -> T {
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr
index 460595dd961..139488d79f1 100644
--- a/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr
+++ b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr
@@ -14,8 +14,9 @@ LL | impl<X> Method<u32> for Thing<X> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing<bool> as Method<T>>::method(thing, 42);
-   |     +++++++++++++++++++++++++++++++++++     ~
+LL -     thing.method(42);
+LL +     <Thing<bool> as Method<T>>::method(thing, 42);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/issue-28576.stderr b/tests/ui/traits/issue-28576.stderr
index ba61ce98554..50d7f8c56b2 100644
--- a/tests/ui/traits/issue-28576.stderr
+++ b/tests/ui/traits/issue-28576.stderr
@@ -38,8 +38,9 @@ LL | pub trait Bar: Foo<Assoc=()> {
    |           this trait is not dyn compatible...
 help: consider using an opaque type instead
    |
-LL |            impl Bar
-   |            ~~~~
+LL -            dyn Bar
+LL +            impl Bar
+   |
 
 error[E0277]: the size for values of type `Self` cannot be known at compilation time
   --> $DIR/issue-28576.rs:5:16
diff --git a/tests/ui/traits/issue-35869.stderr b/tests/ui/traits/issue-35869.stderr
index 503f9cee246..73cf9617854 100644
--- a/tests/ui/traits/issue-35869.stderr
+++ b/tests/ui/traits/issue-35869.stderr
@@ -13,8 +13,9 @@ LL |     fn foo(_: fn(u8) -> ());
               found signature `fn(fn(u16))`
 help: change the parameter type to match the trait
    |
-LL |     fn foo(_: fn(u8)) {}
-   |               ~~~~~~
+LL -     fn foo(_: fn(u16) -> ()) {}
+LL +     fn foo(_: fn(u8)) {}
+   |
 
 error[E0053]: method `bar` has an incompatible type for trait
   --> $DIR/issue-35869.rs:13:15
@@ -31,8 +32,9 @@ LL |     fn bar(_: Option<u8>);
               found signature `fn(Option<u16>)`
 help: change the parameter type to match the trait
    |
-LL |     fn bar(_: Option<u8>) {}
-   |               ~~~~~~~~~~
+LL -     fn bar(_: Option<u16>) {}
+LL +     fn bar(_: Option<u8>) {}
+   |
 
 error[E0053]: method `baz` has an incompatible type for trait
   --> $DIR/issue-35869.rs:15:15
@@ -49,8 +51,9 @@ LL |     fn baz(_: (u8, u16));
               found signature `fn((u16, _))`
 help: change the parameter type to match the trait
    |
-LL |     fn baz(_: (u8, u16)) {}
-   |               ~~~~~~~~~
+LL -     fn baz(_: (u16, u16)) {}
+LL +     fn baz(_: (u8, u16)) {}
+   |
 
 error[E0053]: method `qux` has an incompatible type for trait
   --> $DIR/issue-35869.rs:17:17
@@ -67,8 +70,9 @@ LL |     fn qux() -> u8;
               found signature `fn() -> u16`
 help: change the output type to match the trait
    |
-LL |     fn qux() -> u8 { 5u16 }
-   |                 ~~
+LL -     fn qux() -> u16 { 5u16 }
+LL +     fn qux() -> u8 { 5u16 }
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/traits/issue-50480.stderr b/tests/ui/traits/issue-50480.stderr
index 330b23b5755..d3c11238ede 100644
--- a/tests/ui/traits/issue-50480.stderr
+++ b/tests/ui/traits/issue-50480.stderr
@@ -47,8 +47,9 @@ LL | struct Bar<T>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
    |
 help: a type parameter with a similar name exists
    |
-LL | struct Bar<T>(T, T, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
-   |                  ~
+LL - struct Bar<T>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+LL + struct Bar<T>(T, T, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+   |
 help: you might be missing a type parameter
    |
 LL | struct Bar<T, N>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
diff --git a/tests/ui/traits/issue-77982.stderr b/tests/ui/traits/issue-77982.stderr
index 4907a6dd17a..edc7f56ea46 100644
--- a/tests/ui/traits/issue-77982.stderr
+++ b/tests/ui/traits/issue-77982.stderr
@@ -52,8 +52,9 @@ LL |     let ips: Vec<_> = (0..100_000).map(|_| u32::from(0u32.into())).collect(
            - impl From<u8> for u32;
 help: try using a fully qualified path to specify the expected types
    |
-LL |     let ips: Vec<_> = (0..100_000).map(|_| u32::from(<u32 as Into<T>>::into(0u32))).collect();
-   |                                                      +++++++++++++++++++++++    ~
+LL -     let ips: Vec<_> = (0..100_000).map(|_| u32::from(0u32.into())).collect();
+LL +     let ips: Vec<_> = (0..100_000).map(|_| u32::from(<u32 as Into<T>>::into(0u32))).collect();
+   |
 
 error[E0283]: type annotations needed for `Box<_>`
   --> $DIR/issue-77982.rs:39:9
diff --git a/tests/ui/traits/issue-78372.stderr b/tests/ui/traits/issue-78372.stderr
index 86234d15a5d..d4dfba4f039 100644
--- a/tests/ui/traits/issue-78372.stderr
+++ b/tests/ui/traits/issue-78372.stderr
@@ -19,8 +19,9 @@ LL | impl<T> DispatchFromDyn<Smaht<U, MISC>> for T {}
    |
 help: a type parameter with a similar name exists
    |
-LL | impl<T> DispatchFromDyn<Smaht<T, MISC>> for T {}
-   |                               ~
+LL - impl<T> DispatchFromDyn<Smaht<U, MISC>> for T {}
+LL + impl<T> DispatchFromDyn<Smaht<T, MISC>> for T {}
+   |
 help: you might be missing a type parameter
    |
 LL | impl<T, U> DispatchFromDyn<Smaht<U, MISC>> for T {}
diff --git a/tests/ui/traits/item-privacy.stderr b/tests/ui/traits/item-privacy.stderr
index 58c558d6685..ddead3fdfd3 100644
--- a/tests/ui/traits/item-privacy.stderr
+++ b/tests/ui/traits/item-privacy.stderr
@@ -11,8 +11,9 @@ LL |     S.a();
    = help: trait `method::A` which provides `a` is implemented but not reachable
 help: there is a method `b` with a similar name
    |
-LL |     S.b();
-   |       ~
+LL -     S.a();
+LL +     S.b();
+   |
 
 error[E0599]: no method named `b` found for struct `S` in the current scope
   --> $DIR/item-privacy.rs:68:7
@@ -33,8 +34,9 @@ LL + use method::B;
    |
 help: there is a method `c` with a similar name
    |
-LL |     S.c();
-   |       ~
+LL -     S.b();
+LL +     S.c();
+   |
 
 error[E0624]: method `a` is private
   --> $DIR/item-privacy.rs:72:7
@@ -104,8 +106,9 @@ LL |     S::A;
    = help: trait `assoc_const::A` which provides `A` is implemented but not reachable
 help: there is an associated constant `B` with a similar name
    |
-LL |     S::B;
-   |        ~
+LL -     S::A;
+LL +     S::B;
+   |
 
 error[E0599]: no associated item named `B` found for struct `S` in the current scope
   --> $DIR/item-privacy.rs:98:8
@@ -169,8 +172,9 @@ LL |     let _: S::A;
    |
 help: if there were a trait named `Example` with associated type `A` implemented for `S`, you could use the fully-qualified path
    |
-LL |     let _: <S as Example>::A;
-   |            ~~~~~~~~~~~~~~~~~
+LL -     let _: S::A;
+LL +     let _: <S as Example>::A;
+   |
 
 error[E0223]: ambiguous associated type
   --> $DIR/item-privacy.rs:116:12
diff --git a/tests/ui/traits/method-argument-mismatch-variance-ice-119867.stderr b/tests/ui/traits/method-argument-mismatch-variance-ice-119867.stderr
index e63cc522dd1..d535c39639f 100644
--- a/tests/ui/traits/method-argument-mismatch-variance-ice-119867.stderr
+++ b/tests/ui/traits/method-argument-mismatch-variance-ice-119867.stderr
@@ -6,8 +6,9 @@ LL |     fn deserialize(s: _) {}
    |
 help: try replacing `_` with the type in the corresponding trait method signature
    |
-LL |     fn deserialize(s: &ArchivedVec<T>) {}
-   |                       ~~~~~~~~~~~~~~~
+LL -     fn deserialize(s: _) {}
+LL +     fn deserialize(s: &ArchivedVec<T>) {}
+   |
 
 error[E0186]: method `deserialize` has a `&self` declaration in the trait, but not in the impl
   --> $DIR/method-argument-mismatch-variance-ice-119867.rs:8:5
diff --git a/tests/ui/traits/multidispatch-bad.stderr b/tests/ui/traits/multidispatch-bad.stderr
index 0bb095fb0e1..f605459ca8c 100644
--- a/tests/ui/traits/multidispatch-bad.stderr
+++ b/tests/ui/traits/multidispatch-bad.stderr
@@ -13,8 +13,9 @@ LL | fn test<T,U>(_: T, _: U)
    |    ^^^^            ----
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |     test(22i32, 44u32);
-   |                   ~~~
+LL -     test(22i32, 44i32);
+LL +     test(22i32, 44u32);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/next-solver/diagnostics/coerce-in-may-coerce.stderr b/tests/ui/traits/next-solver/diagnostics/coerce-in-may-coerce.stderr
index 9c28f7b0792..e4775e41ba1 100644
--- a/tests/ui/traits/next-solver/diagnostics/coerce-in-may-coerce.stderr
+++ b/tests/ui/traits/next-solver/diagnostics/coerce-in-may-coerce.stderr
@@ -13,8 +13,9 @@ LL | fn arg_error(x: <fn() as Mirror>::Assoc, y: ()) { todo!() }
    |    ^^^^^^^^^
 help: swap these arguments
    |
-LL |     arg_error(|| (), ());
-   |              ~~~~~~~~~~~
+LL -     arg_error((), || ());
+LL +     arg_error(|| (), ());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/non_lifetime_binders/missing-assoc-item.stderr b/tests/ui/traits/non_lifetime_binders/missing-assoc-item.stderr
index eecf8e88fb6..02295307cb2 100644
--- a/tests/ui/traits/non_lifetime_binders/missing-assoc-item.stderr
+++ b/tests/ui/traits/non_lifetime_binders/missing-assoc-item.stderr
@@ -15,8 +15,9 @@ LL |     for<B> B::Item: Send,
    |
 help: if there were a trait named `Example` with associated type `Item` implemented for `B`, you could use the fully-qualified path
    |
-LL |     for<B> <B as Example>::Item: Send,
-   |            ~~~~~~~~~~~~~~~~~~~~
+LL -     for<B> B::Item: Send,
+LL +     for<B> <B as Example>::Item: Send,
+   |
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/traits/non_lifetime_binders/type-match-with-late-bound.stderr b/tests/ui/traits/non_lifetime_binders/type-match-with-late-bound.stderr
index 40e16dde6e4..1117ee7efb3 100644
--- a/tests/ui/traits/non_lifetime_binders/type-match-with-late-bound.stderr
+++ b/tests/ui/traits/non_lifetime_binders/type-match-with-late-bound.stderr
@@ -25,8 +25,9 @@ LL |     for<F> F: 'a,
    |               ^^
 help: consider adding an explicit lifetime bound
    |
-LL |     for<F> F: 'a, !1_"F": 'a
-   |                 ~~~~~~~~~~~~
+LL -     for<F> F: 'a,
+LL +     for<F> F: 'a, !1_"F": 'a
+   |
 
 error[E0309]: the placeholder type `!1_"F"` may not live long enough
   --> $DIR/type-match-with-late-bound.rs:11:1
@@ -39,8 +40,9 @@ LL | {}
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     for<F> F: 'a, !1_"F": 'a
-   |                 ~~~~~~~~~~~~
+LL -     for<F> F: 'a,
+LL +     for<F> F: 'a, !1_"F": 'a
+   |
 
 error[E0309]: the placeholder type `!2_"F"` may not live long enough
   --> $DIR/type-match-with-late-bound.rs:11:1
@@ -53,8 +55,9 @@ LL | {}
    |
 help: consider adding an explicit lifetime bound
    |
-LL |     for<F> F: 'a, !2_"F": 'a
-   |                 ~~~~~~~~~~~~
+LL -     for<F> F: 'a,
+LL +     for<F> F: 'a, !2_"F": 'a
+   |
 
 error: aborting due to 3 previous errors; 1 warning emitted
 
diff --git a/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr
index 1d5489845ef..7a2db203ac3 100644
--- a/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr
+++ b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr
@@ -21,8 +21,9 @@ LL |     T: I<U>,
    |        ---- unsatisfied trait bound introduced here
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <A<B> as V<U>>::method(a);
-   |     +++++++++++++++++++++++ ~
+LL -     a.method();
+LL +     <A<B> as V<U>>::method(a);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/suggest-fully-qualified-closure.stderr b/tests/ui/traits/suggest-fully-qualified-closure.stderr
index a2c1115e673..8975d04d5b3 100644
--- a/tests/ui/traits/suggest-fully-qualified-closure.stderr
+++ b/tests/ui/traits/suggest-fully-qualified-closure.stderr
@@ -14,8 +14,9 @@ LL | impl MyTrait<u64> for Qqq{
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Qqq as MyTrait<T>>::lol::<_>(&q, ||());
-   |     +++++++++++++++++++++++++++++++ ~
+LL -     q.lol(||());
+LL +     <Qqq as MyTrait<T>>::lol::<_>(&q, ||());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr
index 841acb5ffd3..0996227e697 100644
--- a/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr
+++ b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr
@@ -14,8 +14,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(&thing);
-   |     ++++++++++++++++++++++++++++++     ~
+LL -     thing.method();
+LL +     <Thing as Method<T>>::method(&thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:46:11
@@ -33,8 +34,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::mut_method(&mut thing);
-   |     +++++++++++++++++++++++++++++++++++++      ~
+LL -     thing.mut_method();
+LL +     <Thing as Method<T>>::mut_method(&mut thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:47:11
@@ -52,8 +54,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(&thing);
-   |     +++++++++++++++++++++++++++++++++++     ~
+LL -     thing.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(&thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:50:14
@@ -71,8 +74,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(&deref_to);
-   |     ++++++++++++++++++++++++++++++        ~
+LL -     deref_to.method();
+LL +     <Thing as Method<T>>::method(&deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:51:14
@@ -90,8 +94,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::mut_method(&mut deref_to);
-   |     +++++++++++++++++++++++++++++++++++++         ~
+LL -     deref_to.mut_method();
+LL +     <Thing as Method<T>>::mut_method(&mut deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:52:14
@@ -109,8 +114,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(&deref_to);
-   |     +++++++++++++++++++++++++++++++++++        ~
+LL -     deref_to.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(&deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:55:20
@@ -128,8 +134,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(&deref_deref_to);
-   |     ++++++++++++++++++++++++++++++              ~
+LL -     deref_deref_to.method();
+LL +     <Thing as Method<T>>::method(&deref_deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:56:20
@@ -147,8 +154,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::mut_method(&mut deref_deref_to);
-   |     +++++++++++++++++++++++++++++++++++++               ~
+LL -     deref_deref_to.mut_method();
+LL +     <Thing as Method<T>>::mut_method(&mut deref_deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-with-adjustment.rs:57:20
@@ -166,8 +174,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(&deref_deref_to);
-   |     +++++++++++++++++++++++++++++++++++              ~
+LL -     deref_deref_to.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(&deref_deref_to);
+   |
 
 error: aborting due to 9 previous errors
 
diff --git a/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr
index 1865d81bad1..629904815f3 100644
--- a/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr
+++ b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr
@@ -14,8 +14,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(ref_thing);
-   |     +++++++++++++++++++++++++++++         ~
+LL -     ref_thing.method();
+LL +     <Thing as Method<T>>::method(ref_thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:46:15
@@ -33,8 +34,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(ref_thing);
-   |     ++++++++++++++++++++++++++++++++++         ~
+LL -     ref_thing.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(ref_thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:49:15
@@ -52,8 +54,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(mut_thing);
-   |     +++++++++++++++++++++++++++++         ~
+LL -     mut_thing.method();
+LL +     <Thing as Method<T>>::method(mut_thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:50:15
@@ -71,8 +74,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::mut_method(mut_thing);
-   |     +++++++++++++++++++++++++++++++++         ~
+LL -     mut_thing.mut_method();
+LL +     <Thing as Method<T>>::mut_method(mut_thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:51:15
@@ -90,8 +94,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(mut_thing);
-   |     ++++++++++++++++++++++++++++++++++         ~
+LL -     mut_thing.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(mut_thing);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:54:14
@@ -109,8 +114,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(deref_to);
-   |     +++++++++++++++++++++++++++++        ~
+LL -     deref_to.method();
+LL +     <Thing as Method<T>>::method(deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:55:14
@@ -128,8 +134,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::mut_method(deref_to);
-   |     +++++++++++++++++++++++++++++++++        ~
+LL -     deref_to.mut_method();
+LL +     <Thing as Method<T>>::mut_method(deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:56:14
@@ -147,8 +154,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(deref_to);
-   |     ++++++++++++++++++++++++++++++++++        ~
+LL -     deref_to.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:59:20
@@ -166,8 +174,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::method(deref_deref_to);
-   |     +++++++++++++++++++++++++++++              ~
+LL -     deref_deref_to.method();
+LL +     <Thing as Method<T>>::method(deref_deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:60:20
@@ -185,8 +194,9 @@ LL | impl Method<u32> for Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <Thing as Method<T>>::mut_method(deref_deref_to);
-   |     +++++++++++++++++++++++++++++++++              ~
+LL -     deref_deref_to.mut_method();
+LL +     <Thing as Method<T>>::mut_method(deref_deref_to);
+   |
 
 error[E0283]: type annotations needed
   --> $DIR/suggest-fully-qualified-path-without-adjustment.rs:61:20
@@ -204,8 +214,9 @@ LL | impl MethodRef<u32> for &Thing {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 help: try using a fully qualified path to specify the expected types
    |
-LL |     <&Thing as MethodRef<T>>::by_self(deref_deref_to);
-   |     ++++++++++++++++++++++++++++++++++              ~
+LL -     deref_deref_to.by_self();
+LL +     <&Thing as MethodRef<T>>::by_self(deref_deref_to);
+   |
 
 error: aborting due to 11 previous errors
 
diff --git a/tests/ui/traits/trait-upcasting/subtrait-method.stderr b/tests/ui/traits/trait-upcasting/subtrait-method.stderr
index a7658a7bcd3..a16daa11d6f 100644
--- a/tests/ui/traits/trait-upcasting/subtrait-method.stderr
+++ b/tests/ui/traits/trait-upcasting/subtrait-method.stderr
@@ -12,8 +12,9 @@ LL | trait Baz: Bar {
    | ^^^^^^^^^^^^^^
 help: there is a method `a` with a similar name
    |
-LL |     bar.a();
-   |         ~
+LL -     bar.c();
+LL +     bar.a();
+   |
 
 error[E0599]: no method named `b` found for reference `&dyn Foo` in the current scope
   --> $DIR/subtrait-method.rs:57:9
@@ -29,8 +30,9 @@ LL | trait Bar: Foo {
    | ^^^^^^^^^^^^^^
 help: there is a method `a` with a similar name
    |
-LL |     foo.a();
-   |         ~
+LL -     foo.b();
+LL +     foo.a();
+   |
 
 error[E0599]: no method named `c` found for reference `&dyn Foo` in the current scope
   --> $DIR/subtrait-method.rs:59:9
@@ -46,8 +48,9 @@ LL | trait Baz: Bar {
    | ^^^^^^^^^^^^^^
 help: there is a method `a` with a similar name
    |
-LL |     foo.a();
-   |         ~
+LL -     foo.c();
+LL +     foo.a();
+   |
 
 error[E0599]: no method named `b` found for reference `&dyn Foo` in the current scope
   --> $DIR/subtrait-method.rs:63:9
@@ -63,8 +66,9 @@ LL | trait Bar: Foo {
    | ^^^^^^^^^^^^^^
 help: there is a method `a` with a similar name
    |
-LL |     foo.a();
-   |         ~
+LL -     foo.b();
+LL +     foo.a();
+   |
 
 error[E0599]: no method named `c` found for reference `&dyn Foo` in the current scope
   --> $DIR/subtrait-method.rs:65:9
@@ -80,8 +84,9 @@ LL | trait Baz: Bar {
    | ^^^^^^^^^^^^^^
 help: there is a method `a` with a similar name
    |
-LL |     foo.a();
-   |         ~
+LL -     foo.c();
+LL +     foo.a();
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/traits/wrong-mul-method-signature.stderr b/tests/ui/traits/wrong-mul-method-signature.stderr
index e30b61622ae..c85775f4887 100644
--- a/tests/ui/traits/wrong-mul-method-signature.stderr
+++ b/tests/ui/traits/wrong-mul-method-signature.stderr
@@ -8,8 +8,9 @@ LL |     fn mul(self, s: &f64) -> Vec1 {
               found signature `fn(Vec1, &_) -> Vec1`
 help: change the parameter type to match the trait
    |
-LL |     fn mul(self, s: f64) -> Vec1 {
-   |                     ~~~
+LL -     fn mul(self, s: &f64) -> Vec1 {
+LL +     fn mul(self, s: f64) -> Vec1 {
+   |
 
 error[E0053]: method `mul` has an incompatible type for trait
   --> $DIR/wrong-mul-method-signature.rs:33:21
@@ -21,8 +22,9 @@ LL |     fn mul(self, s: f64) -> Vec2 {
               found signature `fn(Vec2, f64) -> Vec2`
 help: change the parameter type to match the trait
    |
-LL |     fn mul(self, s: Vec2) -> Vec2 {
-   |                     ~~~~
+LL -     fn mul(self, s: f64) -> Vec2 {
+LL +     fn mul(self, s: Vec2) -> Vec2 {
+   |
 
 error[E0053]: method `mul` has an incompatible type for trait
   --> $DIR/wrong-mul-method-signature.rs:52:29
@@ -34,8 +36,9 @@ LL |     fn mul(self, s: f64) -> f64 {
               found signature `fn(Vec3, _) -> f64`
 help: change the output type to match the trait
    |
-LL |     fn mul(self, s: f64) -> i32 {
-   |                             ~~~
+LL -     fn mul(self, s: f64) -> f64 {
+LL +     fn mul(self, s: f64) -> i32 {
+   |
 
 error[E0308]: mismatched types
   --> $DIR/wrong-mul-method-signature.rs:63:45
diff --git a/tests/ui/transmutability/assoc-bound.stderr b/tests/ui/transmutability/assoc-bound.stderr
index b3c7680bf29..4ff67bd636a 100644
--- a/tests/ui/transmutability/assoc-bound.stderr
+++ b/tests/ui/transmutability/assoc-bound.stderr
@@ -12,8 +12,9 @@ LL |     type AssocB: std::mem::TransmuteFrom<()>;
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `B::AssocB`
 help: consider further restricting the associated type
    |
-LL |     T: A, <T as A>::AssocA: TransmuteFrom<(), Assume { alignment: false, lifetimes: false, safety: false, validity: false }>
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T: A,
+LL +     T: A, <T as A>::AssocA: TransmuteFrom<(), Assume { alignment: false, lifetimes: false, safety: false, validity: false }>
+   |
 
 error[E0277]: `()` cannot be safely transmuted into `<&i32 as A>::AssocA`
   --> $DIR/assoc-bound.rs:24:19
diff --git a/tests/ui/tuple/tuple-index-not-tuple.stderr b/tests/ui/tuple/tuple-index-not-tuple.stderr
index a267e41b1bc..faf9a313478 100644
--- a/tests/ui/tuple/tuple-index-not-tuple.stderr
+++ b/tests/ui/tuple/tuple-index-not-tuple.stderr
@@ -6,8 +6,9 @@ LL |     origin.0;
    |
 help: a field with a similar name exists
    |
-LL |     origin.x;
-   |            ~
+LL -     origin.0;
+LL +     origin.x;
+   |
 
 error[E0609]: no field `0` on type `Empty`
   --> $DIR/tuple-index-not-tuple.rs:8:11
diff --git a/tests/ui/tuple/tuple-index-out-of-bounds.stderr b/tests/ui/tuple/tuple-index-out-of-bounds.stderr
index 96090435d06..8b3c835c3e3 100644
--- a/tests/ui/tuple/tuple-index-out-of-bounds.stderr
+++ b/tests/ui/tuple/tuple-index-out-of-bounds.stderr
@@ -6,8 +6,9 @@ LL |     origin.2;
    |
 help: a field with a similar name exists
    |
-LL |     origin.0;
-   |            ~
+LL -     origin.2;
+LL +     origin.0;
+   |
 
 error[E0609]: no field `2` on type `({integer}, {integer})`
   --> $DIR/tuple-index-out-of-bounds.rs:12:11
diff --git a/tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr b/tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr
index 482a314db60..5039ae8f288 100644
--- a/tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr
+++ b/tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr
@@ -43,8 +43,9 @@ LL | impl<T> Enum<T> {
    | --------------- `Self` is on type `Enum` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `Enum` instead if you want to specify its type parameters
    |
-LL |         Enum::<()>::TSVariant(());
-   |         ~~~~
+LL -         Self::<()>::TSVariant(());
+LL +         Enum::<()>::TSVariant(());
+   |
 
 error[E0308]: mismatched types
   --> $DIR/enum-variant-generic-args.rs:17:31
@@ -83,8 +84,9 @@ LL | impl<T> Enum<T> {
    | --------------- `Self` is on type `Enum` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `Enum` instead if you want to specify its type parameters
    |
-LL |         Enum::<()>::TSVariant::<()>(());
-   |         ~~~~
+LL -         Self::<()>::TSVariant::<()>(());
+LL +         Enum::<()>::TSVariant::<()>(());
+   |
 
 error[E0109]: type arguments are not allowed on this type
   --> $DIR/enum-variant-generic-args.rs:20:33
@@ -151,8 +153,9 @@ LL | impl<T> Enum<T> {
    | --------------- `Self` is on type `Enum` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `Enum` instead if you want to specify its type parameters
    |
-LL |         Enum::<()>::SVariant { v: () };
-   |         ~~~~
+LL -         Self::<()>::SVariant { v: () };
+LL +         Enum::<()>::SVariant { v: () };
+   |
 
 error[E0308]: mismatched types
   --> $DIR/enum-variant-generic-args.rs:31:35
@@ -184,8 +187,9 @@ LL | impl<T> Enum<T> {
    | --------------- `Self` is on type `Enum` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `Enum` instead if you want to specify its type parameters
    |
-LL |         Enum::<()>::SVariant::<()> { v: () };
-   |         ~~~~
+LL -         Self::<()>::SVariant::<()> { v: () };
+LL +         Enum::<()>::SVariant::<()> { v: () };
+   |
 
 error[E0109]: type arguments are not allowed on this type
   --> $DIR/enum-variant-generic-args.rs:34:32
@@ -240,8 +244,9 @@ LL | impl<T> Enum<T> {
    | --------------- `Self` is on type `Enum` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `Enum` instead if you want to specify its type parameters
    |
-LL |         Enum::<()>::UVariant;
-   |         ~~~~
+LL -         Self::<()>::UVariant;
+LL +         Enum::<()>::UVariant;
+   |
 
 error[E0109]: type arguments are not allowed on self type
   --> $DIR/enum-variant-generic-args.rs:45:16
@@ -261,8 +266,9 @@ LL | impl<T> Enum<T> {
    | --------------- `Self` is on type `Enum` in this `impl`
 help: the `Self` type doesn't accept type parameters, use the concrete type's name `Enum` instead if you want to specify its type parameters
    |
-LL |         Enum::<()>::UVariant::<()>;
-   |         ~~~~
+LL -         Self::<()>::UVariant::<()>;
+LL +         Enum::<()>::UVariant::<()>;
+   |
 
 error[E0109]: type arguments are not allowed on this type
   --> $DIR/enum-variant-generic-args.rs:45:32
@@ -279,6 +285,13 @@ LL |     Enum::<()>::TSVariant::<()>(());
    |                 ---------   ^^ type argument not allowed
    |                 |
    |                 not allowed on tuple variant `TSVariant`
+   |
+   = note: generic arguments are not allowed on both an enum and its variant's path segments simultaneously; they are only valid in one place or the other
+help: remove the generics arguments from one of the path segments
+   |
+LL -     Enum::<()>::TSVariant::<()>(());
+LL +     Enum::<()>::TSVariant(());
+   |
 
 error[E0109]: type arguments are not allowed on this type
   --> $DIR/enum-variant-generic-args.rs:57:24
@@ -348,7 +361,12 @@ LL |     Enum::<()>::SVariant::<()> { v: () };
    |                 |
    |                 not allowed on variant `SVariant`
    |
-   = note: enum variants can't have type parameters
+   = note: generic arguments are not allowed on both an enum and its variant's path segments simultaneously; they are only valid in one place or the other
+help: remove the generics arguments from one of the path segments
+   |
+LL -     Enum::<()>::SVariant::<()> { v: () };
+LL +     Enum::<()>::SVariant { v: () };
+   |
 
 error[E0109]: type arguments are not allowed on this type
   --> $DIR/enum-variant-generic-args.rs:75:23
@@ -445,6 +463,13 @@ LL |     Enum::<()>::UVariant::<()>;
    |                 --------   ^^ type argument not allowed
    |                 |
    |                 not allowed on unit variant `UVariant`
+   |
+   = note: generic arguments are not allowed on both an enum and its variant's path segments simultaneously; they are only valid in one place or the other
+help: remove the generics arguments from one of the path segments
+   |
+LL -     Enum::<()>::UVariant::<()>;
+LL +     Enum::<()>::UVariant;
+   |
 
 error[E0109]: type arguments are not allowed on this type
   --> $DIR/enum-variant-generic-args.rs:93:23
diff --git a/tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr b/tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr
index 371f5b10988..c4deafd4f6b 100644
--- a/tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr
+++ b/tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr
@@ -11,8 +11,9 @@ LL |     V(u8)
    |     ^
 help: provide the argument
    |
-LL |     <E>::V(/* u8 */);
-   |           ~~~~~~~~~~
+LL -     <E>::V();
+LL +     <E>::V(/* u8 */);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/enum-variant-priority-higher-than-other-inherent.rs:22:17
diff --git a/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr b/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr
index 714b4fd7d25..1ed78cbc0da 100644
--- a/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr
+++ b/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr
@@ -28,8 +28,9 @@ LL |     let Alias::Braced(..) = panic!();
    |
 help: use the struct variant pattern syntax
    |
-LL |     let Alias::Braced {} = panic!();
-   |                       ~~
+LL -     let Alias::Braced(..) = panic!();
+LL +     let Alias::Braced {} = panic!();
+   |
 
 error[E0618]: expected function, found enum variant `Alias::Unit`
   --> $DIR/incorrect-variant-form-through-alias-caught.rs:15:5
diff --git a/tests/ui/type-alias-impl-trait/unnameable_type.stderr b/tests/ui/type-alias-impl-trait/unnameable_type.stderr
index 5b331c5660d..25dc41df419 100644
--- a/tests/ui/type-alias-impl-trait/unnameable_type.stderr
+++ b/tests/ui/type-alias-impl-trait/unnameable_type.stderr
@@ -16,8 +16,9 @@ LL |         fn dont_define_this(_private: Private) {}
               found signature `fn(MyPrivate)`
 help: change the parameter type to match the trait
    |
-LL |     fn dont_define_this(private: Private) {
-   |                                  ~~~~~~~
+LL -     fn dont_define_this(private: MyPrivate) {
+LL +     fn dont_define_this(private: Private) {
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.eager.stderr b/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.eager.stderr
index e891ff10fda..b0b183d652b 100644
--- a/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.eager.stderr
+++ b/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.eager.stderr
@@ -17,8 +17,9 @@ LL | type AssokOf<T> = T::Assok;
    |
 help: consider fully qualifying and renaming the associated type
    |
-LL | type AssokOf<T> = <T as Trait>::Assoc;
-   |                   +  +++++++++  ~~~~~
+LL - type AssokOf<T> = T::Assok;
+LL + type AssokOf<T> = <T as Trait>::Assoc;
+   |
 
 error[E0220]: associated type `Proj` not found for `T`
   --> $DIR/unresolved-assoc-ty-suggest-trait.rs:22:21
diff --git a/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.lazy.stderr b/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.lazy.stderr
index 885c6ec9d8e..79b9db1edf7 100644
--- a/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.lazy.stderr
+++ b/tests/ui/type-alias/unresolved-assoc-ty-suggest-trait.lazy.stderr
@@ -21,8 +21,9 @@ LL | type AssokOf<T: Trait> = T::Assok;
    |               +++++++
 help: ...and changing the associated type name
    |
-LL | type AssokOf<T> = T::Assoc;
-   |                      ~~~~~
+LL - type AssokOf<T> = T::Assok;
+LL + type AssokOf<T> = T::Assoc;
+   |
 
 error[E0220]: associated type `Proj` not found for `T`
   --> $DIR/unresolved-assoc-ty-suggest-trait.rs:22:21
diff --git a/tests/ui/type-inference/or_else-multiple-type-params.stderr b/tests/ui/type-inference/or_else-multiple-type-params.stderr
index 3176a2d490e..9bcd07f8bf1 100644
--- a/tests/ui/type-inference/or_else-multiple-type-params.stderr
+++ b/tests/ui/type-inference/or_else-multiple-type-params.stderr
@@ -6,8 +6,8 @@ LL |         .or_else(|err| {
    |
 help: try giving this closure an explicit return type
    |
-LL |         .or_else(|err| -> Result<Child, F> {
-   |                        +++++++++++++++++++
+LL |         .or_else(|err| -> Result<_, F> {
+   |                        +++++++++++++++
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/type/issue-100584.stderr b/tests/ui/type/issue-100584.stderr
index e1db14d1f00..7cbab154066 100644
--- a/tests/ui/type/issue-100584.stderr
+++ b/tests/ui/type/issue-100584.stderr
@@ -19,8 +19,9 @@ LL |     let _ = format!("{xyza}");
    |             ++++++++        +
 help: if this is intentional, prefix it with an underscore
    |
-LL | fn foo(_xyza: &str) {
-   |        ~~~~~
+LL - fn foo(xyza: &str) {
+LL + fn foo(_xyza: &str) {
+   |
 
 error: unused variable: `xyza`
   --> $DIR/issue-100584.rs:7:9
@@ -37,8 +38,9 @@ LL |     let _ = format!("aaa{xyza}bbb");
    |             ++++++++              +
 help: if this is intentional, prefix it with an underscore
    |
-LL | fn foo3(_xyza: &str) {
-   |         ~~~~~
+LL - fn foo3(xyza: &str) {
+LL + fn foo3(_xyza: &str) {
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/type/issue-103271.stderr b/tests/ui/type/issue-103271.stderr
index f4dac51b2b4..1b84033291a 100644
--- a/tests/ui/type/issue-103271.stderr
+++ b/tests/ui/type/issue-103271.stderr
@@ -6,8 +6,9 @@ LL |     let iter_fun = <&[u32]>::iter;
    |
 help: the function `iter` is implemented on `[u32]`
    |
-LL |     let iter_fun = <[u32]>::iter;
-   |                     ~~~~~
+LL -     let iter_fun = <&[u32]>::iter;
+LL +     let iter_fun = <[u32]>::iter;
+   |
 
 error[E0599]: no function or associated item named `iter` found for reference `&[u32]` in the current scope
   --> $DIR/issue-103271.rs:10:33
@@ -17,8 +18,9 @@ LL |     let iter_fun2 = <(&[u32])>::iter;
    |
 help: the function `iter` is implemented on `[u32]`
    |
-LL |     let iter_fun2 = <([u32])>::iter;
-   |                       ~~~~~
+LL -     let iter_fun2 = <(&[u32])>::iter;
+LL +     let iter_fun2 = <([u32])>::iter;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/type/pattern_types/assoc_const.default.stderr b/tests/ui/type/pattern_types/assoc_const.default.stderr
index abda40e4681..8cff0cee7b9 100644
--- a/tests/ui/type/pattern_types/assoc_const.default.stderr
+++ b/tests/ui/type/pattern_types/assoc_const.default.stderr
@@ -1,36 +1,38 @@
-error: constant expression depends on a generic parameter
-  --> $DIR/assoc_const.rs:17:19
+error: generic parameters may not be used in const operations
+  --> $DIR/assoc_const.rs:17:41
    |
 LL | fn foo<T: Foo>(_: pattern_type!(u32 is <T as Foo>::START..=<T as Foo>::END)) {}
-   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                                         ^ cannot perform const operation using `T`
    |
-   = note: this may fail depending on what value the parameter takes
+   = note: type parameters may not be used in const expressions
+   = help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
 
-error: constant expression depends on a generic parameter
-  --> $DIR/assoc_const.rs:17:19
+error: generic parameters may not be used in const operations
+  --> $DIR/assoc_const.rs:17:61
    |
 LL | fn foo<T: Foo>(_: pattern_type!(u32 is <T as Foo>::START..=<T as Foo>::END)) {}
-   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                                                             ^ cannot perform const operation using `T`
    |
-   = note: this may fail depending on what value the parameter takes
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+   = note: type parameters may not be used in const expressions
+   = help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
 
-error: constant expression depends on a generic parameter
-  --> $DIR/assoc_const.rs:20:19
+error: generic parameters may not be used in const operations
+  --> $DIR/assoc_const.rs:20:40
    |
 LL | fn bar<T: Foo>(_: pattern_type!(u32 is T::START..=T::END)) {}
-   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                                        ^^^^^^^^ cannot perform const operation using `T`
    |
-   = note: this may fail depending on what value the parameter takes
+   = note: type parameters may not be used in const expressions
+   = help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
 
-error: constant expression depends on a generic parameter
-  --> $DIR/assoc_const.rs:20:19
+error: generic parameters may not be used in const operations
+  --> $DIR/assoc_const.rs:20:51
    |
 LL | fn bar<T: Foo>(_: pattern_type!(u32 is T::START..=T::END)) {}
-   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                                                   ^^^^^^ cannot perform const operation using `T`
    |
-   = note: this may fail depending on what value the parameter takes
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+   = note: type parameters may not be used in const expressions
+   = help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/type/pattern_types/assoc_const.rs b/tests/ui/type/pattern_types/assoc_const.rs
index af0f7e4cbf3..90508801990 100644
--- a/tests/ui/type/pattern_types/assoc_const.rs
+++ b/tests/ui/type/pattern_types/assoc_const.rs
@@ -1,8 +1,8 @@
 #![feature(pattern_types)]
 #![feature(pattern_type_macro)]
-#![cfg_attr(const_arg, feature(generic_const_exprs))]
+#![cfg_attr(const_arg, feature(generic_const_exprs, generic_pattern_types))]
 #![expect(incomplete_features)]
-
+// gate-test-generic_pattern_types line to the test file.
 //@ revisions: default const_arg
 
 //@[const_arg] check-pass
@@ -15,10 +15,10 @@ trait Foo {
 }
 
 fn foo<T: Foo>(_: pattern_type!(u32 is <T as Foo>::START..=<T as Foo>::END)) {}
-//[default]~^ ERROR: constant expression depends on a generic parameter
-//[default]~| ERROR: constant expression depends on a generic parameter
+//[default]~^ ERROR: generic parameters may not be used in const operations
+//[default]~| ERROR: generic parameters may not be used in const operations
 fn bar<T: Foo>(_: pattern_type!(u32 is T::START..=T::END)) {}
-//[default]~^ ERROR: constant expression depends on a generic parameter
-//[default]~| ERROR: constant expression depends on a generic parameter
+//[default]~^ ERROR: generic parameters may not be used in const operations
+//[default]~| ERROR: generic parameters may not be used in const operations
 
 fn main() {}
diff --git a/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.rs b/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.rs
index 0f10bf8ce62..c28fda6f91a 100644
--- a/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.rs
+++ b/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.rs
@@ -5,7 +5,7 @@
 //@ normalize-stderr: "(error: internal compiler error: [^:]+):\d+:\d+: " -> "$1:LL:CC: "
 //@ rustc-env:RUST_BACKTRACE=0
 
-#![feature(pattern_types, pattern_type_macro)]
+#![feature(pattern_types, pattern_type_macro, generic_const_exprs)]
 #![allow(internal_features)]
 
 type Pat<const START: u32, const END: u32> =
diff --git a/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.stderr b/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.stderr
index fbe80a19863..ffc6068eb17 100644
--- a/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.stderr
+++ b/tests/ui/type/pattern_types/bad_const_generics_args_on_const_param.stderr
@@ -1,4 +1,11 @@
-error: internal compiler error: compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs:LL:CC: try_lower_anon_const_lit: received const param which shouldn't be possible
+warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/bad_const_generics_args_on_const_param.rs:8:47
+   |
+LL | #![feature(pattern_types, pattern_type_macro, generic_const_exprs)]
+   |                                               ^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
+   = error: internal compiler error: compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs:LL:CC: try_lower_anon_const_lit: received const param which shouldn't be possible
   --> $DIR/bad_const_generics_args_on_const_param.rs:12:36
    |
 LL |     std::pat::pattern_type!(u32 is START::<(), i32, 2>..=END::<_, Assoc = ()>);
@@ -10,5 +17,5 @@ query stack during panic:
 #0 [type_of] expanding type alias `Pat`
 #1 [check_well_formed] checking that `Pat` is well-formed
 ... and 2 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
-error: aborting due to 1 previous error
+error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/type/pattern_types/const_block.rs b/tests/ui/type/pattern_types/const_block.rs
index 49c87f4fa0d..ed19b10671a 100644
--- a/tests/ui/type/pattern_types/const_block.rs
+++ b/tests/ui/type/pattern_types/const_block.rs
@@ -1,10 +1,10 @@
 #![feature(pattern_types)]
 #![feature(pattern_type_macro)]
 #![feature(inline_const_pat)]
+//@ check-pass
 
 use std::pat::pattern_type;
 
 fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-//~^ ERROR: cycle
 
 fn main() {}
diff --git a/tests/ui/type/pattern_types/const_block.stderr b/tests/ui/type/pattern_types/const_block.stderr
deleted file mode 100644
index 82b616105af..00000000000
--- a/tests/ui/type/pattern_types/const_block.stderr
+++ /dev/null
@@ -1,72 +0,0 @@
-error[E0391]: cycle detected when evaluating type-level constant
-  --> $DIR/const_block.rs:7:36
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                    ^^^^^^^^^^^^^^
-   |
-note: ...which requires const-evaluating + checking `bar::{constant#2}`...
-  --> $DIR/const_block.rs:7:36
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                    ^^^^^^^^^^^^^^
-note: ...which requires caching mir of `bar::{constant#2}` for CTFE...
-  --> $DIR/const_block.rs:7:36
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                    ^^^^^^^^^^^^^^
-note: ...which requires elaborating drops for `bar::{constant#2}`...
-  --> $DIR/const_block.rs:7:36
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                    ^^^^^^^^^^^^^^
-note: ...which requires borrow-checking `bar::{constant#2}`...
-  --> $DIR/const_block.rs:7:36
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                    ^^^^^^^^^^^^^^
-note: ...which requires borrow-checking `bar::{constant#0}`...
-  --> $DIR/const_block.rs:7:41
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                         ^^^^^^^^^
-note: ...which requires promoting constants in MIR for `bar::{constant#0}`...
-  --> $DIR/const_block.rs:7:41
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                         ^^^^^^^^^
-note: ...which requires const checking `bar::{constant#0}`...
-  --> $DIR/const_block.rs:7:41
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                         ^^^^^^^^^
-note: ...which requires building MIR for `bar::{constant#0}`...
-  --> $DIR/const_block.rs:7:41
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                         ^^^^^^^^^
-note: ...which requires match-checking `bar::{constant#0}`...
-  --> $DIR/const_block.rs:7:41
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                         ^^^^^^^^^
-note: ...which requires type-checking `bar::{constant#0}`...
-  --> $DIR/const_block.rs:7:41
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   |                                         ^^^^^^^^^
-note: ...which requires type-checking `bar`...
-  --> $DIR/const_block.rs:7:1
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which again requires evaluating type-level constant, completing the cycle
-note: cycle used when checking that `bar` is well-formed
-  --> $DIR/const_block.rs:7:1
-   |
-LL | fn bar(x: pattern_type!(u32 is 0..=const{ 5 + 5 })) {}
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   = 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 1 previous error
-
-For more information about this error, try `rustc --explain E0391`.
diff --git a/tests/ui/type/pattern_types/const_generics.rs b/tests/ui/type/pattern_types/const_generics.rs
index 5cef0dc0305..79d46c010d7 100644
--- a/tests/ui/type/pattern_types/const_generics.rs
+++ b/tests/ui/type/pattern_types/const_generics.rs
@@ -1,7 +1,7 @@
 //@ check-pass
 
-#![feature(pattern_types)]
-#![feature(pattern_type_macro)]
+#![feature(pattern_types, generic_pattern_types, pattern_type_macro)]
+#![expect(incomplete_features)]
 
 use std::pat::pattern_type;
 
diff --git a/tests/ui/type/pattern_types/feature-gate-pattern_types.rs b/tests/ui/type/pattern_types/feature-gate-pattern_types.rs
index b90ba478402..b4f4bd656f5 100644
--- a/tests/ui/type/pattern_types/feature-gate-pattern_types.rs
+++ b/tests/ui/type/pattern_types/feature-gate-pattern_types.rs
@@ -12,3 +12,4 @@ type Positive = pattern_type!(i32 is 0..);
 //~^ use of unstable library feature `pattern_type_macro`
 type Always = pattern_type!(Option<u32> is Some(_));
 //~^ use of unstable library feature `pattern_type_macro`
+//~| ERROR pattern not supported in pattern types
diff --git a/tests/ui/type/pattern_types/feature-gate-pattern_types.stderr b/tests/ui/type/pattern_types/feature-gate-pattern_types.stderr
index 69239d68bdc..12508bcb54a 100644
--- a/tests/ui/type/pattern_types/feature-gate-pattern_types.stderr
+++ b/tests/ui/type/pattern_types/feature-gate-pattern_types.stderr
@@ -48,6 +48,12 @@ LL | type Always = pattern_type!(Option<u32> is Some(_));
    = help: add `#![feature(pattern_type_macro)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error: aborting due to 5 previous errors
+error: pattern not supported in pattern types
+  --> $DIR/feature-gate-pattern_types.rs:13:44
+   |
+LL | type Always = pattern_type!(Option<u32> is Some(_));
+   |                                            ^^^^^^^
+
+error: aborting due to 6 previous errors
 
 For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/type/pattern_types/feature-gate-pattern_types2.rs b/tests/ui/type/pattern_types/feature-gate-pattern_types2.rs
index 50c355c8de6..c6b4b325fa3 100644
--- a/tests/ui/type/pattern_types/feature-gate-pattern_types2.rs
+++ b/tests/ui/type/pattern_types/feature-gate-pattern_types2.rs
@@ -1,5 +1,4 @@
 //@ compile-flags: -Zno-analysis
-//@ check-pass
 
 #![feature(pattern_type_macro)]
 
@@ -10,3 +9,4 @@ type Percent = pattern_type!(u32 is 0..=100);
 type Negative = pattern_type!(i32 is ..=0);
 type Positive = pattern_type!(i32 is 0..);
 type Always = pattern_type!(Option<u32> is Some(_));
+//~^ ERROR: pattern not supported in pattern types
diff --git a/tests/ui/type/pattern_types/feature-gate-pattern_types2.stderr b/tests/ui/type/pattern_types/feature-gate-pattern_types2.stderr
new file mode 100644
index 00000000000..81bf9dea0e2
--- /dev/null
+++ b/tests/ui/type/pattern_types/feature-gate-pattern_types2.stderr
@@ -0,0 +1,8 @@
+error: pattern not supported in pattern types
+  --> $DIR/feature-gate-pattern_types2.rs:11:44
+   |
+LL | type Always = pattern_type!(Option<u32> is Some(_));
+   |                                            ^^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/type/pattern_types/pattern_type_mismatch.stderr b/tests/ui/type/pattern_types/pattern_type_mismatch.stderr
index 19b0c1059c8..aaf41ed6eba 100644
--- a/tests/ui/type/pattern_types/pattern_type_mismatch.stderr
+++ b/tests/ui/type/pattern_types/pattern_type_mismatch.stderr
@@ -6,8 +6,9 @@ LL | const BAD_NESTING4: pattern_type!(u8 is 'a'..='a') = todo!();
    |
 help: if you meant to write a byte literal, prefix with `b`
    |
-LL | const BAD_NESTING4: pattern_type!(u8 is b'a'..='a') = todo!();
-   |                                         ~~~~
+LL - const BAD_NESTING4: pattern_type!(u8 is 'a'..='a') = todo!();
+LL + const BAD_NESTING4: pattern_type!(u8 is b'a'..='a') = todo!();
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern_type_mismatch.rs:8:47
@@ -17,8 +18,9 @@ LL | const BAD_NESTING4: pattern_type!(u8 is 'a'..='a') = todo!();
    |
 help: if you meant to write a byte literal, prefix with `b`
    |
-LL | const BAD_NESTING4: pattern_type!(u8 is 'a'..=b'a') = todo!();
-   |                                               ~~~~
+LL - const BAD_NESTING4: pattern_type!(u8 is 'a'..='a') = todo!();
+LL + const BAD_NESTING4: pattern_type!(u8 is 'a'..=b'a') = todo!();
+   |
 
 error[E0308]: mismatched types
   --> $DIR/pattern_type_mismatch.rs:12:43
diff --git a/tests/ui/type/pattern_types/transmute.rs b/tests/ui/type/pattern_types/transmute.rs
index cb76b2b938d..43dd62a19e7 100644
--- a/tests/ui/type/pattern_types/transmute.rs
+++ b/tests/ui/type/pattern_types/transmute.rs
@@ -1,5 +1,5 @@
-#![feature(pattern_types)]
-#![feature(pattern_type_macro)]
+#![feature(pattern_types, pattern_type_macro, generic_pattern_types)]
+#![expect(incomplete_features)]
 
 use std::pat::pattern_type;
 
diff --git a/tests/ui/type/type-ascription-instead-of-statement-end.stderr b/tests/ui/type/type-ascription-instead-of-statement-end.stderr
index 34c88642323..34759b413d8 100644
--- a/tests/ui/type/type-ascription-instead-of-statement-end.stderr
+++ b/tests/ui/type/type-ascription-instead-of-statement-end.stderr
@@ -7,8 +7,9 @@ LL |     println!("test"):
    = note: if you meant to annotate an expression with a type, the type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
 help: use a semicolon instead
    |
-LL |     println!("test");
-   |                     ~
+LL -     println!("test"):
+LL +     println!("test");
+   |
 
 error: expected one of `.`, `;`, `?`, `}`, or an operator, found `:`
   --> $DIR/type-ascription-instead-of-statement-end.rs:7:21
diff --git a/tests/ui/type/type-ascription-with-fn-call.stderr b/tests/ui/type/type-ascription-with-fn-call.stderr
index 2691f10cf3e..4222762373d 100644
--- a/tests/ui/type/type-ascription-with-fn-call.stderr
+++ b/tests/ui/type/type-ascription-with-fn-call.stderr
@@ -7,8 +7,9 @@ LL |     f()  :
    = note: if you meant to annotate an expression with a type, the type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
 help: use a semicolon instead
    |
-LL |     f()  ;
-   |          ~
+LL -     f()  :
+LL +     f()  ;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/type/type-check/issue-41314.stderr b/tests/ui/type/type-check/issue-41314.stderr
index 2a089029b0a..6a1b22c542c 100644
--- a/tests/ui/type/type-check/issue-41314.stderr
+++ b/tests/ui/type/type-check/issue-41314.stderr
@@ -6,8 +6,9 @@ LL |         X::Y { number } => {}
    |
 help: use the tuple variant pattern syntax instead
    |
-LL |         X::Y(number) => {}
-   |             ~~~~~~~~
+LL -         X::Y { number } => {}
+LL +         X::Y(number) => {}
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/type/type-check/point-at-inference-3.stderr b/tests/ui/type/type-check/point-at-inference-3.stderr
index 663799e9f86..58460aefdf8 100644
--- a/tests/ui/type/type-check/point-at-inference-3.stderr
+++ b/tests/ui/type/type-check/point-at-inference-3.stderr
@@ -15,8 +15,9 @@ note: method defined here
   --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     v.push(1i32);
-   |             ~~~
+LL -     v.push(1u32);
+LL +     v.push(1i32);
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/type/type-check/point-at-inference-4.stderr b/tests/ui/type/type-check/point-at-inference-4.stderr
index 544c25934ec..52d603c5980 100644
--- a/tests/ui/type/type-check/point-at-inference-4.stderr
+++ b/tests/ui/type/type-check/point-at-inference-4.stderr
@@ -11,8 +11,9 @@ LL |     fn infer(&self, a: A, b: B) {}
    |        ^^^^^              ----
 help: provide the argument
    |
-LL |     s.infer(0i32, /* b */);
-   |            ~~~~~~~~~~~~~~~
+LL -     s.infer(0i32);
+LL +     s.infer(0i32, /* b */);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/point-at-inference-4.rs:18:24
@@ -31,8 +32,9 @@ LL |     let t: S<u32, _> = s;
               found struct `S<i32, _>`
 help: change the type of the numeric literal from `i32` to `u32`
    |
-LL |     s.infer(0u32);
-   |              ~~~
+LL -     s.infer(0i32);
+LL +     s.infer(0u32);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/type/type-dependent-def-issue-49241.stderr b/tests/ui/type/type-dependent-def-issue-49241.stderr
index cf372dc5968..9b395af8c13 100644
--- a/tests/ui/type/type-dependent-def-issue-49241.stderr
+++ b/tests/ui/type/type-dependent-def-issue-49241.stderr
@@ -6,8 +6,9 @@ LL |     const l: usize = v.count();
    |
 help: consider using `let` instead of `const`
    |
-LL |     let l: usize = v.count();
-   |     ~~~
+LL -     const l: usize = v.count();
+LL +     let l: usize = v.count();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/type/wrong-call-return-type-due-to-generic-arg.stderr b/tests/ui/type/wrong-call-return-type-due-to-generic-arg.stderr
index fbe6bfeebb1..53920bc9e02 100644
--- a/tests/ui/type/wrong-call-return-type-due-to-generic-arg.stderr
+++ b/tests/ui/type/wrong-call-return-type-due-to-generic-arg.stderr
@@ -13,8 +13,9 @@ LL | fn wrong_arg_type(x: u32) -> u32 {
    |    ^^^^^^^^^^^^^^ ------
 help: change the type of the numeric literal from `u16` to `u32`
    |
-LL |     let x = wrong_arg_type(0u32);
-   |                             ~~~
+LL -     let x = wrong_arg_type(0u16);
+LL +     let x = wrong_arg_type(0u32);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/wrong-call-return-type-due-to-generic-arg.rs:19:30
@@ -52,8 +53,9 @@ LL | fn function<T>(x: T, y: bool) -> T {
    |    ^^^^^^^^    ----  -------
 help: change the type of the numeric literal from `u32` to `u16`
    |
-LL |     let x: u16 = function(0u16, 0u8);
-   |                            ~~~
+LL -     let x: u16 = function(0u32, 0u8);
+LL +     let x: u16 = function(0u16, 0u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/wrong-call-return-type-due-to-generic-arg.rs:25:27
@@ -77,8 +79,9 @@ LL | fn function<T>(x: T, y: bool) -> T {
    |    ^^^^^^^^    ----
 help: change the type of the numeric literal from `u32` to `u16`
    |
-LL |     let x: u16 = function(0u16, true);
-   |                            ~~~
+LL -     let x: u16 = function(0u32, true);
+LL +     let x: u16 = function(0u16, true);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/wrong-call-return-type-due-to-generic-arg.rs:26:32
@@ -102,8 +105,9 @@ LL |     fn method<T>(&self, x: T) -> T {
    |        ^^^^^^           ----
 help: change the type of the numeric literal from `u32` to `u16`
    |
-LL |     let x: u16 = (S {}).method(0u16);
-   |                                 ~~~
+LL -     let x: u16 = (S {}).method(0u32);
+LL +     let x: u16 = (S {}).method(0u16);
+   |
 
 error[E0308]: arguments to this function are incorrect
   --> $DIR/wrong-call-return-type-due-to-generic-arg.rs:27:5
diff --git a/tests/ui/typeck/attempted-access-non-fatal.stderr b/tests/ui/typeck/attempted-access-non-fatal.stderr
index bff669727a1..03334759baf 100644
--- a/tests/ui/typeck/attempted-access-non-fatal.stderr
+++ b/tests/ui/typeck/attempted-access-non-fatal.stderr
@@ -18,8 +18,9 @@ LL |     let _ = 0.f;
    |
 help: if intended to be a floating point literal, consider adding a `0` after the period and a `f32` suffix
    |
-LL |     let _ = 0.0f32;
-   |               ~~~~
+LL -     let _ = 0.f;
+LL +     let _ = 0.0f32;
+   |
 
 error[E0610]: `{integer}` is a primitive type and therefore doesn't have fields
   --> $DIR/attempted-access-non-fatal.rs:7:15
@@ -29,8 +30,9 @@ LL |     let _ = 2.l;
    |
 help: if intended to be a floating point literal, consider adding a `0` after the period and a `f64` suffix
    |
-LL |     let _ = 2.0f64;
-   |               ~~~~
+LL -     let _ = 2.l;
+LL +     let _ = 2.0f64;
+   |
 
 error[E0610]: `{integer}` is a primitive type and therefore doesn't have fields
   --> $DIR/attempted-access-non-fatal.rs:8:16
@@ -40,8 +42,9 @@ LL |     let _ = 12.F;
    |
 help: if intended to be a floating point literal, consider adding a `0` after the period and a `f32` suffix
    |
-LL |     let _ = 12.0f32;
-   |                ~~~~
+LL -     let _ = 12.F;
+LL +     let _ = 12.0f32;
+   |
 
 error[E0610]: `{integer}` is a primitive type and therefore doesn't have fields
   --> $DIR/attempted-access-non-fatal.rs:9:16
@@ -51,8 +54,9 @@ LL |     let _ = 34.L;
    |
 help: if intended to be a floating point literal, consider adding a `0` after the period and a `f64` suffix
    |
-LL |     let _ = 34.0f64;
-   |                ~~~~
+LL -     let _ = 34.L;
+LL +     let _ = 34.0f64;
+   |
 
 error: aborting due to 6 previous errors
 
diff --git a/tests/ui/typeck/check-args-on-fn-err-2.stderr b/tests/ui/typeck/check-args-on-fn-err-2.stderr
index 301bb88dbac..ccc006a902d 100644
--- a/tests/ui/typeck/check-args-on-fn-err-2.stderr
+++ b/tests/ui/typeck/check-args-on-fn-err-2.stderr
@@ -8,8 +8,9 @@ LL |     a((), 1i32 == 2u32);
    |
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     a((), 1i32 == 2i32);
-   |                    ~~~
+LL -     a((), 1i32 == 2u32);
+LL +     a((), 1i32 == 2i32);
+   |
 
 error[E0425]: cannot find function `a` in this scope
   --> $DIR/check-args-on-fn-err-2.rs:2:5
diff --git a/tests/ui/typeck/cyclic_type_ice.stderr b/tests/ui/typeck/cyclic_type_ice.stderr
index 36715b4ee5d..4dc02a53c02 100644
--- a/tests/ui/typeck/cyclic_type_ice.stderr
+++ b/tests/ui/typeck/cyclic_type_ice.stderr
@@ -22,8 +22,9 @@ LL |     let f = |_, _| ();
    |             ^^^^^^
 help: provide the argument
    |
-LL |     f(/*  */, /*  */);
-   |      ~~~~~~~~~~~~~~~~
+LL -     f(f);
+LL +     f(/*  */, /*  */);
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/typeck/deref-multi.stderr b/tests/ui/typeck/deref-multi.stderr
index 4346e273d0d..02513853c48 100644
--- a/tests/ui/typeck/deref-multi.stderr
+++ b/tests/ui/typeck/deref-multi.stderr
@@ -34,8 +34,9 @@ LL |     &x
    |
 help: consider removing the `&` and dereferencing the borrow instead
    |
-LL |     *x
-   |     ~
+LL -     &x
+LL +     *x
+   |
 
 error[E0308]: mismatched types
   --> $DIR/deref-multi.rs:17:5
@@ -49,8 +50,9 @@ LL |     &x
            found reference `&Box<i32>`
 help: consider removing the `&` and dereferencing the borrow instead
    |
-LL |     *x
-   |     ~
+LL -     &x
+LL +     *x
+   |
 
 error[E0308]: mismatched types
   --> $DIR/deref-multi.rs:22:5
diff --git a/tests/ui/typeck/ice-self-mismatch-const-generics.stderr b/tests/ui/typeck/ice-self-mismatch-const-generics.stderr
index 068cf3ee903..8b820668129 100644
--- a/tests/ui/typeck/ice-self-mismatch-const-generics.stderr
+++ b/tests/ui/typeck/ice-self-mismatch-const-generics.stderr
@@ -12,8 +12,9 @@ LL |         Self { thing }
               found struct `GenericStruct<0, _>`
 help: use the type name directly
    |
-LL |         GenericStruct::<1, T> { thing }
-   |         ~~~~~~~~~~~~~~~~~~~~~
+LL -         Self { thing }
+LL +         GenericStruct::<1, T> { thing }
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ice-self-mismatch-const-generics.rs:20:9
@@ -29,8 +30,9 @@ LL |         Self { 0: thing }
               found struct `GenericStruct2<0, _>`
 help: use the type name directly
    |
-LL |         GenericStruct2::<1, T> { 0: thing }
-   |         ~~~~~~~~~~~~~~~~~~~~~~
+LL -         Self { 0: thing }
+LL +         GenericStruct2::<1, T> { 0: thing }
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/typeck/ice-unexpected-region-123863.stderr b/tests/ui/typeck/ice-unexpected-region-123863.stderr
index 742096f3861..8a4d767c143 100644
--- a/tests/ui/typeck/ice-unexpected-region-123863.stderr
+++ b/tests/ui/typeck/ice-unexpected-region-123863.stderr
@@ -38,8 +38,9 @@ LL |     Inner::concat_strs::<"a">::A
    |
 help: if there were a trait named `Example` with associated type `concat_strs` implemented for `Inner<_>`, you could use the fully-qualified path
    |
-LL |     <Inner<_> as Example>::concat_strs::A
-   |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     Inner::concat_strs::<"a">::A
+LL +     <Inner<_> as Example>::concat_strs::A
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/typeck/issue-104582.stderr b/tests/ui/typeck/issue-104582.stderr
index 61b6b23642c..704579698b9 100644
--- a/tests/ui/typeck/issue-104582.stderr
+++ b/tests/ui/typeck/issue-104582.stderr
@@ -6,8 +6,9 @@ LL |     let my_var: String(String?);
    |
 help: if you meant to express that the type might not contain a value, use the `Option` wrapper type
    |
-LL |     let my_var: String(Option<String>);
-   |                        +++++++      ~
+LL -     let my_var: String(String?);
+LL +     let my_var: String(Option<String>);
+   |
 
 error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
   --> $DIR/issue-104582.rs:2:17
@@ -17,8 +18,9 @@ LL |     let my_var: String(String?);
    |
 help: use angle brackets instead
    |
-LL |     let my_var: String<String?>;
-   |                       ~       ~
+LL -     let my_var: String(String?);
+LL +     let my_var: String<String?>;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/typeck/issue-110052.stderr b/tests/ui/typeck/issue-110052.stderr
index 5eb10d9a30e..649fc8429b9 100644
--- a/tests/ui/typeck/issue-110052.stderr
+++ b/tests/ui/typeck/issue-110052.stderr
@@ -6,10 +6,12 @@ LL |     for<'iter> dyn Validator<<&'iter I>::Item>:,
    |
 help: use fully-qualified syntax
    |
-LL |     for<'iter> dyn Validator<<&'iter I as IntoAsyncIterator>::Item>:,
-   |                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LL |     for<'iter> dyn Validator<<&'iter I as IntoIterator>::Item>:,
-   |                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     for<'iter> dyn Validator<<&'iter I>::Item>:,
+LL +     for<'iter> dyn Validator<<&'iter I as IntoAsyncIterator>::Item>:,
+   |
+LL -     for<'iter> dyn Validator<<&'iter I>::Item>:,
+LL +     for<'iter> dyn Validator<<&'iter I as IntoIterator>::Item>:,
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr b/tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr
index f81736245f3..18a992b2f34 100644
--- a/tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr
+++ b/tests/ui/typeck/issue-112252-ptr-arithmetics-help.stderr
@@ -8,8 +8,9 @@ LL |     let _a = _ptr1 + 5;
    |
 help: consider using `wrapping_add` or `add` for pointer + {integer}
    |
-LL |     let _a = _ptr1.wrapping_add(5);
-   |                   ~~~~~~~~~~~~~~ +
+LL -     let _a = _ptr1 + 5;
+LL +     let _a = _ptr1.wrapping_add(5);
+   |
 
 error[E0369]: cannot subtract `{integer}` from `*const u32`
   --> $DIR/issue-112252-ptr-arithmetics-help.rs:7:20
@@ -21,8 +22,9 @@ LL |     let _b = _ptr1 - 5;
    |
 help: consider using `wrapping_sub` or `sub` for pointer - {integer}
    |
-LL |     let _b = _ptr1.wrapping_sub(5);
-   |                   ~~~~~~~~~~~~~~ +
+LL -     let _b = _ptr1 - 5;
+LL +     let _b = _ptr1.wrapping_sub(5);
+   |
 
 error[E0369]: cannot subtract `*const u32` from `*const u32`
   --> $DIR/issue-112252-ptr-arithmetics-help.rs:8:20
@@ -34,8 +36,9 @@ LL |     let _c = _ptr2 - _ptr1;
    |
 help: consider using `offset_from` for pointer - pointer if the pointers point to the same allocation
    |
-LL |     let _c = unsafe { _ptr2.offset_from(_ptr1) };
-   |              ++++++++      ~~~~~~~~~~~~~     +++
+LL -     let _c = _ptr2 - _ptr1;
+LL +     let _c = unsafe { _ptr2.offset_from(_ptr1) };
+   |
 
 error[E0608]: cannot index into a value of type `*const u32`
   --> $DIR/issue-112252-ptr-arithmetics-help.rs:9:19
@@ -45,8 +48,9 @@ LL |     let _d = _ptr1[5];
    |
 help: consider using `wrapping_add` or `add` for indexing into raw pointer
    |
-LL |     let _d = _ptr1.wrapping_add(5);
-   |                   ~~~~~~~~~~~~~~ ~
+LL -     let _d = _ptr1[5];
+LL +     let _d = _ptr1.wrapping_add(5);
+   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/typeck/issue-114529-illegal-break-with-value.stderr b/tests/ui/typeck/issue-114529-illegal-break-with-value.stderr
index 731f234c162..de993df722c 100644
--- a/tests/ui/typeck/issue-114529-illegal-break-with-value.stderr
+++ b/tests/ui/typeck/issue-114529-illegal-break-with-value.stderr
@@ -8,8 +8,9 @@ LL |             break 9;
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |             break;
-   |             ~~~~~
+LL -             break 9;
+LL +             break;
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/issue-114529-illegal-break-with-value.rs:16:13
@@ -21,8 +22,9 @@ LL |             break v;
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |             break;
-   |             ~~~~~
+LL -             break v;
+LL +             break;
+   |
 
 error[E0571]: `break` with value from a `while` loop
   --> $DIR/issue-114529-illegal-break-with-value.rs:22:9
@@ -36,8 +38,11 @@ LL | |         });
    |
 help: use `break` on its own without a value inside this `while` loop
    |
-LL |         break;
-   |         ~~~~~
+LL -         break (|| {
+LL -             let local = 9;
+LL -         });
+LL +         break;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/typeck/issue-29181.stderr b/tests/ui/typeck/issue-29181.stderr
index 53addf2fe4d..e73c3e51881 100644
--- a/tests/ui/typeck/issue-29181.stderr
+++ b/tests/ui/typeck/issue-29181.stderr
@@ -12,8 +12,9 @@ LL |     let _ = |x: f64| x * 2.0.exp();
    |
 help: you must specify a concrete type for this numeric value, like `f32`
    |
-LL |     let _ = |x: f64| x * 2.0_f32.exp();
-   |                          ~~~~~~~
+LL -     let _ = |x: f64| x * 2.0.exp();
+LL +     let _ = |x: f64| x * 2.0_f32.exp();
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/typeck/issue-53712.stderr b/tests/ui/typeck/issue-53712.stderr
index ffaf5cde1d7..16a7ce0ea62 100644
--- a/tests/ui/typeck/issue-53712.stderr
+++ b/tests/ui/typeck/issue-53712.stderr
@@ -6,8 +6,9 @@ LL |     arr.0;
    |
 help: instead of using tuple indexing, use array indexing
    |
-LL |     arr[0];
-   |        ~ +
+LL -     arr.0;
+LL +     arr[0];
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr b/tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr
index b9bdf6f9a39..ed0e4eb9ece 100644
--- a/tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr
+++ b/tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr
@@ -6,16 +6,19 @@ LL |     let foo::Foo {} = foo::Foo::default();
    |
 help: include the missing field in the pattern and ignore the inaccessible fields
    |
-LL |     let foo::Foo { visible, .. } = foo::Foo::default();
-   |                  ~~~~~~~~~~~~~~~
+LL -     let foo::Foo {} = foo::Foo::default();
+LL +     let foo::Foo { visible, .. } = foo::Foo::default();
+   |
 help: if you don't care about this missing field, you can explicitly ignore it
    |
-LL |     let foo::Foo { visible: _, .. } = foo::Foo::default();
-   |                  ~~~~~~~~~~~~~~~~~~
+LL -     let foo::Foo {} = foo::Foo::default();
+LL +     let foo::Foo { visible: _, .. } = foo::Foo::default();
+   |
 help: or always ignore missing fields here
    |
-LL |     let foo::Foo { .. } = foo::Foo::default();
-   |                  ~~~~~~
+LL -     let foo::Foo {} = foo::Foo::default();
+LL +     let foo::Foo { .. } = foo::Foo::default();
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeck/method-chain-gats.stderr b/tests/ui/typeck/method-chain-gats.stderr
index 63383792214..902255a28a6 100644
--- a/tests/ui/typeck/method-chain-gats.stderr
+++ b/tests/ui/typeck/method-chain-gats.stderr
@@ -19,8 +19,9 @@ LL |         Self::Base<B>: Functor<B>;
    |                        ^^^^^^^^^^ required by this bound in `Functor::fmap`
 help: consider further restricting the associated type
    |
-LL |     T::Base<B>: Functor<B, Base<C> = T::Base<C>>, <T as Base>::Base<C>: Functor<C>
-   |                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     T::Base<B>: Functor<B, Base<C> = T::Base<C>>,
+LL +     T::Base<B>: Functor<B, Base<C> = T::Base<C>>, <T as Base>::Base<C>: Functor<C>
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeck/mismatched-map-under-self.stderr b/tests/ui/typeck/mismatched-map-under-self.stderr
index 59de00a58bb..fd6b3093ec9 100644
--- a/tests/ui/typeck/mismatched-map-under-self.stderr
+++ b/tests/ui/typeck/mismatched-map-under-self.stderr
@@ -13,8 +13,9 @@ LL |     fn values(&self) -> Self::Values;
               found signature `fn(Option<_>)`
 help: change the self-receiver type to match the trait
    |
-LL |     fn values(&self) -> Self::Values {
-   |               ~~~~~
+LL -     fn values(self) -> Self::Values {
+LL +     fn values(&self) -> Self::Values {
+   |
 
 error[E0631]: type mismatch in function arguments
   --> $DIR/mismatched-map-under-self.rs:12:18
diff --git a/tests/ui/typeck/ptr-null-mutability-suggestions.stderr b/tests/ui/typeck/ptr-null-mutability-suggestions.stderr
index 2912977a461..aa1e79ac0d4 100644
--- a/tests/ui/typeck/ptr-null-mutability-suggestions.stderr
+++ b/tests/ui/typeck/ptr-null-mutability-suggestions.stderr
@@ -15,8 +15,9 @@ LL | fn expecting_null_mut(_: *mut u8) {}
    |    ^^^^^^^^^^^^^^^^^^ ----------
 help: consider using `core::ptr::null_mut` instead
    |
-LL |     expecting_null_mut(core::ptr::null_mut());
-   |                        ~~~~~~~~~~~~~~~~~~~~~
+LL -     expecting_null_mut(ptr::null());
+LL +     expecting_null_mut(core::ptr::null_mut());
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeck/remove-semi-but-confused-char.stderr b/tests/ui/typeck/remove-semi-but-confused-char.stderr
index 2d0b53a60ce..7f5c0758dd1 100644
--- a/tests/ui/typeck/remove-semi-but-confused-char.stderr
+++ b/tests/ui/typeck/remove-semi-but-confused-char.stderr
@@ -6,8 +6,9 @@ LL |     num * num;
    |
 help: Unicode character ';' (Greek Question Mark) looks like ';' (Semicolon), but it is not
    |
-LL |     num * num;
-   |              ~
+LL -     num * num;
+LL +     num * num;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/remove-semi-but-confused-char.rs:5:28
diff --git a/tests/ui/typeck/struct-enum-wrong-args.stderr b/tests/ui/typeck/struct-enum-wrong-args.stderr
index e58d162901e..d1003fbb6b3 100644
--- a/tests/ui/typeck/struct-enum-wrong-args.stderr
+++ b/tests/ui/typeck/struct-enum-wrong-args.stderr
@@ -38,8 +38,9 @@ note: tuple variant defined here
   --> $SRC_DIR/core/src/result.rs:LL:COL
 help: provide the argument
    |
-LL |     let _ = Ok(/* value */);
-   |               ~~~~~~~~~~~~~
+LL -     let _ = Ok();
+LL +     let _ = Ok(/* value */);
+   |
 
 error[E0061]: this struct takes 1 argument but 0 arguments were supplied
   --> $DIR/struct-enum-wrong-args.rs:9:13
@@ -54,8 +55,9 @@ LL | struct Wrapper(i32);
    |        ^^^^^^^
 help: provide the argument
    |
-LL |     let _ = Wrapper(/* i32 */);
-   |                    ~~~~~~~~~~~
+LL -     let _ = Wrapper();
+LL +     let _ = Wrapper(/* i32 */);
+   |
 
 error[E0061]: this struct takes 1 argument but 2 arguments were supplied
   --> $DIR/struct-enum-wrong-args.rs:10:13
@@ -87,8 +89,9 @@ LL | struct DoubleWrapper(i32, i32);
    |        ^^^^^^^^^^^^^
 help: provide the arguments
    |
-LL |     let _ = DoubleWrapper(/* i32 */, /* i32 */);
-   |                          ~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _ = DoubleWrapper();
+LL +     let _ = DoubleWrapper(/* i32 */, /* i32 */);
+   |
 
 error[E0061]: this struct takes 2 arguments but 1 argument was supplied
   --> $DIR/struct-enum-wrong-args.rs:12:13
@@ -103,8 +106,9 @@ LL | struct DoubleWrapper(i32, i32);
    |        ^^^^^^^^^^^^^
 help: provide the argument
    |
-LL |     let _ = DoubleWrapper(5, /* i32 */);
-   |                          ~~~~~~~~~~~~~~
+LL -     let _ = DoubleWrapper(5);
+LL +     let _ = DoubleWrapper(5, /* i32 */);
+   |
 
 error[E0061]: this struct takes 2 arguments but 3 arguments were supplied
   --> $DIR/struct-enum-wrong-args.rs:13:13
diff --git a/tests/ui/typeck/suggest-arg-comma-delete-ice.stderr b/tests/ui/typeck/suggest-arg-comma-delete-ice.stderr
index 53608391f3c..0b899ad2712 100644
--- a/tests/ui/typeck/suggest-arg-comma-delete-ice.stderr
+++ b/tests/ui/typeck/suggest-arg-comma-delete-ice.stderr
@@ -6,8 +6,9 @@ LL |     main(rahh);
    |
 help: Unicode character ')' (Fullwidth Right Parenthesis) looks like ')' (Right Parenthesis), but it is not
    |
-LL |     main(rahh);
-   |              ~
+LL -     main(rahh);
+LL +     main(rahh);
+   |
 
 error[E0425]: cannot find value `rahh` in this scope
   --> $DIR/suggest-arg-comma-delete-ice.rs:15:10
diff --git a/tests/ui/typeck/typeck_type_placeholder_item.stderr b/tests/ui/typeck/typeck_type_placeholder_item.stderr
index d2a850d7dbf..c5bf9a47e91 100644
--- a/tests/ui/typeck/typeck_type_placeholder_item.stderr
+++ b/tests/ui/typeck/typeck_type_placeholder_item.stderr
@@ -71,8 +71,9 @@ LL | static TEST3: _ = "test";
    |
 help: replace this with a fully-specified type
    |
-LL | static TEST3: &str = "test";
-   |               ~~~~
+LL - static TEST3: _ = "test";
+LL + static TEST3: &str = "test";
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/typeck_type_placeholder_item.rs:16:15
@@ -82,8 +83,9 @@ LL | static TEST4: _ = 145;
    |
 help: replace this with a fully-specified type
    |
-LL | static TEST4: i32 = 145;
-   |               ~~~
+LL - static TEST4: _ = 145;
+LL + static TEST4: i32 = 145;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/typeck_type_placeholder_item.rs:19:16
@@ -95,8 +97,9 @@ LL | static TEST5: (_, _) = (1, 2);
    |
 help: replace this with a fully-specified type
    |
-LL | static TEST5: (i32, i32) = (1, 2);
-   |               ~~~~~~~~~~
+LL - static TEST5: (_, _) = (1, 2);
+LL + static TEST5: (i32, i32) = (1, 2);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:22:13
@@ -106,8 +109,9 @@ LL | fn test6(_: _) { }
    |
 help: use type parameters instead
    |
-LL | fn test6<T>(_: T) { }
-   |         +++    ~
+LL - fn test6(_: _) { }
+LL + fn test6<T>(_: T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:25:18
@@ -117,8 +121,9 @@ LL | fn test6_b<T>(_: _, _: T) { }
    |
 help: use type parameters instead
    |
-LL | fn test6_b<T, U>(_: U, _: T) { }
-   |             +++     ~
+LL - fn test6_b<T>(_: _, _: T) { }
+LL + fn test6_b<T, U>(_: U, _: T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:28:30
@@ -128,8 +133,9 @@ LL | fn test6_c<T, K, L, A, B>(_: _, _: (T, K, L, A, B)) { }
    |
 help: use type parameters instead
    |
-LL | fn test6_c<T, K, L, A, B, U>(_: U, _: (T, K, L, A, B)) { }
-   |                         +++     ~
+LL - fn test6_c<T, K, L, A, B>(_: _, _: (T, K, L, A, B)) { }
+LL + fn test6_c<T, K, L, A, B, U>(_: U, _: (T, K, L, A, B)) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:31:13
@@ -139,8 +145,9 @@ LL | fn test7(x: _) { let _x: usize = x; }
    |
 help: use type parameters instead
    |
-LL | fn test7<T>(x: T) { let _x: usize = x; }
-   |         +++    ~
+LL - fn test7(x: _) { let _x: usize = x; }
+LL + fn test7<T>(x: T) { let _x: usize = x; }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:34:22
@@ -159,8 +166,9 @@ LL | fn test8(_f: fn() -> _) { }
    |
 help: use type parameters instead
    |
-LL | fn test8<T>(_f: fn() -> T) { }
-   |         +++             ~
+LL - fn test8(_f: fn() -> _) { }
+LL + fn test8<T>(_f: fn() -> T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
   --> $DIR/typeck_type_placeholder_item.rs:48:26
@@ -188,8 +196,9 @@ LL |     fn clone(&self) -> _ { Test9 }
    |
 help: try replacing `_` with the type in the corresponding trait method signature
    |
-LL |     fn clone(&self) -> Test9 { Test9 }
-   |                        ~~~~~
+LL -     fn clone(&self) -> _ { Test9 }
+LL +     fn clone(&self) -> Test9 { Test9 }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:62:37
@@ -199,8 +208,9 @@ LL |     fn clone_from(&mut self, other: _) { *self = Test9; }
    |
 help: try replacing `_` with the type in the corresponding trait method signature
    |
-LL |     fn clone_from(&mut self, other: &Test9) { *self = Test9; }
-   |                                     ~~~~~~
+LL -     fn clone_from(&mut self, other: _) { *self = Test9; }
+LL +     fn clone_from(&mut self, other: &Test9) { *self = Test9; }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
   --> $DIR/typeck_type_placeholder_item.rs:67:8
@@ -235,8 +245,9 @@ LL |     static B: _ = 42;
    |
 help: replace this with a fully-specified type
    |
-LL |     static B: i32 = 42;
-   |               ~~~
+LL -     static B: _ = 42;
+LL +     static B: i32 = 42;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/typeck_type_placeholder_item.rs:77:22
@@ -246,8 +257,9 @@ LL |     static C: Option<_> = Some(42);
    |
 help: replace this with a fully-specified type
    |
-LL |     static C: Option<i32> = Some(42);
-   |               ~~~~~~~~~~~
+LL -     static C: Option<_> = Some(42);
+LL +     static C: Option<i32> = Some(42);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
   --> $DIR/typeck_type_placeholder_item.rs:79:21
@@ -276,8 +288,9 @@ LL |     static FN_TEST3: _ = "test";
    |
 help: replace this with a fully-specified type
    |
-LL |     static FN_TEST3: &str = "test";
-   |                      ~~~~
+LL -     static FN_TEST3: _ = "test";
+LL +     static FN_TEST3: &str = "test";
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/typeck_type_placeholder_item.rs:88:22
@@ -287,8 +300,9 @@ LL |     static FN_TEST4: _ = 145;
    |
 help: replace this with a fully-specified type
    |
-LL |     static FN_TEST4: i32 = 145;
-   |                      ~~~
+LL -     static FN_TEST4: _ = 145;
+LL +     static FN_TEST4: i32 = 145;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
   --> $DIR/typeck_type_placeholder_item.rs:91:23
@@ -300,8 +314,9 @@ LL |     static FN_TEST5: (_, _) = (1, 2);
    |
 help: replace this with a fully-specified type
    |
-LL |     static FN_TEST5: (i32, i32) = (1, 2);
-   |                      ~~~~~~~~~~
+LL -     static FN_TEST5: (_, _) = (1, 2);
+LL +     static FN_TEST5: (i32, i32) = (1, 2);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:94:20
@@ -311,8 +326,9 @@ LL |     fn fn_test6(_: _) { }
    |
 help: use type parameters instead
    |
-LL |     fn fn_test6<T>(_: T) { }
-   |                +++    ~
+LL -     fn fn_test6(_: _) { }
+LL +     fn fn_test6<T>(_: T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:97:20
@@ -322,8 +338,9 @@ LL |     fn fn_test7(x: _) { let _x: usize = x; }
    |
 help: use type parameters instead
    |
-LL |     fn fn_test7<T>(x: T) { let _x: usize = x; }
-   |                +++    ~
+LL -     fn fn_test7(x: _) { let _x: usize = x; }
+LL +     fn fn_test7<T>(x: T) { let _x: usize = x; }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:100:29
@@ -342,8 +359,9 @@ LL |     fn fn_test8(_f: fn() -> _) { }
    |
 help: use type parameters instead
    |
-LL |     fn fn_test8<T>(_f: fn() -> T) { }
-   |                +++             ~
+LL -     fn fn_test8(_f: fn() -> _) { }
+LL +     fn fn_test8<T>(_f: fn() -> T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:115:28
@@ -353,8 +371,9 @@ LL |         fn clone(&self) -> _ { FnTest9 }
    |
 help: try replacing `_` with the type in the corresponding trait method signature
    |
-LL |         fn clone(&self) -> FnTest9 { FnTest9 }
-   |                            ~~~~~~~
+LL -         fn clone(&self) -> _ { FnTest9 }
+LL +         fn clone(&self) -> FnTest9 { FnTest9 }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:118:41
@@ -364,8 +383,9 @@ LL |         fn clone_from(&mut self, other: _) { *self = FnTest9; }
    |
 help: try replacing `_` with the type in the corresponding trait method signature
    |
-LL |         fn clone_from(&mut self, other: &FnTest9) { *self = FnTest9; }
-   |                                         ~~~~~~~~
+LL -         fn clone_from(&mut self, other: _) { *self = FnTest9; }
+LL +         fn clone_from(&mut self, other: &FnTest9) { *self = FnTest9; }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
   --> $DIR/typeck_type_placeholder_item.rs:123:12
@@ -427,8 +447,9 @@ LL |     fn method_test1(&self, x: _);
    |
 help: use type parameters instead
    |
-LL |     fn method_test1<T>(&self, x: T);
-   |                    +++           ~
+LL -     fn method_test1(&self, x: _);
+LL +     fn method_test1<T>(&self, x: T);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:142:31
@@ -440,8 +461,9 @@ LL |     fn method_test2(&self, x: _) -> _;
    |
 help: use type parameters instead
    |
-LL |     fn method_test2<T>(&self, x: T) -> T;
-   |                    +++           ~     ~
+LL -     fn method_test2(&self, x: _) -> _;
+LL +     fn method_test2<T>(&self, x: T) -> T;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:144:31
@@ -451,8 +473,9 @@ LL |     fn method_test3(&self) -> _;
    |
 help: use type parameters instead
    |
-LL |     fn method_test3<T>(&self) -> T;
-   |                    +++           ~
+LL -     fn method_test3(&self) -> _;
+LL +     fn method_test3<T>(&self) -> T;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:146:26
@@ -462,8 +485,9 @@ LL |     fn assoc_fn_test1(x: _);
    |
 help: use type parameters instead
    |
-LL |     fn assoc_fn_test1<T>(x: T);
-   |                      +++    ~
+LL -     fn assoc_fn_test1(x: _);
+LL +     fn assoc_fn_test1<T>(x: T);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:148:26
@@ -475,8 +499,9 @@ LL |     fn assoc_fn_test2(x: _) -> _;
    |
 help: use type parameters instead
    |
-LL |     fn assoc_fn_test2<T>(x: T) -> T;
-   |                      +++    ~     ~
+LL -     fn assoc_fn_test2(x: _) -> _;
+LL +     fn assoc_fn_test2<T>(x: T) -> T;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item.rs:150:28
@@ -486,8 +511,9 @@ LL |     fn assoc_fn_test3() -> _;
    |
 help: use type parameters instead
    |
-LL |     fn assoc_fn_test3<T>() -> T;
-   |                      +++      ~
+LL -     fn assoc_fn_test3() -> _;
+LL +     fn assoc_fn_test3<T>() -> T;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
   --> $DIR/typeck_type_placeholder_item.rs:154:21
@@ -497,8 +523,9 @@ LL | struct BadStruct<_>(_);
    |
 help: use type parameters instead
    |
-LL | struct BadStruct<T>(T);
-   |                  ~  ~
+LL - struct BadStruct<_>(_);
+LL + struct BadStruct<T>(T);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for implementations
   --> $DIR/typeck_type_placeholder_item.rs:159:15
@@ -522,8 +549,9 @@ LL | struct BadStruct1<_, _>(_);
    |
 help: use type parameters instead
    |
-LL | struct BadStruct1<T, _>(T);
-   |                   ~     ~
+LL - struct BadStruct1<_, _>(_);
+LL + struct BadStruct1<T, _>(T);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
   --> $DIR/typeck_type_placeholder_item.rs:172:25
@@ -533,8 +561,9 @@ LL | struct BadStruct2<_, T>(_, T);
    |
 help: use type parameters instead
    |
-LL | struct BadStruct2<U, T>(U, T);
-   |                   ~     ~
+LL - struct BadStruct2<_, T>(_, T);
+LL + struct BadStruct2<U, T>(U, T);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for type aliases
   --> $DIR/typeck_type_placeholder_item.rs:176:14
@@ -562,8 +591,9 @@ LL |     const D: _ = 42;
    |
 help: replace this with a fully-specified type
    |
-LL |     const D: i32 = 42;
-   |              ~~~
+LL -     const D: _ = 42;
+LL +     const D: i32 = 42;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated constants
   --> $DIR/typeck_type_placeholder_item.rs:209:14
@@ -597,8 +627,9 @@ LL | const _: Option<_> = map(value);
    |
 help: replace this with a fully-specified type
    |
-LL | const _: Option<u8> = map(value);
-   |          ~~~~~~~~~~
+LL - const _: Option<_> = map(value);
+LL + const _: Option<u8> = map(value);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
   --> $DIR/typeck_type_placeholder_item.rs:226:31
@@ -638,8 +669,9 @@ LL |     fn test10(&self, _x : _) { }
    |
 help: use type parameters instead
    |
-LL |     fn test10<T>(&self, _x : T) { }
-   |              +++             ~
+LL -     fn test10(&self, _x : _) { }
+LL +     fn test10<T>(&self, _x : T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
   --> $DIR/typeck_type_placeholder_item.rs:107:31
@@ -658,8 +690,9 @@ LL |         fn fn_test10(&self, _x : _) { }
    |
 help: use type parameters instead
    |
-LL |         fn fn_test10<T>(&self, _x : T) { }
-   |                     +++             ~
+LL -         fn fn_test10(&self, _x : _) { }
+LL +         fn fn_test10<T>(&self, _x : T) { }
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated types
   --> $DIR/typeck_type_placeholder_item.rs:202:14
diff --git a/tests/ui/typeck/typeck_type_placeholder_item_help.stderr b/tests/ui/typeck/typeck_type_placeholder_item_help.stderr
index a05e27cebfc..afdd58e0a03 100644
--- a/tests/ui/typeck/typeck_type_placeholder_item_help.stderr
+++ b/tests/ui/typeck/typeck_type_placeholder_item_help.stderr
@@ -15,8 +15,9 @@ LL | const TEST2: _ = 42u32;
    |
 help: replace this with a fully-specified type
    |
-LL | const TEST2: u32 = 42u32;
-   |              ~~~
+LL - const TEST2: _ = 42u32;
+LL + const TEST2: u32 = 42u32;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
   --> $DIR/typeck_type_placeholder_item_help.rs:10:14
@@ -26,8 +27,9 @@ LL | const TEST3: _ = Some(42);
    |
 help: replace this with a fully-specified type
    |
-LL | const TEST3: Option<i32> = Some(42);
-   |              ~~~~~~~~~~~
+LL - const TEST3: _ = Some(42);
+LL + const TEST3: Option<i32> = Some(42);
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
   --> $DIR/typeck_type_placeholder_item_help.rs:13:22
@@ -49,8 +51,9 @@ LL |     const TEST6: _ = 13;
    |
 help: replace this with a fully-specified type
    |
-LL |     const TEST6: i32 = 13;
-   |                  ~~~
+LL -     const TEST6: _ = 13;
+LL +     const TEST6: i32 = 13;
+   |
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated constants
   --> $DIR/typeck_type_placeholder_item_help.rs:18:18
@@ -60,8 +63,9 @@ LL |     const TEST5: _ = 42;
    |
 help: replace this with a fully-specified type
    |
-LL |     const TEST5: i32 = 42;
-   |                  ~~~
+LL -     const TEST5: _ = 42;
+LL +     const TEST5: i32 = 42;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/typeck_type_placeholder_item_help.rs:30:28
diff --git a/tests/ui/typeof/issue-100183.stderr b/tests/ui/typeof/issue-100183.stderr
index 57317d449cf..765a5c54428 100644
--- a/tests/ui/typeof/issue-100183.stderr
+++ b/tests/ui/typeof/issue-100183.stderr
@@ -6,8 +6,9 @@ LL |     y: (typeof("hey"),),
    |
 help: consider replacing `typeof(...)` with an actual type
    |
-LL |     y: (&str,),
-   |         ~~~~
+LL -     y: (typeof("hey"),),
+LL +     y: (&str,),
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeof/issue-29184.stderr b/tests/ui/typeof/issue-29184.stderr
index f07c850e556..d8d43504d72 100644
--- a/tests/ui/typeof/issue-29184.stderr
+++ b/tests/ui/typeof/issue-29184.stderr
@@ -6,8 +6,9 @@ LL |     let x: typeof(92) = 92;
    |
 help: consider replacing `typeof(...)` with an actual type
    |
-LL |     let x: i32 = 92;
-   |            ~~~
+LL -     let x: typeof(92) = 92;
+LL +     let x: i32 = 92;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/typeof/issue-42060.stderr b/tests/ui/typeof/issue-42060.stderr
index 86ba9432384..733ad37693b 100644
--- a/tests/ui/typeof/issue-42060.stderr
+++ b/tests/ui/typeof/issue-42060.stderr
@@ -6,8 +6,9 @@ LL |     let other: typeof(thing) = thing;
    |
 help: consider using `const` instead of `let`
    |
-LL |     const thing: /* Type */ = ();
-   |     ~~~~~      ++++++++++++
+LL -     let thing = ();
+LL +     const thing: /* Type */ = ();
+   |
 
 error[E0435]: attempt to use a non-constant value in a constant
   --> $DIR/issue-42060.rs:9:13
@@ -17,8 +18,9 @@ LL |     <typeof(q)>::N
    |
 help: consider using `const` instead of `let`
    |
-LL |     const q: /* Type */ = 1;
-   |     ~~~~~  ++++++++++++
+LL -     let q = 1;
+LL +     const q: /* Type */ = 1;
+   |
 
 error[E0516]: `typeof` is a reserved keyword but unimplemented
   --> $DIR/issue-42060.rs:3:16
diff --git a/tests/ui/typeof/type_mismatch.stderr b/tests/ui/typeof/type_mismatch.stderr
index e75214cd31a..d5494922b16 100644
--- a/tests/ui/typeof/type_mismatch.stderr
+++ b/tests/ui/typeof/type_mismatch.stderr
@@ -6,8 +6,9 @@ LL |     let b: typeof(a) = 1i8;
    |
 help: consider replacing `typeof(...)` with an actual type
    |
-LL |     let b: u8 = 1i8;
-   |            ~~
+LL -     let b: typeof(a) = 1i8;
+LL +     let b: u8 = 1i8;
+   |
 
 error[E0308]: mismatched types
   --> $DIR/type_mismatch.rs:5:24
@@ -19,8 +20,9 @@ LL |     let b: typeof(a) = 1i8;
    |
 help: change the type of the numeric literal from `i8` to `u8`
    |
-LL |     let b: typeof(a) = 1u8;
-   |                         ~~
+LL -     let b: typeof(a) = 1i8;
+LL +     let b: typeof(a) = 1u8;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/ufcs/bad-builder.stderr b/tests/ui/ufcs/bad-builder.stderr
index e466f94d0d8..a3528cb1e7d 100644
--- a/tests/ui/ufcs/bad-builder.stderr
+++ b/tests/ui/ufcs/bad-builder.stderr
@@ -13,8 +13,9 @@ note: if you're trying to build a new `Vec<Q>` consider using one of the followi
   --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
 help: there is an associated function `new` with a similar name
    |
-LL |     Vec::<Q>::new()
-   |               ~~~
+LL -     Vec::<Q>::mew()
+LL +     Vec::<Q>::new()
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/ufcs/ufcs-explicit-self-bad.stderr b/tests/ui/ufcs/ufcs-explicit-self-bad.stderr
index 2a8c4edbdb5..7b5f7cd9f70 100644
--- a/tests/ui/ufcs/ufcs-explicit-self-bad.stderr
+++ b/tests/ui/ufcs/ufcs-explicit-self-bad.stderr
@@ -13,8 +13,9 @@ LL |     fn dummy2(&self);
               found signature `fn(&Bar<_>)`
 help: change the self-receiver type to match the trait
    |
-LL |     fn dummy2(&self) {}
-   |               ~~~~~
+LL -     fn dummy2(self: &Bar<T>) {}
+LL +     fn dummy2(&self) {}
+   |
 
 error[E0307]: invalid `self` parameter type: `isize`
   --> $DIR/ufcs-explicit-self-bad.rs:8:18
diff --git a/tests/ui/ufcs/ufcs-partially-resolved.stderr b/tests/ui/ufcs/ufcs-partially-resolved.stderr
index eef55c8dc68..0a9c190cb35 100644
--- a/tests/ui/ufcs/ufcs-partially-resolved.stderr
+++ b/tests/ui/ufcs/ufcs-partially-resolved.stderr
@@ -24,7 +24,8 @@ LL |     let _: <u8 as A>::N;
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait A = u32;
+LL - type A = u32;
+LL + trait A = u32;
    |
 
 error[E0576]: cannot find method or associated constant `N` in trait `Tr`
@@ -53,7 +54,8 @@ LL |     <u8 as A>::N;
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait A = u32;
+LL - type A = u32;
+LL + trait A = u32;
    |
 
 error[E0404]: expected trait, found enum `E`
@@ -100,7 +102,8 @@ LL |     let _: <u8 as A>::N::NN;
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait A = u32;
+LL - type A = u32;
+LL + trait A = u32;
    |
 
 error[E0576]: cannot find associated type `N` in trait `Tr`
@@ -129,7 +132,8 @@ LL |     <u8 as A>::N::NN;
    |
 help: you might have meant to use `#![feature(trait_alias)]` instead of a `type` alias
    |
-LL | trait A = u32;
+LL - type A = u32;
+LL + trait A = u32;
    |
 
 error[E0404]: expected trait, found enum `E`
@@ -253,8 +257,9 @@ LL |     let _: <u8 as Tr>::Y::NN;
    |
 help: if there were a trait named `Example` with associated type `NN` implemented for `<u8 as Tr>::Y`, you could use the fully-qualified path
    |
-LL |     let _: <<u8 as Tr>::Y as Example>::NN;
-   |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LL -     let _: <u8 as Tr>::Y::NN;
+LL +     let _: <<u8 as Tr>::Y as Example>::NN;
+   |
 
 error[E0599]: no associated item named `NN` found for type `u16` in the current scope
   --> $DIR/ufcs-partially-resolved.rs:38:20
diff --git a/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr b/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr
index f8be11a24e3..05071834883 100644
--- a/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr
+++ b/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr
@@ -30,8 +30,9 @@ note: method defined here
   --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     <i32 as Add<i32>>::add(1i32, 2);
-   |                             ~~~
+LL -     <i32 as Add<i32>>::add(1u32, 2);
+LL +     <i32 as Add<i32>>::add(1i32, 2);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/ufcs-qpath-self-mismatch.rs:9:31
@@ -52,8 +53,9 @@ note: method defined here
   --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
 help: change the type of the numeric literal from `u32` to `i32`
    |
-LL |     <i32 as Add<i32>>::add(1, 2i32);
-   |                                ~~~
+LL -     <i32 as Add<i32>>::add(1, 2u32);
+LL +     <i32 as Add<i32>>::add(1, 2i32);
+   |
 
 error[E0277]: cannot add `u32` to `i32`
   --> $DIR/ufcs-qpath-self-mismatch.rs:4:5
diff --git a/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr
index ce2c90f97da..1c6470eef8f 100644
--- a/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr
+++ b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr
@@ -6,8 +6,9 @@ LL |     let b = Bar::(isize, usize)::new(); // OK too (for the parser)
    |
 help: use angle brackets instead
    |
-LL |     let b = Bar::<isize, usize>::new(); // OK too (for the parser)
-   |                  ~            ~
+LL -     let b = Bar::(isize, usize)::new(); // OK too (for the parser)
+LL +     let b = Bar::<isize, usize>::new(); // OK too (for the parser)
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr b/tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr
index 327df50e645..d87588d1822 100644
--- a/tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr
+++ b/tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr
@@ -13,8 +13,9 @@ LL |     let mut f = |x: isize, y: isize| -> isize { x + y };
    |                  ^^^^^^^^
 help: change the type of the numeric literal from `usize` to `isize`
    |
-LL |     let z = f(1_isize, 2);
-   |                 ~~~~~
+LL -     let z = f(1_usize, 2);
+LL +     let z = f(1_isize, 2);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unboxed-closures-type-mismatch.rs:9:15
@@ -38,8 +39,9 @@ LL |     let mut g = |x, y| { x + y };
    |                  ^
 help: change the type of the numeric literal from `usize` to `i32`
    |
-LL |     let z = g(1_i32, 2);
-   |                 ~~~
+LL -     let z = g(1_usize, 2);
+LL +     let z = g(1_i32, 2);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unboxed-closures-type-mismatch.rs:17:18
@@ -63,8 +65,9 @@ LL |         let identity = |x| x;
    |                         ^
 help: change the type of the numeric literal from `u16` to `u8`
    |
-LL |         identity(1u8);
-   |                   ~~
+LL -         identity(1u16);
+LL +         identity(1u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unboxed-closures-type-mismatch.rs:20:18
@@ -111,8 +114,9 @@ LL |         let identity = |x| x;
    |                         ^
 help: change the type of the numeric literal from `u16` to `u8`
    |
-LL |         identity(1u8);
-   |                   ~~
+LL -         identity(1u16);
+LL +         identity(1u8);
+   |
 
 error[E0308]: mismatched types
   --> $DIR/unboxed-closures-type-mismatch.rs:33:18
diff --git a/tests/ui/underscore-lifetime/in-fn-return-illegal.stderr b/tests/ui/underscore-lifetime/in-fn-return-illegal.stderr
index fb036c695b4..a53e8adbecf 100644
--- a/tests/ui/underscore-lifetime/in-fn-return-illegal.stderr
+++ b/tests/ui/underscore-lifetime/in-fn-return-illegal.stderr
@@ -7,8 +7,9 @@ LL | fn foo(x: &u32, y: &u32) -> &'_ u32 { loop { } }
    = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `x` or `y`
 help: consider introducing a named lifetime parameter
    |
-LL | fn foo<'a>(x: &'a u32, y: &'a u32) -> &'a u32 { loop { } }
-   |       ++++     ++          ++          ~~
+LL - fn foo(x: &u32, y: &u32) -> &'_ u32 { loop { } }
+LL + fn foo<'a>(x: &'a u32, y: &'a u32) -> &'a u32 { loop { } }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr b/tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr
index cd74d27dcb5..d940166e9e2 100644
--- a/tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr
+++ b/tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr
@@ -6,8 +6,9 @@ LL | struct Baz<'a>(&'_ &'a u8);
    |
 help: consider using the `'a` lifetime
    |
-LL | struct Baz<'a>(&'a &'a u8);
-   |                 ~~
+LL - struct Baz<'a>(&'_ &'a u8);
+LL + struct Baz<'a>(&'a &'a u8);
+   |
 
 error[E0637]: `'_` cannot be used here
   --> $DIR/underscore-lifetime-binders.rs:4:8
@@ -30,8 +31,9 @@ LL | fn meh() -> Box<dyn for<'_> Meh<'_>>
    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
    |
-LL | fn meh() -> Box<dyn for<'_> Meh<'static>>
-   |                                 ~~~~~~~
+LL - fn meh() -> Box<dyn for<'_> Meh<'_>>
+LL + fn meh() -> Box<dyn for<'_> Meh<'static>>
+   |
 
 error[E0106]: missing lifetime specifier
   --> $DIR/underscore-lifetime-binders.rs:16:35
@@ -42,8 +44,9 @@ LL | fn foo2(_: &'_ u8, y: &'_ u8) -> &'_ u8 { y }
    = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from argument 1 or `y`
 help: consider introducing a named lifetime parameter
    |
-LL | fn foo2<'a>(_: &'a u8, y: &'a u8) -> &'a u8 { y }
-   |        ++++     ~~         ~~         ~~
+LL - fn foo2(_: &'_ u8, y: &'_ u8) -> &'_ u8 { y }
+LL + fn foo2<'a>(_: &'a u8, y: &'a u8) -> &'a u8 { y }
+   |
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr b/tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr
index 8bd9b1112c5..4b530ca4ba6 100644
--- a/tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr
+++ b/tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr
@@ -12,8 +12,9 @@ LL | fn foo(x: &mut Vec<&'_ u8>, y: &'_ u8) { x.push(y); }
    = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
 help: consider introducing a named lifetime parameter
    |
-LL | fn foo<'a>(x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); }
-   |       ++++              ~~          ~~
+LL - fn foo(x: &mut Vec<&'_ u8>, y: &'_ u8) { x.push(y); }
+LL + fn foo<'a>(x: &mut Vec<&'a u8>, y: &'a u8) { x.push(y); }
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/union/union-suggest-field.stderr b/tests/ui/union/union-suggest-field.stderr
index 5c428cf6c89..fc6daca2a47 100644
--- a/tests/ui/union/union-suggest-field.stderr
+++ b/tests/ui/union/union-suggest-field.stderr
@@ -6,8 +6,9 @@ LL |     let u = U { principle: 0 };
    |
 help: a field with a similar name exists
    |
-LL |     let u = U { principal: 0 };
-   |                 ~~~~~~~~~
+LL -     let u = U { principle: 0 };
+LL +     let u = U { principal: 0 };
+   |
 
 error[E0609]: no field `principial` on type `U`
   --> $DIR/union-suggest-field.rs:14:15
@@ -17,8 +18,9 @@ LL |     let w = u.principial;
    |
 help: a field with a similar name exists
    |
-LL |     let w = u.principal;
-   |               ~~~~~~~~~
+LL -     let w = u.principial;
+LL +     let w = u.principal;
+   |
 
 error[E0615]: attempted to take value of method `calculate` on type `U`
   --> $DIR/union-suggest-field.rs:18:15
diff --git a/tests/ui/unpretty/expanded-exhaustive.stdout b/tests/ui/unpretty/expanded-exhaustive.stdout
index 11066c90edb..19ae66f7a07 100644
--- a/tests/ui/unpretty/expanded-exhaustive.stdout
+++ b/tests/ui/unpretty/expanded-exhaustive.stdout
@@ -678,7 +678,7 @@ mod types {
         /*! FIXME: todo */
     }
     /// TyKind::Pat
-    fn ty_pat() { let _: u32 is 1..; }
+    fn ty_pat() { let _: u32 is const 1..; }
 }
 mod visibilities {
     /// VisibilityKind::Public
diff --git a/tests/ui/unresolved/unresolved-candidates.stderr b/tests/ui/unresolved/unresolved-candidates.stderr
index 7ef2f6b1a29..0810f90306e 100644
--- a/tests/ui/unresolved/unresolved-candidates.stderr
+++ b/tests/ui/unresolved/unresolved-candidates.stderr
@@ -6,8 +6,9 @@ LL |     use Trait;
    |
 help: consider importing this trait instead
    |
-LL |     use a::Trait;
-   |         ~~~~~~~~
+LL -     use Trait;
+LL +     use a::Trait;
+   |
 
 error[E0405]: cannot find trait `Trait` in this scope
   --> $DIR/unresolved-candidates.rs:10:10
diff --git a/tests/ui/unresolved/unresolved-import-avoid-suggesting-global-path.stderr b/tests/ui/unresolved/unresolved-import-avoid-suggesting-global-path.stderr
index b0352ab6754..f96cf69a2af 100644
--- a/tests/ui/unresolved/unresolved-import-avoid-suggesting-global-path.stderr
+++ b/tests/ui/unresolved/unresolved-import-avoid-suggesting-global-path.stderr
@@ -6,8 +6,9 @@ LL |     use module::SomeUsefulType;
    |
 help: consider importing this struct instead
    |
-LL |     use library::SomeUsefulType;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     use module::SomeUsefulType;
+LL +     use library::SomeUsefulType;
+   |
 
 error[E0432]: unresolved import `module::SomeUsefulType`
   --> $DIR/unresolved-import-avoid-suggesting-global-path.rs:28:9
@@ -17,8 +18,9 @@ LL |     use module::SomeUsefulType;
    |
 help: consider importing this struct instead
    |
-LL |     use library::SomeUsefulType;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~
+LL -     use module::SomeUsefulType;
+LL +     use library::SomeUsefulType;
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/unresolved/unresolved-import-suggest-disambiguated-crate-name.stderr b/tests/ui/unresolved/unresolved-import-suggest-disambiguated-crate-name.stderr
index c6812dbb196..31b943defba 100644
--- a/tests/ui/unresolved/unresolved-import-suggest-disambiguated-crate-name.stderr
+++ b/tests/ui/unresolved/unresolved-import-suggest-disambiguated-crate-name.stderr
@@ -6,8 +6,9 @@ LL | pub use module::SomeUsefulType;
    |
 help: consider importing this struct instead
    |
-LL | pub use ::library::SomeUsefulType;
-   |         ~~~~~~~~~~~~~~~~~~~~~~~~~
+LL - pub use module::SomeUsefulType;
+LL + pub use ::library::SomeUsefulType;
+   |
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/unsigned-literal-negation.stderr b/tests/ui/unsigned-literal-negation.stderr
index b0a730477a1..0bedbc1accd 100644
--- a/tests/ui/unsigned-literal-negation.stderr
+++ b/tests/ui/unsigned-literal-negation.stderr
@@ -7,8 +7,9 @@ LL |     let x = -1 as usize;
    = note: unsigned values cannot be negated
 help: you may have meant the maximum value of `usize`
    |
-LL |     let x = usize::MAX;
-   |             ~~~~~~~~~~
+LL -     let x = -1 as usize;
+LL +     let x = usize::MAX;
+   |
 
 error[E0600]: cannot apply unary operator `-` to type `usize`
   --> $DIR/unsigned-literal-negation.rs:3:13
@@ -19,8 +20,9 @@ LL |     let x = (-1) as usize;
    = note: unsigned values cannot be negated
 help: you may have meant the maximum value of `usize`
    |
-LL |     let x = usize::MAX;
-   |             ~~~~~~~~~~
+LL -     let x = (-1) as usize;
+LL +     let x = usize::MAX;
+   |
 
 error[E0600]: cannot apply unary operator `-` to type `u32`
   --> $DIR/unsigned-literal-negation.rs:4:18
@@ -31,8 +33,9 @@ LL |     let x: u32 = -1;
    = note: unsigned values cannot be negated
 help: you may have meant the maximum value of `u32`
    |
-LL |     let x: u32 = u32::MAX;
-   |                  ~~~~~~~~
+LL -     let x: u32 = -1;
+LL +     let x: u32 = u32::MAX;
+   |
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/unsized/box-instead-of-dyn-fn.stderr b/tests/ui/unsized/box-instead-of-dyn-fn.stderr
index 1836d5dfffe..b666718262d 100644
--- a/tests/ui/unsized/box-instead-of-dyn-fn.stderr
+++ b/tests/ui/unsized/box-instead-of-dyn-fn.stderr
@@ -6,8 +6,9 @@ LL | fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> dyn Fn() + 'a {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> impl Fn() + 'a {
-   |                                                        ~~~~
+LL - fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> dyn Fn() + 'a {
+LL + fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> impl Fn() + 'a {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL ~ fn print_on_or_the_other<'a>(a: i32, b: &'a String) -> Box<dyn Fn() + 'a> {
diff --git a/tests/ui/unsized/issue-91803.stderr b/tests/ui/unsized/issue-91803.stderr
index e0fde4b1c1b..037ec2ceaa5 100644
--- a/tests/ui/unsized/issue-91803.stderr
+++ b/tests/ui/unsized/issue-91803.stderr
@@ -6,8 +6,9 @@ LL | fn or<'a>(first: &'static dyn Foo<'a>) -> dyn Foo<'a> {
    |
 help: consider returning an `impl Trait` instead of a `dyn Trait`
    |
-LL | fn or<'a>(first: &'static dyn Foo<'a>) -> impl Foo<'a> {
-   |                                           ~~~~
+LL - fn or<'a>(first: &'static dyn Foo<'a>) -> dyn Foo<'a> {
+LL + fn or<'a>(first: &'static dyn Foo<'a>) -> impl Foo<'a> {
+   |
 help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
    |
 LL | fn or<'a>(first: &'static dyn Foo<'a>) -> Box<dyn Foo<'a>> {
diff --git a/tests/ui/variants/variant-used-as-type.stderr b/tests/ui/variants/variant-used-as-type.stderr
index 64424abbcec..1857c10a8e9 100644
--- a/tests/ui/variants/variant-used-as-type.stderr
+++ b/tests/ui/variants/variant-used-as-type.stderr
@@ -6,10 +6,12 @@ LL |     B(Ty::A),
    |
 help: try using the variant's enum
    |
-LL |     B(E),
-   |       ~
-LL |     B(Ty),
-   |       ~~
+LL -     B(Ty::A),
+LL +     B(E),
+   |
+LL -     B(Ty::A),
+LL +     B(Ty),
+   |
 
 error[E0573]: expected type, found variant `E::A`
   --> $DIR/variant-used-as-type.rs:17:6
@@ -19,10 +21,12 @@ LL | impl E::A {}
    |
 help: try using the variant's enum
    |
-LL | impl E {}
-   |      ~
-LL | impl Ty {}
-   |      ~~
+LL - impl E::A {}
+LL + impl E {}
+   |
+LL - impl E::A {}
+LL + impl Ty {}
+   |
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/wf/ice-hir-wf-check-anon-const-issue-122199.stderr b/tests/ui/wf/ice-hir-wf-check-anon-const-issue-122199.stderr
index 339f7b2cc82..3b4de0753af 100644
--- a/tests/ui/wf/ice-hir-wf-check-anon-const-issue-122199.stderr
+++ b/tests/ui/wf/ice-hir-wf-check-anon-const-issue-122199.stderr
@@ -96,8 +96,9 @@ LL |     fn fnc<const N: Trait = u32>(&self) -> Trait {
    |
 help: you might have meant to use `Self` to refer to the implementing type
    |
-LL |     fn fnc<const N: Trait = u32>(&self) -> Self {
-   |                                            ~~~~
+LL -     fn fnc<const N: Trait = u32>(&self) -> Trait {
+LL +     fn fnc<const N: Trait = u32>(&self) -> Self {
+   |
 
 error: aborting due to 7 previous errors; 3 warnings emitted
 
diff --git a/triagebot.toml b/triagebot.toml
index efd694994f9..169a6121615 100644
--- a/triagebot.toml
+++ b/triagebot.toml
@@ -1096,6 +1096,8 @@ bootstrap = [
 infra-ci = [
     "@Mark-Simulacrum",
     "@Kobzol",
+    "@marcoieni",
+    "@jdno",
 ]
 rustdoc = [
     "@GuillaumeGomez",