about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/codegen/abi-main-signature-16bit-c-int.rs1
-rw-r--r--src/test/codegen/abi-sysv64.rs1
-rw-r--r--src/test/codegen/abi-x86-interrupt.rs1
-rw-r--r--src/test/codegen/call-llvm-intrinsics.rs2
-rw-r--r--src/test/codegen/catch-unwind.rs9
-rw-r--r--src/test/codegen/fastcall-inreg.rs1
-rw-r--r--src/test/codegen/repr-transparent-aggregates-1.rs1
-rw-r--r--src/test/codegen/repr-transparent-aggregates-2.rs1
-rw-r--r--src/test/codegen/repr-transparent.rs3
-rw-r--r--src/test/codegen/riscv-abi/call-llvm-intrinsics.rs30
-rw-r--r--src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs14
-rw-r--r--src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs34
-rw-r--r--src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs34
-rw-r--r--src/test/codegen/stack-probes.rs1
-rw-r--r--src/test/codegen/x86_mmx.rs1
-rw-r--r--src/test/mir-opt/const_prop/bad_op_div_by_zero/rustc.main.ConstProp.diff2
-rw-r--r--src/test/mir-opt/const_prop/bad_op_mod_by_zero/rustc.main.ConstProp.diff2
-rw-r--r--src/test/mir-opt/simplify-arm/rustc.id.SimplifyArmIdentity.diff17
-rw-r--r--src/test/mir-opt/simplify-arm/rustc.id.SimplifyBranchSame.diff9
-rw-r--r--src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyArmIdentity.diff34
-rw-r--r--src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyBranchSame.diff43
-rw-r--r--src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyArmIdentity.diff19
-rw-r--r--src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyBranchSame.diff10
-rw-r--r--src/test/mir-opt/simplify_try_if_let/rustc.{{impl}}-append.SimplifyArmIdentity.diff11
-rw-r--r--src/test/pretty/asm.pp1
-rw-r--r--src/test/pretty/asm.rs1
-rw-r--r--src/test/run-make-fulldeps/incr-add-rust-src-component/Makefile44
-rw-r--r--src/test/run-make-fulldeps/incr-add-rust-src-component/main.rs3
-rw-r--r--src/test/rustdoc-ui/doctest-output.rs15
-rw-r--r--src/test/rustdoc-ui/doctest-output.stdout7
-rw-r--r--src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs35
-rw-r--r--src/test/rustdoc/auxiliary/issue-73061.rs17
-rw-r--r--src/test/rustdoc/intra-link-proc-macro.rs27
-rw-r--r--src/test/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs14
-rw-r--r--src/test/rustdoc/show-const-contents.rs8
-rw-r--r--src/test/ui-fulldeps/pprust-expr-roundtrip.rs4
-rw-r--r--src/test/ui/annotate-snippet/auxiliary/multispan.rs37
-rw-r--r--src/test/ui/annotate-snippet/missing-type.stderr2
-rw-r--r--src/test/ui/annotate-snippet/multispan.rs28
-rw-r--r--src/test/ui/annotate-snippet/multispan.stderr42
-rw-r--r--src/test/ui/asm/bad-template.rs2
-rw-r--r--src/test/ui/asm/bad-template.stderr18
-rw-r--r--src/test/ui/asm/parse-error.stderr2
-rw-r--r--src/test/ui/asm/srcloc.rs3
-rw-r--r--src/test/ui/asm/srcloc.stderr14
-rw-r--r--src/test/ui/asm/sym.rs52
-rw-r--r--src/test/ui/associated-type-bounds/duplicate.rs6
-rw-r--r--src/test/ui/associated-type-bounds/duplicate.stderr198
-rw-r--r--src/test/ui/async-await/async-fn-size-moved-locals.rs2
-rw-r--r--src/test/ui/async-await/issue-73050.rs12
-rw-r--r--src/test/ui/async-await/issue-73137.rs42
-rw-r--r--src/test/ui/codemap_tests/unicode.stderr2
-rw-r--r--src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr2
-rw-r--r--src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.rs20
-rw-r--r--src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.stderr10
-rw-r--r--src/test/ui/consts/const-eval/infinite_loop.stderr4
-rw-r--r--src/test/ui/consts/const-eval/shift_overflow.rs2
-rw-r--r--src/test/ui/consts/const-eval/shift_overflow.stderr4
-rw-r--r--src/test/ui/consts/const-int-arithmetic.rs24
-rw-r--r--src/test/ui/consts/const-int-conversion-rpass.rs4
-rw-r--r--src/test/ui/consts/const-int-conversion.rs2
-rw-r--r--src/test/ui/consts/const-int-conversion.stderr4
-rw-r--r--src/test/ui/consts/const-int-overflowing-rpass.rs8
-rw-r--r--src/test/ui/consts/const-int-pow-rpass.rs6
-rw-r--r--src/test/ui/consts/const-int-saturating-arith.rs32
-rw-r--r--src/test/ui/consts/const-int-unchecked.rs4
-rw-r--r--src/test/ui/consts/const-int-unchecked.stderr8
-rw-r--r--src/test/ui/consts/const-int-wrapping-rpass.rs8
-rw-r--r--src/test/ui/consts/const-match-check.eval1.stderr4
-rw-r--r--src/test/ui/consts/const-match-check.eval2.stderr4
-rw-r--r--src/test/ui/consts/const-match-check.matchck.stderr16
-rw-r--r--src/test/ui/consts/const-pattern-irrefutable.rs6
-rw-r--r--src/test/ui/consts/const-pattern-irrefutable.stderr6
-rw-r--r--src/test/ui/consts/const-size_of-cycle.stderr4
-rw-r--r--src/test/ui/consts/const_limit/const_eval_limit_reached.stderr23
-rw-r--r--src/test/ui/consts/enum-discr-type-err.stderr8
-rw-r--r--src/test/ui/consts/recursive-zst-static.default.stderr4
-rw-r--r--src/test/ui/consts/recursive-zst-static.unleash.stderr4
-rw-r--r--src/test/ui/consts/uninhabited-const-issue-61744.rs4
-rw-r--r--src/test/ui/consts/uninhabited-const-issue-61744.stderr8
-rw-r--r--src/test/ui/derived-errors/issue-31997-1.stderr4
-rw-r--r--src/test/ui/enum-discriminant/issue-70509-partial_eq.rs2
-rw-r--r--src/test/ui/enum-discriminant/repr128.rs16
-rw-r--r--src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.rs9
-rw-r--r--src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr12
-rw-r--r--src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs24
-rw-r--r--src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr70
-rw-r--r--src/test/ui/ffi_returns_twice.stderr1
-rw-r--r--src/test/ui/for/for-loop-refutable-pattern-error-message.stderr4
-rw-r--r--src/test/ui/generator/size-moved-locals.rs2
-rw-r--r--src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr140
-rw-r--r--src/test/ui/hygiene/no_implicit_prelude.stderr4
-rw-r--r--src/test/ui/impl-trait/auto-trait-leak.rs2
-rw-r--r--src/test/ui/impl-trait/auto-trait-leak.stderr188
-rw-r--r--src/test/ui/impl-trait/auto-trait.rs14
-rw-r--r--src/test/ui/impl-trait/auto-trait.stderr8
-rw-r--r--src/test/ui/impl-trait/issue-55872-1.stderr8
-rw-r--r--src/test/ui/impl-trait/issue-55872-2.stderr4
-rw-r--r--src/test/ui/impl-trait/issue-60473.rs10
-rw-r--r--src/test/ui/impl-trait/issue-60473.stderr16
-rw-r--r--src/test/ui/impl-trait/issue-67166.rs4
-rw-r--r--src/test/ui/impl-trait/issue-67166.stderr16
-rw-r--r--src/test/ui/impl-trait/negative-reasoning.rs15
-rw-r--r--src/test/ui/impl-trait/negative-reasoning.stderr10
-rw-r--r--src/test/ui/impl-trait/where-allowed.stderr12
-rw-r--r--src/test/ui/infinite/infinite-recursion-const-fn.stderr8
-rw-r--r--src/test/ui/infinite/infinite-tag-type-recursion.stderr5
-rw-r--r--src/test/ui/issues/issue-17431-1.stderr7
-rw-r--r--src/test/ui/issues/issue-17431-2.stderr14
-rw-r--r--src/test/ui/issues/issue-17431-3.stderr7
-rw-r--r--src/test/ui/issues/issue-17431-4.stderr7
-rw-r--r--src/test/ui/issues/issue-17431-5.stderr7
-rw-r--r--src/test/ui/issues/issue-17431-6.stderr5
-rw-r--r--src/test/ui/issues/issue-17431-7.stderr5
-rw-r--r--src/test/ui/issues/issue-17546.stderr10
-rw-r--r--src/test/ui/issues/issue-20605.stderr4
-rw-r--r--src/test/ui/issues/issue-2718-a.stderr5
-rw-r--r--src/test/ui/issues/issue-3008-1.stderr5
-rw-r--r--src/test/ui/issues/issue-3008-2.stderr7
-rw-r--r--src/test/ui/issues/issue-3008-3.stderr5
-rw-r--r--src/test/ui/issues/issue-31910.stderr5
-rw-r--r--src/test/ui/issues/issue-32326.stderr5
-rw-r--r--src/test/ui/issues/issue-3779.stderr7
-rw-r--r--src/test/ui/issues/issue-44216-add-instant.rs2
-rw-r--r--src/test/ui/issues/issue-44216-add-system-time.rs2
-rw-r--r--src/test/ui/issues/issue-44216-sub-instant.rs2
-rw-r--r--src/test/ui/issues/issue-44216-sub-system-time.rs2
-rw-r--r--src/test/ui/issues/issue-57271.stderr10
-rw-r--r--src/test/ui/issues/issue-60662.stdout2
-rw-r--r--src/test/ui/issues/issue-72554.stderr5
-rw-r--r--src/test/ui/issues/issue-72839-error-overflow.rs19
-rw-r--r--src/test/ui/issues/issue-72839-error-overflow.stderr9
-rw-r--r--src/test/ui/issues/issue-72933-match-stack-overflow.rs5208
-rw-r--r--src/test/ui/issues/issue-8460.rs20
-rw-r--r--src/test/ui/iterators/iter-step-overflow-debug.rs4
-rw-r--r--src/test/ui/iterators/iter-step-overflow-ndebug.rs8
-rw-r--r--src/test/ui/iterators/iter-sum-overflow-debug.rs8
-rw-r--r--src/test/ui/iterators/iter-sum-overflow-ndebug.rs16
-rw-r--r--src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs8
-rw-r--r--src/test/ui/iterators/skip-count-overflow.rs2
-rw-r--r--src/test/ui/lexical-scopes.stderr5
-rw-r--r--src/test/ui/lint/expansion-time-include.rs4
-rw-r--r--src/test/ui/lint/expansion-time.rs23
-rw-r--r--src/test/ui/lint/expansion-time.stderr56
-rw-r--r--src/test/ui/lint/inline-trait-and-foreign-items.stderr4
-rw-r--r--src/test/ui/lint/lint-ctypes-66202.rs17
-rw-r--r--src/test/ui/lint/opaque-ty-ffi-unsafe.rs3
-rw-r--r--src/test/ui/lint/opaque-ty-ffi-unsafe.stderr6
-rw-r--r--src/test/ui/match/issue-72896.rs23
-rw-r--r--src/test/ui/mod/mod_file_disambig.stderr4
-rw-r--r--src/test/ui/no-implicit-prelude-nested.stderr48
-rw-r--r--src/test/ui/no-implicit-prelude.stderr16
-rw-r--r--src/test/ui/numbers-arithmetic/i128.rs2
-rw-r--r--src/test/ui/numbers-arithmetic/int-abs-overflow.rs10
-rw-r--r--src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs4
-rw-r--r--src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs2
-rw-r--r--src/test/ui/numbers-arithmetic/u128.rs4
-rw-r--r--src/test/ui/numeric/const-scope.stderr10
-rw-r--r--src/test/ui/numeric/numeric-cast-binop.fixed320
-rw-r--r--src/test/ui/numeric/numeric-cast-binop.rs320
-rw-r--r--src/test/ui/numeric/numeric-cast-binop.stderr1385
-rw-r--r--src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs6
-rw-r--r--src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr12
-rw-r--r--src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr8
-rw-r--r--src/test/ui/parser/issue-8537.stderr2
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-4.stderr3
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-7.stderr3
-rw-r--r--src/test/ui/pattern/usefulness/exhaustive_integer_patterns.stderr28
-rw-r--r--src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr4
-rw-r--r--src/test/ui/pattern/usefulness/match-non-exhaustive.stderr4
-rw-r--r--src/test/ui/pattern/usefulness/non-exhaustive-match.rs4
-rw-r--r--src/test/ui/pattern/usefulness/non-exhaustive-match.stderr4
-rw-r--r--src/test/ui/pattern/usefulness/refutable-pattern-errors.rs2
-rw-r--r--src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr4
-rw-r--r--src/test/ui/precise_pointer_size_matching.stderr8
-rw-r--r--src/test/ui/privacy/private-in-public-assoc-ty.rs9
-rw-r--r--src/test/ui/privacy/private-in-public-assoc-ty.stderr25
-rw-r--r--src/test/ui/proc-macro/debug/dump-debug-span-debug.rs41
-rw-r--r--src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr166
-rw-r--r--src/test/ui/proc-macro/empty-where-clause.rs18
-rw-r--r--src/test/ui/proc-macro/empty-where-clause.stderr21
-rw-r--r--src/test/ui/proc-macro/mixed-site-span.stderr4
-rw-r--r--src/test/ui/recursion/recursive-enum.stderr5
-rw-r--r--src/test/ui/recursion/recursive-static-definition.stderr4
-rw-r--r--src/test/ui/repeat_count.rs3
-rw-r--r--src/test/ui/repeat_count.stderr21
-rw-r--r--src/test/ui/resolve/issue-2356.stderr11
-rw-r--r--src/test/ui/resolve/use_suggestion.stderr8
-rw-r--r--src/test/ui/resolve/use_suggestion_placement.stderr4
-rw-r--r--src/test/ui/rfc-2091-track-caller/call-chain.rs28
-rw-r--r--src/test/ui/save-analysis/issue-68621.stderr4
-rw-r--r--src/test/ui/save-analysis/issue-73020.rs5
-rw-r--r--src/test/ui/save-analysis/issue-73020.stderr9
-rw-r--r--src/test/ui/save-analysis/issue-73022.rs13
-rw-r--r--src/test/ui/simd/simd-intrinsic-generic-arithmetic-saturating.rs6
-rw-r--r--src/test/ui/simd/simd-intrinsic-generic-bitmask.rs2
-rw-r--r--src/test/ui/simd/simd-intrinsic-generic-reduction.rs2
-rw-r--r--src/test/ui/sized-cycle-note.stderr14
-rw-r--r--src/test/ui/span/E0072.stderr7
-rw-r--r--src/test/ui/span/multiline-span-E0072.stderr7
-rw-r--r--src/test/ui/span/recursive-type-field.stderr19
-rw-r--r--src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs2
-rw-r--r--src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr2
-rw-r--r--src/test/ui/symbol-names/basic.legacy.stderr4
-rw-r--r--src/test/ui/symbol-names/impl1.legacy.stderr8
-rw-r--r--src/test/ui/symbol-names/impl1.rs4
-rw-r--r--src/test/ui/symbol-names/issue-60925.legacy.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/bound_reduction2.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.nll.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr8
-rw-r--r--src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr8
-rw-r--r--src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs18
-rw-r--r--src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr15
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs24
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.stderr8
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60371.stderr8
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60564.rs7
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60564.stderr14
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs38
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-63279.stderr6
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs22
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr11
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs23
-rw-r--r--src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.stderr6
-rw-r--r--src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr10
-rw-r--r--src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr4
-rw-r--r--src/test/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs14
-rw-r--r--src/test/ui/type/type-recursive.stderr7
-rw-r--r--src/test/ui/union/union-nonrepresentable.stderr7
-rw-r--r--src/test/ui/unterminated-comment.rs1
-rw-r--r--src/test/ui/unterminated-comment.stderr9
-rw-r--r--src/test/ui/unterminated-doc-comment.rs1
-rw-r--r--src/test/ui/unterminated-doc-comment.stderr9
-rw-r--r--src/test/ui/variance/variance-associated-types2.nll.stderr12
-rw-r--r--src/test/ui/variance/variance-associated-types2.rs17
-rw-r--r--src/test/ui/variance/variance-associated-types2.stderr18
-rw-r--r--src/test/ui/write-to-static-mut-in-static.stderr4
242 files changed, 9306 insertions, 1081 deletions
diff --git a/src/test/codegen/abi-main-signature-16bit-c-int.rs b/src/test/codegen/abi-main-signature-16bit-c-int.rs
index d7b8c48c33e..4ed491dfb2b 100644
--- a/src/test/codegen/abi-main-signature-16bit-c-int.rs
+++ b/src/test/codegen/abi-main-signature-16bit-c-int.rs
@@ -10,6 +10,7 @@
 // ignore-mips64
 // ignore-powerpc
 // ignore-powerpc64
+// ignore-riscv64
 // ignore-s390x
 // ignore-sparc
 // ignore-sparc64
diff --git a/src/test/codegen/abi-sysv64.rs b/src/test/codegen/abi-sysv64.rs
index 6456ad47615..89c9bcee052 100644
--- a/src/test/codegen/abi-sysv64.rs
+++ b/src/test/codegen/abi-sysv64.rs
@@ -4,6 +4,7 @@
 
 // ignore-arm
 // ignore-aarch64
+// ignore-riscv64 sysv64 not supported
 
 // compile-flags: -C no-prepopulate-passes
 
diff --git a/src/test/codegen/abi-x86-interrupt.rs b/src/test/codegen/abi-x86-interrupt.rs
index db215860f20..25c155c949d 100644
--- a/src/test/codegen/abi-x86-interrupt.rs
+++ b/src/test/codegen/abi-x86-interrupt.rs
@@ -4,6 +4,7 @@
 
 // ignore-arm
 // ignore-aarch64
+// ignore-riscv64 x86-interrupt is not supported
 
 // compile-flags: -C no-prepopulate-passes
 
diff --git a/src/test/codegen/call-llvm-intrinsics.rs b/src/test/codegen/call-llvm-intrinsics.rs
index c7a464a9b0e..24e3d3cd64b 100644
--- a/src/test/codegen/call-llvm-intrinsics.rs
+++ b/src/test/codegen/call-llvm-intrinsics.rs
@@ -1,5 +1,7 @@
 // compile-flags: -C no-prepopulate-passes
 
+// ignore-riscv64
+
 #![feature(link_llvm_intrinsics)]
 #![crate_type = "lib"]
 
diff --git a/src/test/codegen/catch-unwind.rs b/src/test/codegen/catch-unwind.rs
index 3c9bc35d1c8..7ff9c0d15e0 100644
--- a/src/test/codegen/catch-unwind.rs
+++ b/src/test/codegen/catch-unwind.rs
@@ -1,5 +1,14 @@
 // compile-flags: -O
 
+// On x86 the closure is inlined in foo() producting something like
+// define i32 @foo() [...] {
+// tail call void @bar() [...]
+// ret i32 0
+// }
+// On riscv the closure is another function, placed before fn foo so CHECK can't
+// find it
+// ignore-riscv64 FIXME
+
 #![crate_type = "lib"]
 
 extern "C" {
diff --git a/src/test/codegen/fastcall-inreg.rs b/src/test/codegen/fastcall-inreg.rs
index f67487c83ba..adbeae45449 100644
--- a/src/test/codegen/fastcall-inreg.rs
+++ b/src/test/codegen/fastcall-inreg.rs
@@ -17,6 +17,7 @@
 // ignore-powerpc64le
 // ignore-powerpc
 // ignore-r600
+// ignore-riscv64
 // ignore-amdgcn
 // ignore-sparc
 // ignore-sparc64
diff --git a/src/test/codegen/repr-transparent-aggregates-1.rs b/src/test/codegen/repr-transparent-aggregates-1.rs
index 018a7ba4756..c23c57c8c59 100644
--- a/src/test/codegen/repr-transparent-aggregates-1.rs
+++ b/src/test/codegen/repr-transparent-aggregates-1.rs
@@ -7,6 +7,7 @@
 // ignore-mips64
 // ignore-powerpc
 // ignore-powerpc64
+// ignore-riscv64 see codegen/riscv-abi
 // ignore-windows
 // See repr-transparent.rs
 
diff --git a/src/test/codegen/repr-transparent-aggregates-2.rs b/src/test/codegen/repr-transparent-aggregates-2.rs
index 56698586720..07e5af11f35 100644
--- a/src/test/codegen/repr-transparent-aggregates-2.rs
+++ b/src/test/codegen/repr-transparent-aggregates-2.rs
@@ -6,6 +6,7 @@
 // ignore-powerpc
 // ignore-powerpc64
 // ignore-powerpc64le
+// ignore-riscv64 see codegen/riscv-abi
 // ignore-s390x
 // ignore-sparc
 // ignore-sparc64
diff --git a/src/test/codegen/repr-transparent.rs b/src/test/codegen/repr-transparent.rs
index 49fd015624a..7647e019876 100644
--- a/src/test/codegen/repr-transparent.rs
+++ b/src/test/codegen/repr-transparent.rs
@@ -1,5 +1,8 @@
 // compile-flags: -C no-prepopulate-passes
 
+// ignore-riscv64 riscv64 has an i128 type used with test_Vector
+// see codegen/riscv-abi for riscv functiona call tests
+
 #![crate_type="lib"]
 #![feature(repr_simd, transparent_unions)]
 
diff --git a/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs b/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs
new file mode 100644
index 00000000000..f100a23a318
--- /dev/null
+++ b/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs
@@ -0,0 +1,30 @@
+// compile-flags: -C no-prepopulate-passes
+
+// only-riscv64
+
+#![feature(link_llvm_intrinsics)]
+#![crate_type = "lib"]
+
+struct A;
+
+impl Drop for A {
+    fn drop(&mut self) {
+        println!("A");
+    }
+}
+
+extern {
+    #[link_name = "llvm.sqrt.f32"]
+    fn sqrt(x: f32) -> f32;
+}
+
+pub fn do_call() {
+    let _a = A;
+
+    unsafe {
+        // Ensure that we `call` LLVM intrinsics instead of trying to `invoke` them
+        // CHECK: store float 4.000000e+00, float* %{{.}}, align 4
+        // CHECK: call float @llvm.sqrt.f32(float %{{.}}
+        sqrt(4.0);
+    }
+}
diff --git a/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs b/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs
index f0f052fe5c5..180ba07764b 100644
--- a/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs
+++ b/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs
@@ -39,12 +39,12 @@ pub extern "C" fn f_scalar_4(x: i64) -> i64 {
     x
 }
 
-// CHECK: define float @f_fp_scalar_1(float)
+// CHECK: define float @f_fp_scalar_1(float %0)
 #[no_mangle]
 pub extern "C" fn f_fp_scalar_1(x: f32) -> f32 {
     x
 }
-// CHECK: define double @f_fp_scalar_2(double)
+// CHECK: define double @f_fp_scalar_2(double %0)
 #[no_mangle]
 pub extern "C" fn f_fp_scalar_2(x: f64) -> f64 {
     x
@@ -67,7 +67,7 @@ pub struct Tiny {
     d: u16,
 }
 
-// CHECK: define void @f_agg_tiny(i64)
+// CHECK: define void @f_agg_tiny(i64 %0)
 #[no_mangle]
 pub extern "C" fn f_agg_tiny(mut e: Tiny) {
     e.a += e.b;
@@ -86,7 +86,7 @@ pub struct Small {
     b: *mut i64,
 }
 
-// CHECK: define void @f_agg_small([2 x i64])
+// CHECK: define void @f_agg_small([2 x i64] %0)
 #[no_mangle]
 pub extern "C" fn f_agg_small(mut x: Small) {
     x.a += unsafe { *x.b };
@@ -104,7 +104,7 @@ pub struct SmallAligned {
     a: i128,
 }
 
-// CHECK: define void @f_agg_small_aligned(i128)
+// CHECK: define void @f_agg_small_aligned(i128 %0)
 #[no_mangle]
 pub extern "C" fn f_agg_small_aligned(mut x: SmallAligned) {
     x.a += x.a;
@@ -130,7 +130,7 @@ pub extern "C" fn f_agg_large_ret(i: i32, j: i8) -> Large {
     Large { a: 1, b: 2, c: 3, d: 4 }
 }
 
-// CHECK: define void @f_scalar_stack_1(i64, [2 x i64], i128, %Large* {{.*}}%d, i8 zeroext %e, i8 signext %f, i8 %g, i8 %h)
+// CHECK: define void @f_scalar_stack_1(i64 %0, [2 x i64] %1, i128 %2, %Large* {{.*}}%d, i8 zeroext %e, i8 signext %f, i8 %g, i8 %h)
 #[no_mangle]
 pub extern "C" fn f_scalar_stack_1(
     a: Tiny,
@@ -144,7 +144,7 @@ pub extern "C" fn f_scalar_stack_1(
 ) {
 }
 
-// CHECK: define void @f_scalar_stack_2(%Large* {{.*}}sret{{.*}}, i64 %a, i128, i128, i64 %d, i8 zeroext %e, i8 %f, i8 %g)
+// CHECK: define void @f_scalar_stack_2(%Large* {{.*}}sret{{.*}} %0, i64 %a, i128 %1, i128 %2, i64 %d, i8 zeroext %e, i8 %f, i8 %g)
 #[no_mangle]
 pub extern "C" fn f_scalar_stack_2(
     a: u64,
diff --git a/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs b/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs
index 66a3b9e4952..0b6e1878d4d 100644
--- a/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs
+++ b/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs
@@ -4,7 +4,7 @@
 // only-linux
 #![crate_type = "lib"]
 
-// CHECK: define void @f_fpr_tracking(double, double, double, double, double, double, double, double, i8 zeroext %i)
+// CHECK: define void @f_fpr_tracking(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, i8 zeroext %i)
 #[no_mangle]
 pub extern "C" fn f_fpr_tracking(
     a: f64,
@@ -36,7 +36,7 @@ pub struct DoubleFloat {
     g: f32,
 }
 
-// CHECK: define void @f_double_s_arg(double)
+// CHECK: define void @f_double_s_arg(double %0)
 #[no_mangle]
 pub extern "C" fn f_double_s_arg(a: Double) {}
 
@@ -46,7 +46,7 @@ pub extern "C" fn f_ret_double_s() -> Double {
     Double { f: 1. }
 }
 
-// CHECK: define void @f_double_double_s_arg({ double, double })
+// CHECK: define void @f_double_double_s_arg({ double, double } %0)
 #[no_mangle]
 pub extern "C" fn f_double_double_s_arg(a: DoubleDouble) {}
 
@@ -56,7 +56,7 @@ pub extern "C" fn f_ret_double_double_s() -> DoubleDouble {
     DoubleDouble { f: 1., g: 2. }
 }
 
-// CHECK: define void @f_double_float_s_arg({ double, float })
+// CHECK: define void @f_double_float_s_arg({ double, float } %0)
 #[no_mangle]
 pub extern "C" fn f_double_float_s_arg(a: DoubleFloat) {}
 
@@ -66,7 +66,7 @@ pub extern "C" fn f_ret_double_float_s() -> DoubleFloat {
     DoubleFloat { f: 1., g: 2. }
 }
 
-// CHECK: define void @f_double_double_s_arg_insufficient_fprs(double, double, double, double, double, double, double, [2 x i64])
+// CHECK: define void @f_double_double_s_arg_insufficient_fprs(double %0, double %1, double %2, double %3, double %4, double %5, double %6, [2 x i64] %7)
 #[no_mangle]
 pub extern "C" fn f_double_double_s_arg_insufficient_fprs(
     a: f64,
@@ -104,7 +104,7 @@ pub struct DoubleInt64 {
     i: i64,
 }
 
-// CHECK: define void @f_double_int8_s_arg({ double, i8 })
+// CHECK: define void @f_double_int8_s_arg({ double, i8 } %0)
 #[no_mangle]
 pub extern "C" fn f_double_int8_s_arg(a: DoubleInt8) {}
 
@@ -114,7 +114,7 @@ pub extern "C" fn f_ret_double_int8_s() -> DoubleInt8 {
     DoubleInt8 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_double_int32_s_arg({ double, i32 })
+// CHECK: define void @f_double_int32_s_arg({ double, i32 } %0)
 #[no_mangle]
 pub extern "C" fn f_double_int32_s_arg(a: DoubleInt32) {}
 
@@ -124,7 +124,7 @@ pub extern "C" fn f_ret_double_int32_s() -> DoubleInt32 {
     DoubleInt32 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_double_uint8_s_arg({ double, i8 })
+// CHECK: define void @f_double_uint8_s_arg({ double, i8 } %0)
 #[no_mangle]
 pub extern "C" fn f_double_uint8_s_arg(a: DoubleUInt8) {}
 
@@ -134,7 +134,7 @@ pub extern "C" fn f_ret_double_uint8_s() -> DoubleUInt8 {
     DoubleUInt8 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_double_int64_s_arg({ double, i64 })
+// CHECK: define void @f_double_int64_s_arg({ double, i64 } %0)
 #[no_mangle]
 pub extern "C" fn f_double_int64_s_arg(a: DoubleInt64) {}
 
@@ -144,7 +144,7 @@ pub extern "C" fn f_ret_double_int64_s() -> DoubleInt64 {
     DoubleInt64 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_double_int8_s_arg_insufficient_gprs(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h, [2 x i64])
+// CHECK: define void @f_double_int8_s_arg_insufficient_gprs(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h, [2 x i64] %0)
 #[no_mangle]
 pub extern "C" fn f_double_int8_s_arg_insufficient_gprs(
     a: i32,
@@ -159,7 +159,7 @@ pub extern "C" fn f_double_int8_s_arg_insufficient_gprs(
 ) {
 }
 
-// CHECK: define void @f_struct_double_int8_insufficient_fprs(float, double, double, double, double, double, double, double, [2 x i64])
+// CHECK: define void @f_struct_double_int8_insufficient_fprs(float %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, [2 x i64] %8)
 #[no_mangle]
 pub extern "C" fn f_struct_double_int8_insufficient_fprs(
     a: f32,
@@ -179,7 +179,7 @@ pub struct DoubleArr1 {
     a: [f64; 1],
 }
 
-// CHECK: define void @f_doublearr1_s_arg(double)
+// CHECK: define void @f_doublearr1_s_arg(double %0)
 #[no_mangle]
 pub extern "C" fn f_doublearr1_s_arg(a: DoubleArr1) {}
 
@@ -194,7 +194,7 @@ pub struct DoubleArr2 {
     a: [f64; 2],
 }
 
-// CHECK: define void @f_doublearr2_s_arg({ double, double })
+// CHECK: define void @f_doublearr2_s_arg({ double, double } %0)
 #[no_mangle]
 pub extern "C" fn f_doublearr2_s_arg(a: DoubleArr2) {}
 
@@ -214,7 +214,7 @@ pub struct DoubleArr2Tricky1 {
     g: [Tricky1; 2],
 }
 
-// CHECK: define void @f_doublearr2_tricky1_s_arg({ double, double })
+// CHECK: define void @f_doublearr2_tricky1_s_arg({ double, double } %0)
 #[no_mangle]
 pub extern "C" fn f_doublearr2_tricky1_s_arg(a: DoubleArr2Tricky1) {}
 
@@ -233,7 +233,7 @@ pub struct DoubleArr2Tricky2 {
     g: [Tricky1; 2],
 }
 
-// CHECK: define void @f_doublearr2_tricky2_s_arg({ double, double })
+// CHECK: define void @f_doublearr2_tricky2_s_arg({ double, double } %0)
 #[no_mangle]
 pub extern "C" fn f_doublearr2_tricky2_s_arg(a: DoubleArr2Tricky2) {}
 
@@ -267,7 +267,7 @@ pub struct CharCharDouble {
     c: f64,
 }
 
-// CHECK: define void @f_char_char_double_s_arg([2 x i64])
+// CHECK: define void @f_char_char_double_s_arg([2 x i64] %0)
 #[no_mangle]
 pub extern "C" fn f_char_char_double_s_arg(a: CharCharDouble) {}
 
@@ -282,7 +282,7 @@ pub union DoubleU {
     a: f64,
 }
 
-// CHECK: define void @f_double_u_arg(i64)
+// CHECK: define void @f_double_u_arg(i64 %0)
 #[no_mangle]
 pub extern "C" fn f_double_u_arg(a: DoubleU) {}
 
diff --git a/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs b/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs
index d843331f425..1cea6e3db2a 100644
--- a/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs
+++ b/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs
@@ -4,7 +4,7 @@
 // only-linux
 #![crate_type = "lib"]
 
-// CHECK: define void @f_fpr_tracking(float, float, float, float, float, float, float, float, i8 zeroext %i)
+// CHECK: define void @f_fpr_tracking(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, i8 zeroext %i)
 #[no_mangle]
 pub extern "C" fn f_fpr_tracking(
     a: f32,
@@ -30,7 +30,7 @@ pub struct FloatFloat {
     g: f32,
 }
 
-// CHECK: define void @f_float_s_arg(float)
+// CHECK: define void @f_float_s_arg(float %0)
 #[no_mangle]
 pub extern "C" fn f_float_s_arg(a: Float) {}
 
@@ -40,7 +40,7 @@ pub extern "C" fn f_ret_float_s() -> Float {
     Float { f: 1. }
 }
 
-// CHECK: define void @f_float_float_s_arg({ float, float })
+// CHECK: define void @f_float_float_s_arg({ float, float } %0)
 #[no_mangle]
 pub extern "C" fn f_float_float_s_arg(a: FloatFloat) {}
 
@@ -50,7 +50,7 @@ pub extern "C" fn f_ret_float_float_s() -> FloatFloat {
     FloatFloat { f: 1., g: 2. }
 }
 
-// CHECK: define void @f_float_float_s_arg_insufficient_fprs(float, float, float, float, float, float, float, i64)
+// CHECK: define void @f_float_float_s_arg_insufficient_fprs(float %0, float %1, float %2, float %3, float %4, float %5, float %6, i64 %7)
 #[no_mangle]
 pub extern "C" fn f_float_float_s_arg_insufficient_fprs(
     a: f32,
@@ -88,7 +88,7 @@ pub struct FloatInt64 {
     i: i64,
 }
 
-// CHECK: define void @f_float_int8_s_arg({ float, i8 })
+// CHECK: define void @f_float_int8_s_arg({ float, i8 } %0)
 #[no_mangle]
 pub extern "C" fn f_float_int8_s_arg(a: FloatInt8) {}
 
@@ -98,7 +98,7 @@ pub extern "C" fn f_ret_float_int8_s() -> FloatInt8 {
     FloatInt8 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_float_int32_s_arg({ float, i32 })
+// CHECK: define void @f_float_int32_s_arg({ float, i32 } %0)
 #[no_mangle]
 pub extern "C" fn f_float_int32_s_arg(a: FloatInt32) {}
 
@@ -108,7 +108,7 @@ pub extern "C" fn f_ret_float_int32_s() -> FloatInt32 {
     FloatInt32 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_float_uint8_s_arg({ float, i8 })
+// CHECK: define void @f_float_uint8_s_arg({ float, i8 } %0)
 #[no_mangle]
 pub extern "C" fn f_float_uint8_s_arg(a: FloatUInt8) {}
 
@@ -118,7 +118,7 @@ pub extern "C" fn f_ret_float_uint8_s() -> FloatUInt8 {
     FloatUInt8 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_float_int64_s_arg({ float, i64 })
+// CHECK: define void @f_float_int64_s_arg({ float, i64 } %0)
 #[no_mangle]
 pub extern "C" fn f_float_int64_s_arg(a: FloatInt64) {}
 
@@ -128,7 +128,7 @@ pub extern "C" fn f_ret_float_int64_s() -> FloatInt64 {
     FloatInt64 { f: 1., i: 2 }
 }
 
-// CHECK: define void @f_float_int8_s_arg_insufficient_gprs(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h, i64)
+// CHECK: define void @f_float_int8_s_arg_insufficient_gprs(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h, i64 %0)
 #[no_mangle]
 pub extern "C" fn f_float_int8_s_arg_insufficient_gprs(
     a: i32,
@@ -143,7 +143,7 @@ pub extern "C" fn f_float_int8_s_arg_insufficient_gprs(
 ) {
 }
 
-// CHECK: define void @f_struct_float_int8_insufficient_fprs(float, float, float, float, float, float, float, float, i64)
+// CHECK: define void @f_struct_float_int8_insufficient_fprs(float %0, float %1, float %2,  float %3, float %4, float %5, float %6, float %7, i64 %8)
 #[no_mangle]
 pub extern "C" fn f_struct_float_int8_insufficient_fprs(
     a: f32,
@@ -163,7 +163,7 @@ pub struct FloatArr1 {
     a: [f32; 1],
 }
 
-// CHECK: define void @f_floatarr1_s_arg(float)
+// CHECK: define void @f_floatarr1_s_arg(float %0)
 #[no_mangle]
 pub extern "C" fn f_floatarr1_s_arg(a: FloatArr1) {}
 
@@ -178,7 +178,7 @@ pub struct FloatArr2 {
     a: [f32; 2],
 }
 
-// CHECK: define void @f_floatarr2_s_arg({ float, float })
+// CHECK: define void @f_floatarr2_s_arg({ float, float } %0)
 #[no_mangle]
 pub extern "C" fn f_floatarr2_s_arg(a: FloatArr2) {}
 
@@ -198,7 +198,7 @@ pub struct FloatArr2Tricky1 {
     g: [Tricky1; 2],
 }
 
-// CHECK: define void @f_floatarr2_tricky1_s_arg({ float, float })
+// CHECK: define void @f_floatarr2_tricky1_s_arg({ float, float } %0)
 #[no_mangle]
 pub extern "C" fn f_floatarr2_tricky1_s_arg(a: FloatArr2Tricky1) {}
 
@@ -217,7 +217,7 @@ pub struct FloatArr2Tricky2 {
     g: [Tricky1; 2],
 }
 
-// CHECK: define void @f_floatarr2_tricky2_s_arg({ float, float })
+// CHECK: define void @f_floatarr2_tricky2_s_arg({ float, float } %0)
 #[no_mangle]
 pub extern "C" fn f_floatarr2_tricky2_s_arg(a: FloatArr2Tricky2) {}
 
@@ -234,7 +234,7 @@ pub struct IntFloatInt {
     c: i32,
 }
 
-// CHECK: define void @f_int_float_int_s_arg([2 x i64])
+// CHECK: define void @f_int_float_int_s_arg([2 x i64] %0)
 #[no_mangle]
 pub extern "C" fn f_int_float_int_s_arg(a: IntFloatInt) {}
 
@@ -251,7 +251,7 @@ pub struct CharCharFloat {
     c: f32,
 }
 
-// CHECK: define void @f_char_char_float_s_arg(i64)
+// CHECK: define void @f_char_char_float_s_arg(i64 %0)
 #[no_mangle]
 pub extern "C" fn f_char_char_float_s_arg(a: CharCharFloat) {}
 
@@ -266,7 +266,7 @@ pub union FloatU {
     a: f32,
 }
 
-// CHECK: define void @f_float_u_arg(i64)
+// CHECK: define void @f_float_u_arg(i64 %0)
 #[no_mangle]
 pub extern "C" fn f_float_u_arg(a: FloatU) {}
 
diff --git a/src/test/codegen/stack-probes.rs b/src/test/codegen/stack-probes.rs
index b8ebf338cbf..3e3222d4735 100644
--- a/src/test/codegen/stack-probes.rs
+++ b/src/test/codegen/stack-probes.rs
@@ -5,6 +5,7 @@
 // ignore-powerpc
 // ignore-powerpc64
 // ignore-powerpc64le
+// ignore-riscv64
 // ignore-s390x
 // ignore-sparc
 // ignore-sparc64
diff --git a/src/test/codegen/x86_mmx.rs b/src/test/codegen/x86_mmx.rs
index a08ba361740..9a58ef1c37a 100644
--- a/src/test/codegen/x86_mmx.rs
+++ b/src/test/codegen/x86_mmx.rs
@@ -6,6 +6,7 @@
 // ignore-powerpc
 // ignore-powerpc64
 // ignore-powerpc64le
+// ignore-riscv64
 // ignore-sparc
 // ignore-sparc64
 // ignore-s390x
diff --git a/src/test/mir-opt/const_prop/bad_op_div_by_zero/rustc.main.ConstProp.diff b/src/test/mir-opt/const_prop/bad_op_div_by_zero/rustc.main.ConstProp.diff
index 333bf0e320b..de06e5334e0 100644
--- a/src/test/mir-opt/const_prop/bad_op_div_by_zero/rustc.main.ConstProp.diff
+++ b/src/test/mir-opt/const_prop/bad_op_div_by_zero/rustc.main.ConstProp.diff
@@ -59,7 +59,7 @@
                                            // mir::Constant
                                            // + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:19
 -                                          // + literal: Const { ty: i32, val: Value(Scalar(0xffffffff)) }
--         _6 = Eq(const 1i32, const std::i32::MIN); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
+-         _6 = Eq(const 1i32, const i32::MIN); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
 +                                          // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
 +         _6 = const false;                // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
                                            // ty::Const
diff --git a/src/test/mir-opt/const_prop/bad_op_mod_by_zero/rustc.main.ConstProp.diff b/src/test/mir-opt/const_prop/bad_op_mod_by_zero/rustc.main.ConstProp.diff
index c081b46366e..7052c838704 100644
--- a/src/test/mir-opt/const_prop/bad_op_mod_by_zero/rustc.main.ConstProp.diff
+++ b/src/test/mir-opt/const_prop/bad_op_mod_by_zero/rustc.main.ConstProp.diff
@@ -59,7 +59,7 @@
                                            // mir::Constant
                                            // + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
 -                                          // + literal: Const { ty: i32, val: Value(Scalar(0xffffffff)) }
--         _6 = Eq(const 1i32, const std::i32::MIN); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
+-         _6 = Eq(const 1i32, const i32::MIN); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
 +                                          // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
 +         _6 = const false;                // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
                                            // ty::Const
diff --git a/src/test/mir-opt/simplify-arm/rustc.id.SimplifyArmIdentity.diff b/src/test/mir-opt/simplify-arm/rustc.id.SimplifyArmIdentity.diff
index 8d08267d75b..8bb28206964 100644
--- a/src/test/mir-opt/simplify-arm/rustc.id.SimplifyArmIdentity.diff
+++ b/src/test/mir-opt/simplify-arm/rustc.id.SimplifyArmIdentity.diff
@@ -26,15 +26,14 @@
       }
   
       bb3: {
--         StorageLive(_3);                 // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
--         _3 = ((_1 as Some).0: u8);       // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
--         StorageLive(_4);                 // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
--         _4 = _3;                         // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
--         ((_0 as Some).0: u8) = move _4;  // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
--         discriminant(_0) = 1;            // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
--         StorageDead(_4);                 // scope 1 at $DIR/simplify-arm.rs:11:26: 11:27
--         StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:11:27: 11:28
-+         _0 = move _1;                    // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
+          StorageLive(_3);                 // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
+          _3 = ((_1 as Some).0: u8);       // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
+          StorageLive(_4);                 // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
+          _4 = _3;                         // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
+          ((_0 as Some).0: u8) = move _4;  // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
+          discriminant(_0) = 1;            // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
+          StorageDead(_4);                 // scope 1 at $DIR/simplify-arm.rs:11:26: 11:27
+          StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:11:27: 11:28
           goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:10:5: 13:6
       }
   
diff --git a/src/test/mir-opt/simplify-arm/rustc.id.SimplifyBranchSame.diff b/src/test/mir-opt/simplify-arm/rustc.id.SimplifyBranchSame.diff
index 23fa9817f80..1226b4feaf4 100644
--- a/src/test/mir-opt/simplify-arm/rustc.id.SimplifyBranchSame.diff
+++ b/src/test/mir-opt/simplify-arm/rustc.id.SimplifyBranchSame.diff
@@ -26,7 +26,14 @@
       }
   
       bb3: {
-          _0 = move _1;                    // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
+          StorageLive(_3);                 // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
+          _3 = ((_1 as Some).0: u8);       // scope 0 at $DIR/simplify-arm.rs:11:14: 11:15
+          StorageLive(_4);                 // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
+          _4 = _3;                         // scope 1 at $DIR/simplify-arm.rs:11:25: 11:26
+          ((_0 as Some).0: u8) = move _4;  // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
+          discriminant(_0) = 1;            // scope 1 at $DIR/simplify-arm.rs:11:20: 11:27
+          StorageDead(_4);                 // scope 1 at $DIR/simplify-arm.rs:11:26: 11:27
+          StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:11:27: 11:28
           goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:10:5: 13:6
       }
   
diff --git a/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyArmIdentity.diff b/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyArmIdentity.diff
index e2a12ca5be2..5a5d67b36d9 100644
--- a/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyArmIdentity.diff
+++ b/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyArmIdentity.diff
@@ -22,15 +22,14 @@
       }
   
       bb1: {
--         StorageLive(_5);                 // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
--         _5 = ((_1 as Err).0: i32);       // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
--         StorageLive(_6);                 // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
--         _6 = _5;                         // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
--         ((_0 as Err).0: i32) = move _6;  // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
--         discriminant(_0) = 1;            // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
--         StorageDead(_6);                 // scope 2 at $DIR/simplify-arm.rs:19:24: 19:25
--         StorageDead(_5);                 // scope 0 at $DIR/simplify-arm.rs:19:25: 19:26
-+         _0 = move _1;                    // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
+          StorageLive(_5);                 // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
+          _5 = ((_1 as Err).0: i32);       // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
+          StorageLive(_6);                 // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
+          _6 = _5;                         // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
+          ((_0 as Err).0: i32) = move _6;  // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
+          discriminant(_0) = 1;            // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
+          StorageDead(_6);                 // scope 2 at $DIR/simplify-arm.rs:19:24: 19:25
+          StorageDead(_5);                 // scope 0 at $DIR/simplify-arm.rs:19:25: 19:26
           goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
       }
   
@@ -39,15 +38,14 @@
       }
   
       bb3: {
--         StorageLive(_3);                 // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
--         _3 = ((_1 as Ok).0: u8);         // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
--         StorageLive(_4);                 // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
--         _4 = _3;                         // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
--         ((_0 as Ok).0: u8) = move _4;    // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
--         discriminant(_0) = 0;            // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
--         StorageDead(_4);                 // scope 1 at $DIR/simplify-arm.rs:18:22: 18:23
--         StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:18:23: 18:24
-+         _0 = move _1;                    // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
+          StorageLive(_3);                 // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
+          _3 = ((_1 as Ok).0: u8);         // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
+          StorageLive(_4);                 // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
+          _4 = _3;                         // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
+          ((_0 as Ok).0: u8) = move _4;    // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
+          discriminant(_0) = 0;            // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
+          StorageDead(_4);                 // scope 1 at $DIR/simplify-arm.rs:18:22: 18:23
+          StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:18:23: 18:24
           goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
       }
   
diff --git a/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyBranchSame.diff b/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyBranchSame.diff
index 9d1ff22dc51..e8286516261 100644
--- a/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyBranchSame.diff
+++ b/src/test/mir-opt/simplify-arm/rustc.id_result.SimplifyBranchSame.diff
@@ -18,27 +18,38 @@
   
       bb0: {
           _2 = discriminant(_1);           // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
--         switchInt(move _2) -> [0isize: bb3, 1isize: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
-+         goto -> bb1;                     // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
+          switchInt(move _2) -> [0isize: bb3, 1isize: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:18:9: 18:14
       }
   
       bb1: {
--         _0 = move _1;                    // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
--         goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
--     }
-- 
--     bb2: {
--         unreachable;                     // scope 0 at $DIR/simplify-arm.rs:17:11: 17:12
--     }
-- 
--     bb3: {
-          _0 = move _1;                    // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
--         goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
-+         goto -> bb2;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
+          StorageLive(_5);                 // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
+          _5 = ((_1 as Err).0: i32);       // scope 0 at $DIR/simplify-arm.rs:19:13: 19:14
+          StorageLive(_6);                 // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
+          _6 = _5;                         // scope 2 at $DIR/simplify-arm.rs:19:23: 19:24
+          ((_0 as Err).0: i32) = move _6;  // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
+          discriminant(_0) = 1;            // scope 2 at $DIR/simplify-arm.rs:19:19: 19:25
+          StorageDead(_6);                 // scope 2 at $DIR/simplify-arm.rs:19:24: 19:25
+          StorageDead(_5);                 // scope 0 at $DIR/simplify-arm.rs:19:25: 19:26
+          goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
       }
   
--     bb4: {
-+     bb2: {
+      bb2: {
+          unreachable;                     // scope 0 at $DIR/simplify-arm.rs:17:11: 17:12
+      }
+  
+      bb3: {
+          StorageLive(_3);                 // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
+          _3 = ((_1 as Ok).0: u8);         // scope 0 at $DIR/simplify-arm.rs:18:12: 18:13
+          StorageLive(_4);                 // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
+          _4 = _3;                         // scope 1 at $DIR/simplify-arm.rs:18:21: 18:22
+          ((_0 as Ok).0: u8) = move _4;    // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
+          discriminant(_0) = 0;            // scope 1 at $DIR/simplify-arm.rs:18:18: 18:23
+          StorageDead(_4);                 // scope 1 at $DIR/simplify-arm.rs:18:22: 18:23
+          StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:18:23: 18:24
+          goto -> bb4;                     // scope 0 at $DIR/simplify-arm.rs:17:5: 20:6
+      }
+  
+      bb4: {
           return;                          // scope 0 at $DIR/simplify-arm.rs:21:2: 21:2
       }
   }
diff --git a/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyArmIdentity.diff b/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyArmIdentity.diff
index 64b5f174300..44f475346e0 100644
--- a/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyArmIdentity.diff
+++ b/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyArmIdentity.diff
@@ -49,17 +49,16 @@
       }
   
       bb2: {
--         StorageLive(_10);                // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
--         _10 = ((_3 as Ok).0: u8);        // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
--         _2 = _10;                        // scope 5 at $DIR/simplify-arm.rs:24:13: 24:15
--         StorageDead(_10);                // scope 0 at $DIR/simplify-arm.rs:24:14: 24:15
-+         _0 = move _3;                    // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
+          StorageLive(_10);                // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
+          _10 = ((_3 as Ok).0: u8);        // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
+          _2 = _10;                        // scope 5 at $DIR/simplify-arm.rs:24:13: 24:15
+          StorageDead(_10);                // scope 0 at $DIR/simplify-arm.rs:24:14: 24:15
           StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:24:15: 24:16
--         StorageLive(_11);                // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
--         _11 = _2;                        // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
--         ((_0 as Ok).0: u8) = move _11;   // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
--         discriminant(_0) = 0;            // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
--         StorageDead(_11);                // scope 1 at $DIR/simplify-arm.rs:25:9: 25:10
+          StorageLive(_11);                // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
+          _11 = _2;                        // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
+          ((_0 as Ok).0: u8) = move _11;   // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
+          discriminant(_0) = 0;            // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
+          StorageDead(_11);                // scope 1 at $DIR/simplify-arm.rs:25:9: 25:10
           StorageDead(_2);                 // scope 0 at $DIR/simplify-arm.rs:26:1: 26:2
           goto -> bb5;                     // scope 0 at $DIR/simplify-arm.rs:26:2: 26:2
       }
diff --git a/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyBranchSame.diff b/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyBranchSame.diff
index 01f57bec71a..c91c55dfb04 100644
--- a/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyBranchSame.diff
+++ b/src/test/mir-opt/simplify-arm/rustc.id_try.SimplifyBranchSame.diff
@@ -49,8 +49,16 @@
       }
   
       bb2: {
-          _0 = move _3;                    // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
+          StorageLive(_10);                // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
+          _10 = ((_3 as Ok).0: u8);        // scope 0 at $DIR/simplify-arm.rs:24:13: 24:15
+          _2 = _10;                        // scope 5 at $DIR/simplify-arm.rs:24:13: 24:15
+          StorageDead(_10);                // scope 0 at $DIR/simplify-arm.rs:24:14: 24:15
           StorageDead(_3);                 // scope 0 at $DIR/simplify-arm.rs:24:15: 24:16
+          StorageLive(_11);                // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
+          _11 = _2;                        // scope 1 at $DIR/simplify-arm.rs:25:8: 25:9
+          ((_0 as Ok).0: u8) = move _11;   // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
+          discriminant(_0) = 0;            // scope 1 at $DIR/simplify-arm.rs:25:5: 25:10
+          StorageDead(_11);                // scope 1 at $DIR/simplify-arm.rs:25:9: 25:10
           StorageDead(_2);                 // scope 0 at $DIR/simplify-arm.rs:26:1: 26:2
           goto -> bb5;                     // scope 0 at $DIR/simplify-arm.rs:26:2: 26:2
       }
diff --git a/src/test/mir-opt/simplify_try_if_let/rustc.{{impl}}-append.SimplifyArmIdentity.diff b/src/test/mir-opt/simplify_try_if_let/rustc.{{impl}}-append.SimplifyArmIdentity.diff
index 6ccec937b9b..7d3537d0943 100644
--- a/src/test/mir-opt/simplify_try_if_let/rustc.{{impl}}-append.SimplifyArmIdentity.diff
+++ b/src/test/mir-opt/simplify_try_if_let/rustc.{{impl}}-append.SimplifyArmIdentity.diff
@@ -80,12 +80,11 @@
           StorageLive(_8);                 // scope 1 at $DIR/simplify_try_if_let.rs:26:29: 26:39
           _8 = ((_5 as Some).0: std::ptr::NonNull<Node>); // scope 1 at $DIR/simplify_try_if_let.rs:26:29: 26:39
           StorageLive(_9);                 // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
--         StorageLive(_10);                // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
--         _10 = _8;                        // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
--         ((_9 as Some).0: std::ptr::NonNull<Node>) = move _10; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
--         discriminant(_9) = 1;            // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
--         StorageDead(_10);                // scope 3 at $DIR/simplify_try_if_let.rs:28:61: 28:62
-+         _9 = move _5;                    // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
+          StorageLive(_10);                // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
+          _10 = _8;                        // scope 3 at $DIR/simplify_try_if_let.rs:28:51: 28:61
+          ((_9 as Some).0: std::ptr::NonNull<Node>) = move _10; // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
+          discriminant(_9) = 1;            // scope 3 at $DIR/simplify_try_if_let.rs:28:46: 28:62
+          StorageDead(_10);                // scope 3 at $DIR/simplify_try_if_let.rs:28:61: 28:62
           StorageLive(_11);                // scope 3 at $DIR/simplify_try_if_let.rs:28:25: 28:38
           StorageLive(_12);                // scope 3 at $DIR/simplify_try_if_let.rs:28:25: 28:29
           _12 = &mut _4;                   // scope 3 at $DIR/simplify_try_if_let.rs:28:25: 28:29
diff --git a/src/test/pretty/asm.pp b/src/test/pretty/asm.pp
index 1723e1cc1cb..4903050e08e 100644
--- a/src/test/pretty/asm.pp
+++ b/src/test/pretty/asm.pp
@@ -8,6 +8,7 @@ extern crate std;
 
 // pretty-mode:expanded
 // pp-exact:asm.pp
+// only-x86_64
 
 pub fn main() {
     let a: i32;
diff --git a/src/test/pretty/asm.rs b/src/test/pretty/asm.rs
index 9812f1d97e5..12c32e6721b 100644
--- a/src/test/pretty/asm.rs
+++ b/src/test/pretty/asm.rs
@@ -2,6 +2,7 @@
 
 // pretty-mode:expanded
 // pp-exact:asm.pp
+// only-x86_64
 
 pub fn main() {
     let a: i32;
diff --git a/src/test/run-make-fulldeps/incr-add-rust-src-component/Makefile b/src/test/run-make-fulldeps/incr-add-rust-src-component/Makefile
new file mode 100644
index 00000000000..50ff3dd56ce
--- /dev/null
+++ b/src/test/run-make-fulldeps/incr-add-rust-src-component/Makefile
@@ -0,0 +1,44 @@
+-include ../tools.mk
+
+# rust-lang/rust#70924: Test that if we add rust-src component in between two
+# incremetnal compiles, the compiler does not ICE on the second.
+
+# This test uses `ln -s` rather than copying to save testing time, but its
+# usage doesn't work on windows. So ignore windows.
+
+# ignore-windows
+
+SYSROOT:=$(shell $(RUSTC) --print sysroot)
+FAKEROOT=$(TMPDIR)/fakeroot
+INCR=$(TMPDIR)/incr
+
+# Make a local copy of the sysroot; then remove the rust-src part of it, if
+# present, for the *first* build. Then put in a facsimile of the rust-src
+# component for the second build, in order to expose the ICE from issue #70924.
+#
+# Note that it is much easier to just do `cp -a $(SYSROOT)/* $(FAKEROOT)` as a
+# first step, but I am concerned that would be too expensive in a unit test
+# compared to making symbolic links.
+#
+# Anyway, the pattern you'll see here is: For every prefix in
+# root/lib/rustlib/src, link all of prefix parent content, then remove the
+# prefix, then loop on the next prefix. This way, we basically create a copy of
+# the context around root/lib/rustlib/src, and can freely add/remove the src
+# component itself.
+all:
+	mkdir $(FAKEROOT)
+	ln -s $(SYSROOT)/* $(FAKEROOT)
+	rm -f $(FAKEROOT)/lib
+	mkdir $(FAKEROOT)/lib
+	ln -s $(SYSROOT)/lib/* $(FAKEROOT)/lib
+	rm -f $(FAKEROOT)/lib/rustlib
+	mkdir $(FAKEROOT)/lib/rustlib
+	ln -s $(SYSROOT)/lib/rustlib/* $(FAKEROOT)/lib/rustlib
+	rm -f $(FAKEROOT)/lib/rustlib/src
+	mkdir $(FAKEROOT)/lib/rustlib/src
+	ln -s $(SYSROOT)/lib/rustlib/src/* $(FAKEROOT)/lib/rustlib/src
+	rm -f $(FAKEROOT)/lib/rustlib/src/rust
+	$(RUSTC) --sysroot $(FAKEROOT) -C incremental=$(INCR) main.rs
+	mkdir -p $(FAKEROOT)/lib/rustlib/src/rust/src/libstd
+	touch $(FAKEROOT)/lib/rustlib/src/rust/src/libstd/lib.rs
+	$(RUSTC) --sysroot $(FAKEROOT) -C incremental=$(INCR) main.rs
diff --git a/src/test/run-make-fulldeps/incr-add-rust-src-component/main.rs b/src/test/run-make-fulldeps/incr-add-rust-src-component/main.rs
new file mode 100644
index 00000000000..f6320bcb04a
--- /dev/null
+++ b/src/test/run-make-fulldeps/incr-add-rust-src-component/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+    println!("Hello World");
+}
diff --git a/src/test/rustdoc-ui/doctest-output.rs b/src/test/rustdoc-ui/doctest-output.rs
new file mode 100644
index 00000000000..f812263c252
--- /dev/null
+++ b/src/test/rustdoc-ui/doctest-output.rs
@@ -0,0 +1,15 @@
+// compile-flags:--test --test-args=--test-threads=1
+// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR"
+// check-pass
+
+//! ```
+//! assert_eq!(1 + 1, 2);
+//! ```
+
+pub mod foo {
+
+    /// ```
+    /// assert_eq!(1 + 1, 2);
+    /// ```
+    pub fn bar() {}
+}
diff --git a/src/test/rustdoc-ui/doctest-output.stdout b/src/test/rustdoc-ui/doctest-output.stdout
new file mode 100644
index 00000000000..9a55bf50196
--- /dev/null
+++ b/src/test/rustdoc-ui/doctest-output.stdout
@@ -0,0 +1,7 @@
+
+running 2 tests
+test $DIR/doctest-output.rs - (line 5) ... ok
+test $DIR/doctest-output.rs - foo::bar (line 11) ... ok
+
+test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
+
diff --git a/src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs b/src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs
new file mode 100644
index 00000000000..04a431d9902
--- /dev/null
+++ b/src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs
@@ -0,0 +1,35 @@
+// force-host
+// no-prefer-dynamic
+// compile-flags: --crate-type proc-macro
+
+#![crate_type="proc-macro"]
+#![crate_name="intra_link_proc_macro_macro"]
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+#[proc_macro_derive(DeriveA)]
+pub fn a_derive(input: TokenStream) -> TokenStream {
+    input
+}
+
+#[proc_macro_derive(DeriveB)]
+pub fn b_derive(input: TokenStream) -> TokenStream {
+    input
+}
+
+#[proc_macro_derive(DeriveTrait)]
+pub fn trait_derive(input: TokenStream) -> TokenStream {
+    input
+}
+
+#[proc_macro_attribute]
+pub fn attr_a(input: TokenStream, _args: TokenStream) -> TokenStream {
+    input
+}
+
+#[proc_macro_attribute]
+pub fn attr_b(input: TokenStream, _args: TokenStream) -> TokenStream {
+    input
+}
diff --git a/src/test/rustdoc/auxiliary/issue-73061.rs b/src/test/rustdoc/auxiliary/issue-73061.rs
new file mode 100644
index 00000000000..e05a3bc6d91
--- /dev/null
+++ b/src/test/rustdoc/auxiliary/issue-73061.rs
@@ -0,0 +1,17 @@
+//edition:2018
+
+#![feature(type_alias_impl_trait)]
+
+pub trait Foo {
+    type X: std::future::Future<Output = ()>;
+    fn x(&self) -> Self::X;
+}
+
+pub struct F;
+
+impl Foo for F {
+    type X = impl std::future::Future<Output = ()>;
+    fn x(&self) -> Self::X {
+        async {}
+    }
+}
diff --git a/src/test/rustdoc/intra-link-proc-macro.rs b/src/test/rustdoc/intra-link-proc-macro.rs
new file mode 100644
index 00000000000..7b6ea5d60f8
--- /dev/null
+++ b/src/test/rustdoc/intra-link-proc-macro.rs
@@ -0,0 +1,27 @@
+// aux-build:intra-link-proc-macro-macro.rs
+// build-aux-docs
+#![deny(intra_doc_link_resolution_failure)]
+
+extern crate intra_link_proc_macro_macro;
+
+
+pub use intra_link_proc_macro_macro::{DeriveA, attr_a};
+use intra_link_proc_macro_macro::{DeriveB, attr_b};
+
+// @has intra_link_proc_macro/struct.Foo.html
+// @has - '//a/@href' '../intra_link_proc_macro/derive.DeriveA.html'
+// @has - '//a/@href' '../intra_link_proc_macro/attr.attr_a.html'
+// @has - '//a/@href' '../intra_link_proc_macro/trait.DeriveTrait.html'
+// @has - '//a/@href' '../intra_link_proc_macro_macro/derive.DeriveB.html'
+// @has - '//a/@href' '../intra_link_proc_macro_macro/attr.attr_b.html'
+/// Link to [DeriveA], [attr_a], [DeriveB], [attr_b], [DeriveTrait]
+pub struct Foo;
+
+// @has intra_link_proc_macro/struct.Bar.html
+// @has - '//a/@href' '../intra_link_proc_macro/derive.DeriveA.html'
+// @has - '//a/@href' '../intra_link_proc_macro/attr.attr_a.html'
+/// Link to [deriveA](derive@DeriveA) [attr](macro@attr_a)
+pub struct Bar;
+
+// this should not cause ambiguity errors
+pub trait DeriveTrait {}
diff --git a/src/test/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs b/src/test/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs
new file mode 100644
index 00000000000..2700f2370ee
--- /dev/null
+++ b/src/test/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs
@@ -0,0 +1,14 @@
+// Regression test for ICE #73061
+
+// aux-build:issue-73061.rs
+
+extern crate issue_73061;
+
+pub struct Z;
+
+impl issue_73061::Foo for Z {
+    type X = <issue_73061::F as issue_73061::Foo>::X;
+    fn x(&self) -> Self::X {
+        issue_73061::F.x()
+    }
+}
diff --git a/src/test/rustdoc/show-const-contents.rs b/src/test/rustdoc/show-const-contents.rs
index b35f67ef912..814339e198f 100644
--- a/src/test/rustdoc/show-const-contents.rs
+++ b/src/test/rustdoc/show-const-contents.rs
@@ -28,8 +28,8 @@ pub const CONST_CALC_I32: i32 = 42 + 1;
 // @!has show_const_contents/constant.CONST_REF_I32.html '; //'
 pub const CONST_REF_I32: &'static i32 = &42;
 
-// @has show_const_contents/constant.CONST_I32_MAX.html '= i32::max_value(); // 2_147_483_647i32'
-pub const CONST_I32_MAX: i32 = i32::max_value();
+// @has show_const_contents/constant.CONST_I32_MAX.html '= i32::MAX; // 2_147_483_647i32'
+pub const CONST_I32_MAX: i32 = i32::MAX;
 
 // @!has show_const_contents/constant.UNIT.html '= ();'
 // @!has show_const_contents/constant.UNIT.html '; //'
@@ -56,11 +56,11 @@ pub use std::i32::MAX;
 
 macro_rules! int_module {
     ($T:ident) => (
-        pub const MIN: $T = $T::min_value();
+        pub const MIN: $T = $T::MIN;
     )
 }
 
-// @has show_const_contents/constant.MIN.html '= i16::min_value(); // -32_768i16'
+// @has show_const_contents/constant.MIN.html '= i16::MIN; // -32_768i16'
 int_module!(i16);
 
 // @has show_const_contents/constant.ESCAPE.html //pre '= r#"<script>alert("ESCAPE");</script>"#;'
diff --git a/src/test/ui-fulldeps/pprust-expr-roundtrip.rs b/src/test/ui-fulldeps/pprust-expr-roundtrip.rs
index cef600bed5f..6da26e6cfbe 100644
--- a/src/test/ui-fulldeps/pprust-expr-roundtrip.rs
+++ b/src/test/ui-fulldeps/pprust-expr-roundtrip.rs
@@ -84,9 +84,9 @@ fn iter_exprs(depth: usize, f: &mut dyn FnMut(P<Expr>)) {
             2 => {
                 let seg = PathSegment::from_ident(Ident::from_str("x"));
                 iter_exprs(depth - 1, &mut |e| g(ExprKind::MethodCall(
-                            seg.clone(), vec![e, make_x()])));
+                            seg.clone(), vec![e, make_x()], DUMMY_SP)));
                 iter_exprs(depth - 1, &mut |e| g(ExprKind::MethodCall(
-                            seg.clone(), vec![make_x(), e])));
+                            seg.clone(), vec![make_x(), e], DUMMY_SP)));
             },
             3..=8 => {
                 let op = Spanned {
diff --git a/src/test/ui/annotate-snippet/auxiliary/multispan.rs b/src/test/ui/annotate-snippet/auxiliary/multispan.rs
new file mode 100644
index 00000000000..c05d15643db
--- /dev/null
+++ b/src/test/ui/annotate-snippet/auxiliary/multispan.rs
@@ -0,0 +1,37 @@
+// force-host
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+#![feature(proc_macro_diagnostic, proc_macro_span, proc_macro_def_site)]
+
+extern crate proc_macro;
+
+use proc_macro::{TokenStream, TokenTree, Span, Diagnostic};
+
+fn parse(input: TokenStream) -> Result<(), Diagnostic> {
+    let mut hi_spans = vec![];
+    for tree in input {
+        if let TokenTree::Ident(ref ident) = tree {
+            if ident.to_string() == "hi" {
+                hi_spans.push(ident.span());
+            }
+        }
+    }
+
+    if !hi_spans.is_empty() {
+        return Err(Span::def_site()
+                       .error("hello to you, too!")
+                       .span_note(hi_spans, "found these 'hi's"));
+    }
+
+    Ok(())
+}
+
+#[proc_macro]
+pub fn hello(input: TokenStream) -> TokenStream {
+    if let Err(diag) = parse(input) {
+        diag.emit();
+    }
+
+    TokenStream::new()
+}
diff --git a/src/test/ui/annotate-snippet/missing-type.stderr b/src/test/ui/annotate-snippet/missing-type.stderr
index 806acf0bed5..c16f022a77f 100644
--- a/src/test/ui/annotate-snippet/missing-type.stderr
+++ b/src/test/ui/annotate-snippet/missing-type.stderr
@@ -1,5 +1,5 @@
 error[E0412]: cannot find type `Iter` in this scope
-  --> $DIR/missing-type.rs:4:11
+  --> $DIR/missing-type.rs:4:12
    |
 LL |     let x: Iter;
    |            ^^^^ not found in this scope
diff --git a/src/test/ui/annotate-snippet/multispan.rs b/src/test/ui/annotate-snippet/multispan.rs
new file mode 100644
index 00000000000..325252d7716
--- /dev/null
+++ b/src/test/ui/annotate-snippet/multispan.rs
@@ -0,0 +1,28 @@
+// aux-build:multispan.rs
+// compile-flags: --error-format human-annotate-rs
+
+#![feature(proc_macro_hygiene)]
+
+extern crate multispan;
+
+use multispan::hello;
+
+fn main() {
+    // This one emits no error.
+    hello!();
+
+    // Exactly one 'hi'.
+    hello!(hi); //~ ERROR hello to you, too!
+
+    // Now two, back to back.
+    hello!(hi hi); //~ ERROR hello to you, too!
+
+    // Now three, back to back.
+    hello!(hi hi hi); //~ ERROR hello to you, too!
+
+    // Now several, with spacing.
+    hello!(hi hey hi yo hi beep beep hi hi); //~ ERROR hello to you, too!
+    hello!(hi there, hi how are you? hi... hi.); //~ ERROR hello to you, too!
+    hello!(whoah. hi di hi di ho); //~ ERROR hello to you, too!
+    hello!(hi good hi and good bye); //~ ERROR hello to you, too!
+}
diff --git a/src/test/ui/annotate-snippet/multispan.stderr b/src/test/ui/annotate-snippet/multispan.stderr
new file mode 100644
index 00000000000..4ac31e32ba7
--- /dev/null
+++ b/src/test/ui/annotate-snippet/multispan.stderr
@@ -0,0 +1,42 @@
+error: hello to you, too!
+  --> $DIR/multispan.rs:15:5
+   |
+LL |     hello!(hi);
+   |     ^^^^^^^^^^^
+   |
+error: hello to you, too!
+  --> $DIR/multispan.rs:18:5
+   |
+LL |     hello!(hi hi);
+   |     ^^^^^^^^^^^^^^
+   |
+error: hello to you, too!
+  --> $DIR/multispan.rs:21:5
+   |
+LL |     hello!(hi hi hi);
+   |     ^^^^^^^^^^^^^^^^^
+   |
+error: hello to you, too!
+  --> $DIR/multispan.rs:24:5
+   |
+LL |     hello!(hi hey hi yo hi beep beep hi hi);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+error: hello to you, too!
+  --> $DIR/multispan.rs:25:5
+   |
+LL |     hello!(hi there, hi how are you? hi... hi.);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+error: hello to you, too!
+  --> $DIR/multispan.rs:26:5
+   |
+LL |     hello!(whoah. hi di hi di ho);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+error: hello to you, too!
+  --> $DIR/multispan.rs:27:5
+   |
+LL |     hello!(hi good hi and good bye);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
diff --git a/src/test/ui/asm/bad-template.rs b/src/test/ui/asm/bad-template.rs
index 0b333eca1ab..21ce8c6236d 100644
--- a/src/test/ui/asm/bad-template.rs
+++ b/src/test/ui/asm/bad-template.rs
@@ -22,5 +22,7 @@ fn main() {
         //~^ ERROR invalid reference to argument at index 0
         asm!("{:foo}", in(reg) foo);
         //~^ ERROR asm template modifier must be a single character
+        asm!("", in(reg) 0, in(reg) 1);
+        //~^ ERROR multiple unused asm arguments
     }
 }
diff --git a/src/test/ui/asm/bad-template.stderr b/src/test/ui/asm/bad-template.stderr
index 2de76ef8241..1aea7467ed0 100644
--- a/src/test/ui/asm/bad-template.stderr
+++ b/src/test/ui/asm/bad-template.stderr
@@ -19,6 +19,8 @@ error: argument never used
    |
 LL |         asm!("{1}", in(reg) foo);
    |                     ^^^^^^^^^^^ argument never used
+   |
+   = help: if this argument is intentionally unused, consider using it in an asm comment: `"/* {0} */"`
 
 error: there is no argument named `a`
   --> $DIR/bad-template.rs:13:15
@@ -46,6 +48,8 @@ error: named argument never used
    |
 LL |         asm!("{}", a = in(reg) foo);
    |                    ^^^^^^^^^^^^^^^ named argument never used
+   |
+   = help: if this argument is intentionally unused, consider using it in an asm comment: `"/* {a} */"`
 
 error: invalid reference to argument at index 1
   --> $DIR/bad-template.rs:18:15
@@ -60,6 +64,8 @@ error: named argument never used
    |
 LL |         asm!("{1}", a = in(reg) foo);
    |                     ^^^^^^^^^^^^^^^ named argument never used
+   |
+   = help: if this argument is intentionally unused, consider using it in an asm comment: `"/* {a} */"`
 
 error: invalid reference to argument at index 0
   --> $DIR/bad-template.rs:21:15
@@ -82,5 +88,15 @@ error: asm template modifier must be a single character
 LL |         asm!("{:foo}", in(reg) foo);
    |                 ^^^
 
-error: aborting due to 10 previous errors
+error: multiple unused asm arguments
+  --> $DIR/bad-template.rs:25:18
+   |
+LL |         asm!("", in(reg) 0, in(reg) 1);
+   |                  ^^^^^^^^^  ^^^^^^^^^ argument never used
+   |                  |
+   |                  argument never used
+   |
+   = help: if these arguments are intentionally unused, consider using them in an asm comment: `"/* {0} {1} */"`
+
+error: aborting due to 11 previous errors
 
diff --git a/src/test/ui/asm/parse-error.stderr b/src/test/ui/asm/parse-error.stderr
index fa422f56bec..583a1057036 100644
--- a/src/test/ui/asm/parse-error.stderr
+++ b/src/test/ui/asm/parse-error.stderr
@@ -127,6 +127,8 @@ error: argument never used
    |
 LL |         asm!("{a}", a = const foo, a = const bar);
    |                                    ^^^^^^^^^^^^^ argument never used
+   |
+   = help: if this argument is intentionally unused, consider using it in an asm comment: `"/* {1} */"`
 
 error: explicit register arguments cannot have names
   --> $DIR/parse-error.rs:47:18
diff --git a/src/test/ui/asm/srcloc.rs b/src/test/ui/asm/srcloc.rs
index 7af6f620a98..402adc50d5b 100644
--- a/src/test/ui/asm/srcloc.rs
+++ b/src/test/ui/asm/srcloc.rs
@@ -37,5 +37,8 @@ fn main() {
 
         asm!(concat!("invalid", "_", "instruction"));
         //~^ ERROR: invalid instruction mnemonic 'invalid_instruction'
+
+        asm!("movaps %xmm3, (%esi, 2)", options(att_syntax));
+        //~^ WARN: scale factor without index register is ignored
     }
 }
diff --git a/src/test/ui/asm/srcloc.stderr b/src/test/ui/asm/srcloc.stderr
index 57a4fbb9742..d5d12b00481 100644
--- a/src/test/ui/asm/srcloc.stderr
+++ b/src/test/ui/asm/srcloc.stderr
@@ -70,5 +70,17 @@ note: instantiated into assembly here
 LL |     invalid_instruction
    |     ^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to 6 previous errors
+warning: scale factor without index register is ignored
+  --> $DIR/srcloc.rs:41:15
+   |
+LL |         asm!("movaps %xmm3, (%esi, 2)", options(att_syntax));
+   |               ^
+   |
+note: instantiated into assembly here
+  --> <inline asm>:1:23
+   |
+LL |     movaps %xmm3, (%esi, 2)
+   |                          ^
+
+error: aborting due to 6 previous errors; 1 warning emitted
 
diff --git a/src/test/ui/asm/sym.rs b/src/test/ui/asm/sym.rs
index 83a3672af49..8cff16aa75f 100644
--- a/src/test/ui/asm/sym.rs
+++ b/src/test/ui/asm/sym.rs
@@ -1,8 +1,9 @@
 // no-system-llvm
 // only-x86_64
+// only-linux
 // run-pass
 
-#![feature(asm, track_caller)]
+#![feature(asm, track_caller, thread_local)]
 
 extern "C" fn f1() -> i32 {
     111
@@ -15,9 +16,9 @@ fn f2() -> i32 {
 }
 
 macro_rules! call {
-    ($func:path) => {{
-        let result: i32;
+    ($func:path) => {
         unsafe {
+            let result: i32;
             asm!("call {}", sym $func,
                 out("rax") result,
                 out("rcx") _, out("rdx") _, out("rdi") _, out("rsi") _,
@@ -27,12 +28,53 @@ macro_rules! call {
                 out("xmm8") _, out("xmm9") _, out("xmm10") _, out("xmm11") _,
                 out("xmm12") _, out("xmm13") _, out("xmm14") _, out("xmm15") _,
             );
+            result
         }
-        result
-    }}
+    }
 }
 
+macro_rules! static_addr {
+    ($s:expr) => {
+        unsafe {
+            let result: *const u32;
+            // LEA performs a RIP-relative address calculation and returns the address
+            asm!("lea {}, [rip + {}]", out(reg) result, sym $s);
+            result
+        }
+    }
+}
+macro_rules! static_tls_addr {
+    ($s:expr) => {
+        unsafe {
+            let result: *const u32;
+            asm!(
+                "
+                    # Load TLS base address
+                    mov {out}, qword ptr fs:[0]
+                    # Calculate the address of sym in the TLS block. The @tpoff
+                    # relocation gives the offset of the symbol from the start
+                    # of the TLS block.
+                    lea {out}, [{out} + {sym}@tpoff]
+                ",
+                out = out(reg) result,
+                sym = sym $s
+            );
+            result
+        }
+    }
+}
+
+static S1: u32 = 111;
+#[thread_local]
+static S2: u32 = 222;
+
 fn main() {
     assert_eq!(call!(f1), 111);
     assert_eq!(call!(f2), 222);
+    assert_eq!(static_addr!(S1), &S1 as *const u32);
+    assert_eq!(static_tls_addr!(S2), &S2 as *const u32);
+    std::thread::spawn(|| {
+        assert_eq!(static_addr!(S1), &S1 as *const u32);
+        assert_eq!(static_tls_addr!(S2), &S2 as *const u32);
+    });
 }
diff --git a/src/test/ui/associated-type-bounds/duplicate.rs b/src/test/ui/associated-type-bounds/duplicate.rs
index 8b396f23efd..8b5c5219430 100644
--- a/src/test/ui/associated-type-bounds/duplicate.rs
+++ b/src/test/ui/associated-type-bounds/duplicate.rs
@@ -108,18 +108,12 @@ type TAW3<T> where T: Iterator<Item: 'static, Item: 'static> = T;
 type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
 //~^ ERROR the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified [E0719]
 //~| ERROR could not find defining uses
-//~| ERROR could not find defining uses
-//~| ERROR could not find defining uses
 type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
 //~^ ERROR the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified [E0719]
 //~| ERROR could not find defining uses
-//~| ERROR could not find defining uses
-//~| ERROR could not find defining uses
 type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
 //~^ ERROR the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified [E0719]
 //~| ERROR could not find defining uses
-//~| ERROR could not find defining uses
-//~| ERROR could not find defining uses
 type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
 //~^ ERROR the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified [E0719]
 //~| ERROR could not find defining uses
diff --git a/src/test/ui/associated-type-bounds/duplicate.stderr b/src/test/ui/associated-type-bounds/duplicate.stderr
index 71f6e4ff8b6..712211e60cb 100644
--- a/src/test/ui/associated-type-bounds/duplicate.stderr
+++ b/src/test/ui/associated-type-bounds/duplicate.stderr
@@ -224,30 +224,6 @@ LL | fn FAPIT3(_: impl Iterator<Item: 'static, Item: 'static>) {}
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:62:42
-   |
-LL | fn FRPIT1() -> impl Iterator<Item: Copy, Item: Send> { iter::empty() }
-   |                              ----------  ^^^^^^^^^^ re-bound here
-   |                              |
-   |                              `Item` bound here first
-
-error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:64:42
-   |
-LL | fn FRPIT2() -> impl Iterator<Item: Copy, Item: Copy> { iter::empty() }
-   |                              ----------  ^^^^^^^^^^ re-bound here
-   |                              |
-   |                              `Item` bound here first
-
-error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:66:45
-   |
-LL | fn FRPIT3() -> impl Iterator<Item: 'static, Item: 'static> { iter::empty() }
-   |                              -------------  ^^^^^^^^^^^^^ re-bound here
-   |                              |
-   |                              `Item` bound here first
-
-error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
   --> $DIR/duplicate.rs:75:39
    |
 LL | const CIT1: impl Iterator<Item: Copy, Item: Send> = iter::empty();
@@ -367,12 +343,6 @@ LL | type TAW3<T> where T: Iterator<Item: 'static, Item: 'static> = T;
    |                                |
    |                                `Item` bound here first
 
-error: could not find defining uses
-  --> $DIR/duplicate.rs:108:1
-   |
-LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
   --> $DIR/duplicate.rs:108:36
    |
@@ -381,14 +351,38 @@ LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
    |                        |
    |                        `Item` bound here first
 
+error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
+  --> $DIR/duplicate.rs:62:42
+   |
+LL | fn FRPIT1() -> impl Iterator<Item: Copy, Item: Send> { iter::empty() }
+   |                              ----------  ^^^^^^^^^^ re-bound here
+   |                              |
+   |                              `Item` bound here first
+
+error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
+  --> $DIR/duplicate.rs:64:42
+   |
+LL | fn FRPIT2() -> impl Iterator<Item: Copy, Item: Copy> { iter::empty() }
+   |                              ----------  ^^^^^^^^^^ re-bound here
+   |                              |
+   |                              `Item` bound here first
+
+error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
+  --> $DIR/duplicate.rs:66:45
+   |
+LL | fn FRPIT3() -> impl Iterator<Item: 'static, Item: 'static> { iter::empty() }
+   |                              -------------  ^^^^^^^^^^^^^ re-bound here
+   |                              |
+   |                              `Item` bound here first
+
 error: could not find defining uses
-  --> $DIR/duplicate.rs:113:1
+  --> $DIR/duplicate.rs:108:51
    |
-LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
+   |                                                   ^^^^^^^^^
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:113:36
+  --> $DIR/duplicate.rs:111:36
    |
 LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -396,13 +390,13 @@ LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
    |                        `Item` bound here first
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:118:1
+  --> $DIR/duplicate.rs:111:51
    |
-LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
+   |                                                   ^^^^^^^^^
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:118:39
+  --> $DIR/duplicate.rs:114:39
    |
 LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
    |                        -------------  ^^^^^^^^^^^^^ re-bound here
@@ -410,13 +404,19 @@ LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
    |                        `Item` bound here first
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:123:1
+  --> $DIR/duplicate.rs:114:57
+   |
+LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
+   |                                                         ^^^^^^^^^
+
+error: could not find defining uses
+  --> $DIR/duplicate.rs:117:14
    |
 LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:123:40
+  --> $DIR/duplicate.rs:117:40
    |
 LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -424,13 +424,13 @@ LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
    |                            `Item` bound here first
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:128:1
+  --> $DIR/duplicate.rs:122:14
    |
 LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:128:40
+  --> $DIR/duplicate.rs:122:40
    |
 LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -438,13 +438,13 @@ LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
    |                            `Item` bound here first
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:133:1
+  --> $DIR/duplicate.rs:127:14
    |
 LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:133:43
+  --> $DIR/duplicate.rs:127:43
    |
 LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
    |                            -------------  ^^^^^^^^^^^^^ re-bound here
@@ -452,7 +452,7 @@ LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:139:36
+  --> $DIR/duplicate.rs:133:36
    |
 LL | trait TRI1<T: Iterator<Item: Copy, Item: Send>> {}
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -460,7 +460,7 @@ LL | trait TRI1<T: Iterator<Item: Copy, Item: Send>> {}
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:141:36
+  --> $DIR/duplicate.rs:135:36
    |
 LL | trait TRI2<T: Iterator<Item: Copy, Item: Copy>> {}
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -468,7 +468,7 @@ LL | trait TRI2<T: Iterator<Item: Copy, Item: Copy>> {}
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:143:39
+  --> $DIR/duplicate.rs:137:39
    |
 LL | trait TRI3<T: Iterator<Item: 'static, Item: 'static>> {}
    |                        -------------  ^^^^^^^^^^^^^ re-bound here
@@ -476,7 +476,7 @@ LL | trait TRI3<T: Iterator<Item: 'static, Item: 'static>> {}
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:145:34
+  --> $DIR/duplicate.rs:139:34
    |
 LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -484,7 +484,7 @@ LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:147:34
+  --> $DIR/duplicate.rs:141:34
    |
 LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -492,7 +492,7 @@ LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:149:37
+  --> $DIR/duplicate.rs:143:37
    |
 LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    |                      -------------  ^^^^^^^^^^^^^ re-bound here
@@ -500,7 +500,7 @@ LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:151:45
+  --> $DIR/duplicate.rs:145:45
    |
 LL | trait TRW1<T> where T: Iterator<Item: Copy, Item: Send> {}
    |                                 ----------  ^^^^^^^^^^ re-bound here
@@ -508,7 +508,7 @@ LL | trait TRW1<T> where T: Iterator<Item: Copy, Item: Send> {}
    |                                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:153:45
+  --> $DIR/duplicate.rs:147:45
    |
 LL | trait TRW2<T> where T: Iterator<Item: Copy, Item: Copy> {}
    |                                 ----------  ^^^^^^^^^^ re-bound here
@@ -516,7 +516,7 @@ LL | trait TRW2<T> where T: Iterator<Item: Copy, Item: Copy> {}
    |                                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:155:48
+  --> $DIR/duplicate.rs:149:48
    |
 LL | trait TRW3<T> where T: Iterator<Item: 'static, Item: 'static> {}
    |                                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -524,7 +524,7 @@ LL | trait TRW3<T> where T: Iterator<Item: 'static, Item: 'static> {}
    |                                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:157:46
+  --> $DIR/duplicate.rs:151:46
    |
 LL | trait TRSW1 where Self: Iterator<Item: Copy, Item: Send> {}
    |                                  ----------  ^^^^^^^^^^ re-bound here
@@ -532,7 +532,7 @@ LL | trait TRSW1 where Self: Iterator<Item: Copy, Item: Send> {}
    |                                  `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:157:46
+  --> $DIR/duplicate.rs:151:46
    |
 LL | trait TRSW1 where Self: Iterator<Item: Copy, Item: Send> {}
    |                                  ----------  ^^^^^^^^^^ re-bound here
@@ -540,7 +540,7 @@ LL | trait TRSW1 where Self: Iterator<Item: Copy, Item: Send> {}
    |                                  `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:160:46
+  --> $DIR/duplicate.rs:154:46
    |
 LL | trait TRSW2 where Self: Iterator<Item: Copy, Item: Copy> {}
    |                                  ----------  ^^^^^^^^^^ re-bound here
@@ -548,7 +548,7 @@ LL | trait TRSW2 where Self: Iterator<Item: Copy, Item: Copy> {}
    |                                  `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:160:46
+  --> $DIR/duplicate.rs:154:46
    |
 LL | trait TRSW2 where Self: Iterator<Item: Copy, Item: Copy> {}
    |                                  ----------  ^^^^^^^^^^ re-bound here
@@ -556,7 +556,7 @@ LL | trait TRSW2 where Self: Iterator<Item: Copy, Item: Copy> {}
    |                                  `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:163:49
+  --> $DIR/duplicate.rs:157:49
    |
 LL | trait TRSW3 where Self: Iterator<Item: 'static, Item: 'static> {}
    |                                  -------------  ^^^^^^^^^^^^^ re-bound here
@@ -564,7 +564,7 @@ LL | trait TRSW3 where Self: Iterator<Item: 'static, Item: 'static> {}
    |                                  `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:163:49
+  --> $DIR/duplicate.rs:157:49
    |
 LL | trait TRSW3 where Self: Iterator<Item: 'static, Item: 'static> {}
    |                                  -------------  ^^^^^^^^^^^^^ re-bound here
@@ -572,7 +572,7 @@ LL | trait TRSW3 where Self: Iterator<Item: 'static, Item: 'static> {}
    |                                  `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:166:43
+  --> $DIR/duplicate.rs:160:43
    |
 LL | trait TRA1 { type A: Iterator<Item: Copy, Item: Send>; }
    |                               ----------  ^^^^^^^^^^ re-bound here
@@ -580,7 +580,7 @@ LL | trait TRA1 { type A: Iterator<Item: Copy, Item: Send>; }
    |                               `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:168:43
+  --> $DIR/duplicate.rs:162:43
    |
 LL | trait TRA2 { type A: Iterator<Item: Copy, Item: Copy>; }
    |                               ----------  ^^^^^^^^^^ re-bound here
@@ -588,7 +588,7 @@ LL | trait TRA2 { type A: Iterator<Item: Copy, Item: Copy>; }
    |                               `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:170:46
+  --> $DIR/duplicate.rs:164:46
    |
 LL | trait TRA3 { type A: Iterator<Item: 'static, Item: 'static>; }
    |                               -------------  ^^^^^^^^^^^^^ re-bound here
@@ -596,7 +596,7 @@ LL | trait TRA3 { type A: Iterator<Item: 'static, Item: 'static>; }
    |                               `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:173:40
+  --> $DIR/duplicate.rs:167:40
    |
 LL | type TADyn1 = dyn Iterator<Item: Copy, Item: Send>;
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -604,7 +604,7 @@ LL | type TADyn1 = dyn Iterator<Item: Copy, Item: Send>;
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:177:44
+  --> $DIR/duplicate.rs:171:44
    |
 LL | type TADyn2 = Box<dyn Iterator<Item: Copy, Item: Copy>>;
    |                                ----------  ^^^^^^^^^^ re-bound here
@@ -612,7 +612,7 @@ LL | type TADyn2 = Box<dyn Iterator<Item: Copy, Item: Copy>>;
    |                                `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` (from trait `std::iter::Iterator`) is already specified
-  --> $DIR/duplicate.rs:181:43
+  --> $DIR/duplicate.rs:175:43
    |
 LL | type TADyn3 = dyn Iterator<Item: 'static, Item: 'static>;
    |                            -------------  ^^^^^^^^^^^^^ re-bound here
@@ -620,113 +620,77 @@ LL | type TADyn3 = dyn Iterator<Item: 'static, Item: 'static>;
    |                            `Item` bound here first
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:108:24
-   |
-LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
-   |                        ^^^^^^^^^^
-
-error: could not find defining uses
-  --> $DIR/duplicate.rs:108:36
-   |
-LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
-   |                                    ^^^^^^^^^^
-
-error: could not find defining uses
-  --> $DIR/duplicate.rs:113:24
-   |
-LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
-   |                        ^^^^^^^^^^
-
-error: could not find defining uses
-  --> $DIR/duplicate.rs:113:36
-   |
-LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
-   |                                    ^^^^^^^^^^
-
-error: could not find defining uses
-  --> $DIR/duplicate.rs:118:24
-   |
-LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
-   |                        ^^^^^^^^^^^^^
-
-error: could not find defining uses
-  --> $DIR/duplicate.rs:118:39
-   |
-LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
-   |                                       ^^^^^^^^^^^^^
-
-error: could not find defining uses
-  --> $DIR/duplicate.rs:123:28
+  --> $DIR/duplicate.rs:117:28
    |
 LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
    |                            ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:123:40
+  --> $DIR/duplicate.rs:117:40
    |
 LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
    |                                        ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:128:28
+  --> $DIR/duplicate.rs:122:28
    |
 LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
    |                            ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:128:40
+  --> $DIR/duplicate.rs:122:40
    |
 LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
    |                                        ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:133:28
+  --> $DIR/duplicate.rs:127:28
    |
 LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
    |                            ^^^^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:133:43
+  --> $DIR/duplicate.rs:127:43
    |
 LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
    |                                           ^^^^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:173:28
+  --> $DIR/duplicate.rs:167:28
    |
 LL | type TADyn1 = dyn Iterator<Item: Copy, Item: Send>;
    |                            ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:173:40
+  --> $DIR/duplicate.rs:167:40
    |
 LL | type TADyn1 = dyn Iterator<Item: Copy, Item: Send>;
    |                                        ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:177:32
+  --> $DIR/duplicate.rs:171:32
    |
 LL | type TADyn2 = Box<dyn Iterator<Item: Copy, Item: Copy>>;
    |                                ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:177:44
+  --> $DIR/duplicate.rs:171:44
    |
 LL | type TADyn2 = Box<dyn Iterator<Item: Copy, Item: Copy>>;
    |                                            ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:181:28
+  --> $DIR/duplicate.rs:175:28
    |
 LL | type TADyn3 = dyn Iterator<Item: 'static, Item: 'static>;
    |                            ^^^^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/duplicate.rs:181:43
+  --> $DIR/duplicate.rs:175:43
    |
 LL | type TADyn3 = dyn Iterator<Item: 'static, Item: 'static>;
    |                                           ^^^^^^^^^^^^^
 
-error: aborting due to 96 previous errors; 1 warning emitted
+error: aborting due to 90 previous errors; 1 warning emitted
 
 For more information about this error, try `rustc --explain E0719`.
diff --git a/src/test/ui/async-await/async-fn-size-moved-locals.rs b/src/test/ui/async-await/async-fn-size-moved-locals.rs
index 000acf14a3f..636fafc2bc4 100644
--- a/src/test/ui/async-await/async-fn-size-moved-locals.rs
+++ b/src/test/ui/async-await/async-fn-size-moved-locals.rs
@@ -114,5 +114,5 @@ fn main() {
     assert_eq!(1026, std::mem::size_of_val(&single_with_noop()));
     assert_eq!(3078, std::mem::size_of_val(&joined()));
     assert_eq!(3079, std::mem::size_of_val(&joined_with_noop()));
-    assert_eq!(6157, std::mem::size_of_val(&mixed_sizes()));
+    assert_eq!(7181, std::mem::size_of_val(&mixed_sizes()));
 }
diff --git a/src/test/ui/async-await/issue-73050.rs b/src/test/ui/async-await/issue-73050.rs
new file mode 100644
index 00000000000..790f24a230b
--- /dev/null
+++ b/src/test/ui/async-await/issue-73050.rs
@@ -0,0 +1,12 @@
+// check-pass
+// edition:2018
+
+#[allow(unused)]
+async fn foo<'a>() {
+    let _data = &mut [0u8; { 1 + 4 }];
+    bar().await
+}
+
+async fn bar() {}
+
+fn main() {}
diff --git a/src/test/ui/async-await/issue-73137.rs b/src/test/ui/async-await/issue-73137.rs
new file mode 100644
index 00000000000..18374460df7
--- /dev/null
+++ b/src/test/ui/async-await/issue-73137.rs
@@ -0,0 +1,42 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/73137>
+
+// run-pass
+// edition:2018
+
+#![allow(dead_code)]
+#![feature(wake_trait)]
+use std::future::Future;
+use std::task::{Waker, Wake, Context};
+use std::sync::Arc;
+
+struct DummyWaker;
+impl Wake for DummyWaker {
+    fn wake(self: Arc<Self>) {}
+}
+
+struct Foo {
+    a: usize,
+    b: &'static u32,
+}
+
+#[inline(never)]
+fn nop<T>(_: T) {}
+
+fn main() {
+    let mut fut = Box::pin(async {
+        let action = Foo {
+            b: &42,
+            a: async { 0 }.await,
+        };
+
+        // An error in the generator transform caused `b` to be overwritten with `a` when `b` was
+        // borrowed.
+        nop(&action.b);
+        assert_ne!(0usize, unsafe { std::mem::transmute(action.b) });
+
+        async {}.await;
+    });
+    let waker = Waker::from(Arc::new(DummyWaker));
+    let mut cx = Context::from_waker(&waker);
+    let _ = fut.as_mut().poll(&mut cx);
+}
diff --git a/src/test/ui/codemap_tests/unicode.stderr b/src/test/ui/codemap_tests/unicode.stderr
index 01d54ac8cc8..8b85adb5845 100644
--- a/src/test/ui/codemap_tests/unicode.stderr
+++ b/src/test/ui/codemap_tests/unicode.stderr
@@ -4,7 +4,7 @@ error[E0703]: invalid ABI: found `路濫狼á́́`
 LL | extern "路濫狼á́́" fn foo() {}
    |        ^^^^^^^^^ invalid ABI
    |
-   = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, efiapi, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
+   = help: valid ABIs: Rust, C, cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, efiapi, avr-interrupt, avr-non-blocking-interrupt, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr b/src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr
index 44e5c6a99f7..93e16bac13b 100644
--- a/src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr
+++ b/src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr
@@ -121,7 +121,7 @@ error[E0308]: mismatched types
 LL |     let _ = Box::new(|x| (x as u8)): Box<dyn Fn(i32) -> _>;
    |             ^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn std::ops::Fn`, found closure
    |
-   = note: expected struct `std::boxed::Box<dyn std::ops::Fn(i32) -> _>`
+   = note: expected struct `std::boxed::Box<dyn std::ops::Fn(i32) -> u8>`
               found struct `std::boxed::Box<[closure@$DIR/coerce-expect-unsized-ascribed.rs:26:22: 26:35]>`
 
 error: aborting due to 14 previous errors
diff --git a/src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.rs b/src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.rs
new file mode 100644
index 00000000000..225593c3178
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.rs
@@ -0,0 +1,20 @@
+// Regression test for #72819: ICE due to failure in resolving the const generic in `Arr`'s type
+// bounds.
+
+#![feature(const_generics)]
+#![allow(incomplete_features)]
+struct Arr<const N: usize>
+where Assert::<{N < usize::max_value() / 2}>: IsTrue,
+//~^ ERROR constant expression depends on a generic parameter
+{
+}
+
+enum Assert<const CHECK: bool> {}
+
+trait IsTrue {}
+
+impl IsTrue for Assert<true> {}
+
+fn main() {
+    let x: Arr<{usize::max_value()}> = Arr {};
+}
diff --git a/src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.stderr b/src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.stderr
new file mode 100644
index 00000000000..a9f664d0ac8
--- /dev/null
+++ b/src/test/ui/const-generics/issues/issue-72819-generic-in-const-eval.stderr
@@ -0,0 +1,10 @@
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-72819-generic-in-const-eval.rs:7:47
+   |
+LL | where Assert::<{N < usize::max_value() / 2}>: IsTrue,
+   |                                               ^^^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/consts/const-eval/infinite_loop.stderr b/src/test/ui/consts/const-eval/infinite_loop.stderr
index ebdb73c4467..3386e6e588e 100644
--- a/src/test/ui/consts/const-eval/infinite_loop.stderr
+++ b/src/test/ui/consts/const-eval/infinite_loop.stderr
@@ -23,10 +23,10 @@ LL |             n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
    = help: add `#![feature(const_if_match)]` to the crate attributes to enable
 
 error[E0080]: evaluation of constant value failed
-  --> $DIR/infinite_loop.rs:8:20
+  --> $DIR/infinite_loop.rs:8:17
    |
 LL |             n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
-   |                    ^^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/consts/const-eval/shift_overflow.rs b/src/test/ui/consts/const-eval/shift_overflow.rs
index f7d0f6bd961..e843584b69b 100644
--- a/src/test/ui/consts/const-eval/shift_overflow.rs
+++ b/src/test/ui/consts/const-eval/shift_overflow.rs
@@ -1,6 +1,6 @@
 enum Foo {
     // test that we detect overflows for non-u32 discriminants
-    X = 1 << ((u32::max_value() as u64) + 1), //~ ERROR E0080
+    X = 1 << ((u32::MAX as u64) + 1), //~ ERROR E0080
     Y = 42,
 }
 
diff --git a/src/test/ui/consts/const-eval/shift_overflow.stderr b/src/test/ui/consts/const-eval/shift_overflow.stderr
index 5db231cd5b0..f4840e9ac96 100644
--- a/src/test/ui/consts/const-eval/shift_overflow.stderr
+++ b/src/test/ui/consts/const-eval/shift_overflow.stderr
@@ -1,8 +1,8 @@
 error[E0080]: evaluation of constant value failed
   --> $DIR/shift_overflow.rs:3:9
    |
-LL |     X = 1 << ((u32::max_value() as u64) + 1),
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ attempt to shift left with overflow
+LL |     X = 1 << ((u32::MAX as u64) + 1),
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ attempt to shift left with overflow
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/consts/const-int-arithmetic.rs b/src/test/ui/consts/const-int-arithmetic.rs
index ab24abeba32..9c94551f744 100644
--- a/src/test/ui/consts/const-int-arithmetic.rs
+++ b/src/test/ui/consts/const-int-arithmetic.rs
@@ -34,8 +34,8 @@ suite!(
         C6: 5i8.checked_mul(122), None;
         C7: (-127i8).checked_mul(-99), None;
 
-        C8: (i8::min_value() + 1).checked_div(-1), Some(127);
-        C9: i8::min_value().checked_div(-1), None;
+        C8: (i8::MIN + 1).checked_div(-1), Some(127);
+        C9: i8::MIN.checked_div(-1), None;
         C10: 1i8.checked_div(0), None;
 
         C11: 5i8.checked_rem(2), Some(1);
@@ -56,8 +56,8 @@ suite!(
         C21: i8::MIN.checked_abs(), None;
 
         // `const_euclidean_int_methods`
-        C22: (i8::min_value() + 1).checked_div_euclid(-1), Some(127);
-        C23: i8::min_value().checked_div_euclid(-1), None;
+        C22: (i8::MIN + 1).checked_div_euclid(-1), Some(127);
+        C23: i8::MIN.checked_div_euclid(-1), None;
         C24: (1i8).checked_div_euclid(0), None;
 
         C25: 5i8.checked_rem_euclid(2), Some(1);
@@ -72,12 +72,12 @@ suite!(
     saturating_and_wrapping -> i8 {
         // `const_saturating_int_methods`
         C28: 100i8.saturating_add(1), 101;
-        C29: i8::max_value().saturating_add(100), i8::max_value();
-        C30: i8::min_value().saturating_add(-1), i8::min_value();
+        C29: i8::MAX.saturating_add(100), i8::MAX;
+        C30: i8::MIN.saturating_add(-1), i8::MIN;
 
         C31: 100i8.saturating_sub(127), -27;
-        C32: i8::min_value().saturating_sub(100), i8::min_value();
-        C33: i8::max_value().saturating_sub(-1), i8::max_value();
+        C32: i8::MIN.saturating_sub(100), i8::MIN;
+        C33: i8::MAX.saturating_sub(-1), i8::MAX;
 
         C34: 10i8.saturating_mul(12), 120;
         C35: i8::MAX.saturating_mul(10), i8::MAX;
@@ -85,13 +85,13 @@ suite!(
 
         C37: 100i8.saturating_neg(), -100;
         C38: (-100i8).saturating_neg(), 100;
-        C39: i8::min_value().saturating_neg(), i8::max_value();
-        C40: i8::max_value().saturating_neg(), i8::min_value() + 1;
+        C39: i8::MIN.saturating_neg(), i8::MAX;
+        C40: i8::MAX.saturating_neg(), i8::MIN + 1;
 
         C57: 100i8.saturating_abs(), 100;
         C58: (-100i8).saturating_abs(), 100;
-        C59: i8::min_value().saturating_abs(), i8::max_value();
-        C60: (i8::min_value() + 1).saturating_abs(), i8::max_value();
+        C59: i8::MIN.saturating_abs(), i8::MAX;
+        C60: (i8::MIN + 1).saturating_abs(), i8::MAX;
 
         // `const_wrapping_int_methods`
         C41: 100i8.wrapping_div(10), 10;
diff --git a/src/test/ui/consts/const-int-conversion-rpass.rs b/src/test/ui/consts/const-int-conversion-rpass.rs
index 6484169dd9a..4aaeeaa3885 100644
--- a/src/test/ui/consts/const-int-conversion-rpass.rs
+++ b/src/test/ui/consts/const-int-conversion-rpass.rs
@@ -6,13 +6,13 @@ const FROM_LE_BYTES: i32 = i32::from_le_bytes([0x12, 0x34, 0x56, 0x78]);
 const FROM_NE_BYTES: i32 = i32::from_be(i32::from_ne_bytes([0x80, 0, 0, 0]));
 const TO_BE_BYTES: [u8; 4] = 0x12_34_56_78_i32.to_be_bytes();
 const TO_LE_BYTES: [u8; 4] = 0x12_34_56_78_i32.to_le_bytes();
-const TO_NE_BYTES: [u8; 4] = i32::min_value().to_be().to_ne_bytes();
+const TO_NE_BYTES: [u8; 4] = i32::MIN.to_be().to_ne_bytes();
 
 fn main() {
     assert_eq!(REVERSE, 0x1e6a2c48);
     assert_eq!(FROM_BE_BYTES, 0x12_34_56_78);
     assert_eq!(FROM_LE_BYTES, 0x78_56_34_12);
-    assert_eq!(FROM_NE_BYTES, i32::min_value());
+    assert_eq!(FROM_NE_BYTES, i32::MIN);
     assert_eq!(TO_BE_BYTES, [0x12, 0x34, 0x56, 0x78]);
     assert_eq!(TO_LE_BYTES, [0x78, 0x56, 0x34, 0x12]);
     assert_eq!(TO_NE_BYTES, [0x80, 0, 0, 0]);
diff --git a/src/test/ui/consts/const-int-conversion.rs b/src/test/ui/consts/const-int-conversion.rs
index b80e616eae7..5a05a2b3593 100644
--- a/src/test/ui/consts/const-int-conversion.rs
+++ b/src/test/ui/consts/const-int-conversion.rs
@@ -11,6 +11,6 @@ fn main() {
         //~^ ERROR temporary value dropped while borrowed
     let c: &'static [u8] = &(0x12_34_56_78_i32.to_le_bytes());
         //~^ ERROR temporary value dropped while borrowed
-    let d: &'static [u8] = &(i32::min_value().to_be().to_ne_bytes());
+    let d: &'static [u8] = &(i32::MIN.to_be().to_ne_bytes());
         //~^ ERROR temporary value dropped while borrowed
 }
diff --git a/src/test/ui/consts/const-int-conversion.stderr b/src/test/ui/consts/const-int-conversion.stderr
index 237f9627219..61162a79226 100644
--- a/src/test/ui/consts/const-int-conversion.stderr
+++ b/src/test/ui/consts/const-int-conversion.stderr
@@ -67,8 +67,8 @@ LL | }
 error[E0716]: temporary value dropped while borrowed
   --> $DIR/const-int-conversion.rs:14:29
    |
-LL |     let d: &'static [u8] = &(i32::min_value().to_be().to_ne_bytes());
-   |            -------------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ creates a temporary which is freed while still in use
+LL |     let d: &'static [u8] = &(i32::MIN.to_be().to_ne_bytes());
+   |            -------------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ creates a temporary which is freed while still in use
    |            |
    |            type annotation requires that borrow lasts for `'static`
 LL |
diff --git a/src/test/ui/consts/const-int-overflowing-rpass.rs b/src/test/ui/consts/const-int-overflowing-rpass.rs
index 9be87a6447c..eecb88becab 100644
--- a/src/test/ui/consts/const-int-overflowing-rpass.rs
+++ b/src/test/ui/consts/const-int-overflowing-rpass.rs
@@ -1,7 +1,7 @@
 // run-pass
 
 const ADD_A: (u32, bool) = 5u32.overflowing_add(2);
-const ADD_B: (u32, bool) = u32::max_value().overflowing_add(1);
+const ADD_B: (u32, bool) = u32::MAX.overflowing_add(1);
 
 const SUB_A: (u32, bool) = 5u32.overflowing_sub(2);
 const SUB_B: (u32, bool) = 0u32.overflowing_sub(1);
@@ -20,14 +20,14 @@ const NEG_B: (u32, bool) = core::u32::MAX.overflowing_neg();
 
 const ABS_POS: (i32, bool) = 10i32.overflowing_abs();
 const ABS_NEG: (i32, bool) = (-10i32).overflowing_abs();
-const ABS_MIN: (i32, bool) = i32::min_value().overflowing_abs();
+const ABS_MIN: (i32, bool) = i32::MIN.overflowing_abs();
 
 fn main() {
     assert_eq!(ADD_A, (7, false));
     assert_eq!(ADD_B, (0, true));
 
     assert_eq!(SUB_A, (3, false));
-    assert_eq!(SUB_B, (u32::max_value(), true));
+    assert_eq!(SUB_B, (u32::MAX, true));
 
     assert_eq!(MUL_A, (10, false));
     assert_eq!(MUL_B, (1410065408, true));
@@ -43,5 +43,5 @@ fn main() {
 
     assert_eq!(ABS_POS, (10, false));
     assert_eq!(ABS_NEG, (10, false));
-    assert_eq!(ABS_MIN, (i32::min_value(), true));
+    assert_eq!(ABS_MIN, (i32::MIN, true));
 }
diff --git a/src/test/ui/consts/const-int-pow-rpass.rs b/src/test/ui/consts/const-int-pow-rpass.rs
index b0fba19455b..4f936236dbb 100644
--- a/src/test/ui/consts/const-int-pow-rpass.rs
+++ b/src/test/ui/consts/const-int-pow-rpass.rs
@@ -20,10 +20,10 @@ const NEXT_POWER_OF_TWO: u32 = 3u32.next_power_of_two();
 
 const CHECKED_NEXT_POWER_OF_TWO_OK: Option<u32> = 3u32.checked_next_power_of_two();
 const CHECKED_NEXT_POWER_OF_TWO_OVERFLOW: Option<u32> =
-    u32::max_value().checked_next_power_of_two();
+    u32::MAX.checked_next_power_of_two();
 
 const WRAPPING_NEXT_POWER_OF_TWO: u32 =
-    u32::max_value().wrapping_next_power_of_two();
+    u32::MAX.wrapping_next_power_of_two();
 
 fn main() {
     assert!(!IS_POWER_OF_TWO_A);
@@ -37,7 +37,7 @@ fn main() {
 
     assert_eq!(WRAPPING_POW, 217);
     assert_eq!(OVERFLOWING_POW, (217, true));
-    assert_eq!(SATURATING_POW, u8::max_value());
+    assert_eq!(SATURATING_POW, u8::MAX);
 
     assert_eq!(NEXT_POWER_OF_TWO, 4);
 
diff --git a/src/test/ui/consts/const-int-saturating-arith.rs b/src/test/ui/consts/const-int-saturating-arith.rs
index d0a3eccd177..4718120a51b 100644
--- a/src/test/ui/consts/const-int-saturating-arith.rs
+++ b/src/test/ui/consts/const-int-saturating-arith.rs
@@ -2,33 +2,33 @@
 #![feature(const_saturating_int_methods)]
 
 const INT_U32_NO: u32 = (42 as u32).saturating_add(2);
-const INT_U32: u32 = u32::max_value().saturating_add(1);
-const INT_U128: u128 = u128::max_value().saturating_add(1);
-const INT_I128: i128 = i128::max_value().saturating_add(1);
-const INT_I128_NEG: i128 = i128::min_value().saturating_add(-1);
+const INT_U32: u32 = u32::MAX.saturating_add(1);
+const INT_U128: u128 = u128::MAX.saturating_add(1);
+const INT_I128: i128 = i128::MAX.saturating_add(1);
+const INT_I128_NEG: i128 = i128::MIN.saturating_add(-1);
 
 const INT_U32_NO_SUB: u32 = (42 as u32).saturating_sub(2);
 const INT_U32_SUB: u32 = (1 as u32).saturating_sub(2);
 const INT_I32_NO_SUB: i32 = (-42 as i32).saturating_sub(2);
-const INT_I32_NEG_SUB: i32 = i32::min_value().saturating_sub(1);
-const INT_I32_POS_SUB: i32 = i32::max_value().saturating_sub(-1);
+const INT_I32_NEG_SUB: i32 = i32::MIN.saturating_sub(1);
+const INT_I32_POS_SUB: i32 = i32::MAX.saturating_sub(-1);
 const INT_U128_SUB: u128 = (0 as u128).saturating_sub(1);
-const INT_I128_NEG_SUB: i128 = i128::min_value().saturating_sub(1);
-const INT_I128_POS_SUB: i128 = i128::max_value().saturating_sub(-1);
+const INT_I128_NEG_SUB: i128 = i128::MIN.saturating_sub(1);
+const INT_I128_POS_SUB: i128 = i128::MAX.saturating_sub(-1);
 
 fn main() {
     assert_eq!(INT_U32_NO, 44);
-    assert_eq!(INT_U32, u32::max_value());
-    assert_eq!(INT_U128, u128::max_value());
-    assert_eq!(INT_I128, i128::max_value());
-    assert_eq!(INT_I128_NEG, i128::min_value());
+    assert_eq!(INT_U32, u32::MAX);
+    assert_eq!(INT_U128, u128::MAX);
+    assert_eq!(INT_I128, i128::MAX);
+    assert_eq!(INT_I128_NEG, i128::MIN);
 
     assert_eq!(INT_U32_NO_SUB, 40);
     assert_eq!(INT_U32_SUB, 0);
     assert_eq!(INT_I32_NO_SUB, -44);
-    assert_eq!(INT_I32_NEG_SUB, i32::min_value());
-    assert_eq!(INT_I32_POS_SUB, i32::max_value());
+    assert_eq!(INT_I32_NEG_SUB, i32::MIN);
+    assert_eq!(INT_I32_POS_SUB, i32::MAX);
     assert_eq!(INT_U128_SUB, 0);
-    assert_eq!(INT_I128_NEG_SUB, i128::min_value());
-    assert_eq!(INT_I128_POS_SUB, i128::max_value());
+    assert_eq!(INT_I128_NEG_SUB, i128::MIN);
+    assert_eq!(INT_I128_POS_SUB, i128::MAX);
 }
diff --git a/src/test/ui/consts/const-int-unchecked.rs b/src/test/ui/consts/const-int-unchecked.rs
index fb09f62854d..1596093b2c1 100644
--- a/src/test/ui/consts/const-int-unchecked.rs
+++ b/src/test/ui/consts/const-int-unchecked.rs
@@ -131,12 +131,12 @@ const _: u16 = unsafe { std::intrinsics::unchecked_mul(300u16, 250u16) };
 
 const _: i32 = unsafe { std::intrinsics::unchecked_div(1, 0) };
 //~^ ERROR any use of this value will cause an error
-const _: i32 = unsafe { std::intrinsics::unchecked_div(i32::min_value(), -1) };
+const _: i32 = unsafe { std::intrinsics::unchecked_div(i32::MIN, -1) };
 //~^ ERROR any use of this value will cause an error
 
 const _: i32 = unsafe { std::intrinsics::unchecked_rem(1, 0) };
 //~^ ERROR any use of this value will cause an error
-const _: i32 = unsafe { std::intrinsics::unchecked_rem(i32::min_value(), -1) };
+const _: i32 = unsafe { std::intrinsics::unchecked_rem(i32::MIN, -1) };
 //~^ ERROR any use of this value will cause an error
 
 fn main() {}
diff --git a/src/test/ui/consts/const-int-unchecked.stderr b/src/test/ui/consts/const-int-unchecked.stderr
index cf70454b6bf..0287b404e7d 100644
--- a/src/test/ui/consts/const-int-unchecked.stderr
+++ b/src/test/ui/consts/const-int-unchecked.stderr
@@ -355,8 +355,8 @@ LL | const _: i32 = unsafe { std::intrinsics::unchecked_div(1, 0) };
 error: any use of this value will cause an error
   --> $DIR/const-int-unchecked.rs:134:25
    |
-LL | const _: i32 = unsafe { std::intrinsics::unchecked_div(i32::min_value(), -1) };
-   | ------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---
+LL | const _: i32 = unsafe { std::intrinsics::unchecked_div(i32::MIN, -1) };
+   | ------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---
    |                         |
    |                         overflow executing `unchecked_div`
 
@@ -371,8 +371,8 @@ LL | const _: i32 = unsafe { std::intrinsics::unchecked_rem(1, 0) };
 error: any use of this value will cause an error
   --> $DIR/const-int-unchecked.rs:139:25
    |
-LL | const _: i32 = unsafe { std::intrinsics::unchecked_rem(i32::min_value(), -1) };
-   | ------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---
+LL | const _: i32 = unsafe { std::intrinsics::unchecked_rem(i32::MIN, -1) };
+   | ------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---
    |                         |
    |                         overflow executing `unchecked_rem`
 
diff --git a/src/test/ui/consts/const-int-wrapping-rpass.rs b/src/test/ui/consts/const-int-wrapping-rpass.rs
index 2bbad99a52a..225d1e9393d 100644
--- a/src/test/ui/consts/const-int-wrapping-rpass.rs
+++ b/src/test/ui/consts/const-int-wrapping-rpass.rs
@@ -1,10 +1,10 @@
 // run-pass
 
 const ADD_A: u32 = 200u32.wrapping_add(55);
-const ADD_B: u32 = 200u32.wrapping_add(u32::max_value());
+const ADD_B: u32 = 200u32.wrapping_add(u32::MAX);
 
 const SUB_A: u32 = 100u32.wrapping_sub(100);
-const SUB_B: u32 = 100u32.wrapping_sub(u32::max_value());
+const SUB_B: u32 = 100u32.wrapping_sub(u32::MAX);
 
 const MUL_A: u8 = 10u8.wrapping_mul(12);
 const MUL_B: u8 = 25u8.wrapping_mul(12);
@@ -20,7 +20,7 @@ const NEG_B: u32 = 1234567890u32.wrapping_neg();
 
 const ABS_POS: i32 = 10i32.wrapping_abs();
 const ABS_NEG: i32 = (-10i32).wrapping_abs();
-const ABS_MIN: i32 = i32::min_value().wrapping_abs();
+const ABS_MIN: i32 = i32::MIN.wrapping_abs();
 
 fn main() {
     assert_eq!(ADD_A, 255);
@@ -43,5 +43,5 @@ fn main() {
 
     assert_eq!(ABS_POS, 10);
     assert_eq!(ABS_NEG, 10);
-    assert_eq!(ABS_MIN, i32::min_value());
+    assert_eq!(ABS_MIN, i32::MIN);
 }
diff --git a/src/test/ui/consts/const-match-check.eval1.stderr b/src/test/ui/consts/const-match-check.eval1.stderr
index 3850b1d82bf..12ba9cacabf 100644
--- a/src/test/ui/consts/const-match-check.eval1.stderr
+++ b/src/test/ui/consts/const-match-check.eval1.stderr
@@ -1,8 +1,8 @@
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
   --> $DIR/const-match-check.rs:25:15
    |
 LL |     A = { let 0 = 0; 0 },
-   |               ^ patterns `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+   |               ^ patterns `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
diff --git a/src/test/ui/consts/const-match-check.eval2.stderr b/src/test/ui/consts/const-match-check.eval2.stderr
index 4e1d50f42d4..2eed7abdc65 100644
--- a/src/test/ui/consts/const-match-check.eval2.stderr
+++ b/src/test/ui/consts/const-match-check.eval2.stderr
@@ -1,8 +1,8 @@
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
   --> $DIR/const-match-check.rs:31:24
    |
 LL |     let x: [i32; { let 0 = 0; 0 }] = [];
-   |                        ^ patterns `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+   |                        ^ patterns `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
diff --git a/src/test/ui/consts/const-match-check.matchck.stderr b/src/test/ui/consts/const-match-check.matchck.stderr
index 2aabc0ca494..1fa0cb17fe6 100644
--- a/src/test/ui/consts/const-match-check.matchck.stderr
+++ b/src/test/ui/consts/const-match-check.matchck.stderr
@@ -1,8 +1,8 @@
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
   --> $DIR/const-match-check.rs:4:22
    |
 LL | const X: i32 = { let 0 = 0; 0 };
-   |                      ^ patterns `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+   |                      ^ patterns `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
@@ -12,11 +12,11 @@ help: you might want to use `if let` to ignore the variant that isn't matched
 LL | const X: i32 = { if let 0 = 0 { /* */ } 0 };
    |                  ^^^^^^^^^^^^^^^^^^^^^^
 
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
   --> $DIR/const-match-check.rs:8:23
    |
 LL | static Y: i32 = { let 0 = 0; 0 };
-   |                       ^ patterns `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+   |                       ^ patterns `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
@@ -26,11 +26,11 @@ help: you might want to use `if let` to ignore the variant that isn't matched
 LL | static Y: i32 = { if let 0 = 0 { /* */ } 0 };
    |                   ^^^^^^^^^^^^^^^^^^^^^^
 
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
   --> $DIR/const-match-check.rs:13:26
    |
 LL |     const X: i32 = { let 0 = 0; 0 };
-   |                          ^ patterns `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+   |                          ^ patterns `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
@@ -40,11 +40,11 @@ help: you might want to use `if let` to ignore the variant that isn't matched
 LL |     const X: i32 = { if let 0 = 0 { /* */ } 0 };
    |                      ^^^^^^^^^^^^^^^^^^^^^^
 
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
   --> $DIR/const-match-check.rs:19:26
    |
 LL |     const X: i32 = { let 0 = 0; 0 };
-   |                          ^ patterns `std::i32::MIN..=-1i32` and `1i32..=std::i32::MAX` not covered
+   |                          ^ patterns `i32::MIN..=-1i32` and `1i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
diff --git a/src/test/ui/consts/const-pattern-irrefutable.rs b/src/test/ui/consts/const-pattern-irrefutable.rs
index 60e16aaf895..65f09eb8009 100644
--- a/src/test/ui/consts/const-pattern-irrefutable.rs
+++ b/src/test/ui/consts/const-pattern-irrefutable.rs
@@ -9,8 +9,8 @@ use foo::d;
 const a: u8 = 2;
 
 fn main() {
-    let a = 4; //~ ERROR refutable pattern in local binding: `0u8..=1u8` and `3u8..=std::u8::MAX
-    let c = 4; //~ ERROR refutable pattern in local binding: `0u8..=1u8` and `3u8..=std::u8::MAX
-    let d = 4; //~ ERROR refutable pattern in local binding: `0u8..=1u8` and `3u8..=std::u8::MAX
+    let a = 4; //~ ERROR refutable pattern in local binding: `0u8..=1u8` and `3u8..=u8::MAX
+    let c = 4; //~ ERROR refutable pattern in local binding: `0u8..=1u8` and `3u8..=u8::MAX
+    let d = 4; //~ ERROR refutable pattern in local binding: `0u8..=1u8` and `3u8..=u8::MAX
     fn f() {} // Check that the `NOTE`s still work with an item here (cf. issue #35115).
 }
diff --git a/src/test/ui/consts/const-pattern-irrefutable.stderr b/src/test/ui/consts/const-pattern-irrefutable.stderr
index 863e1372a9b..bb2fdec72ba 100644
--- a/src/test/ui/consts/const-pattern-irrefutable.stderr
+++ b/src/test/ui/consts/const-pattern-irrefutable.stderr
@@ -1,4 +1,4 @@
-error[E0005]: refutable pattern in local binding: `0u8..=1u8` and `3u8..=std::u8::MAX` not covered
+error[E0005]: refutable pattern in local binding: `0u8..=1u8` and `3u8..=u8::MAX` not covered
   --> $DIR/const-pattern-irrefutable.rs:12:9
    |
 LL | const a: u8 = 2;
@@ -12,7 +12,7 @@ LL |     let a = 4;
    |
    = note: the matched value is of type `u8`
 
-error[E0005]: refutable pattern in local binding: `0u8..=1u8` and `3u8..=std::u8::MAX` not covered
+error[E0005]: refutable pattern in local binding: `0u8..=1u8` and `3u8..=u8::MAX` not covered
   --> $DIR/const-pattern-irrefutable.rs:13:9
    |
 LL |     pub const b: u8 = 2;
@@ -26,7 +26,7 @@ LL |     let c = 4;
    |
    = note: the matched value is of type `u8`
 
-error[E0005]: refutable pattern in local binding: `0u8..=1u8` and `3u8..=std::u8::MAX` not covered
+error[E0005]: refutable pattern in local binding: `0u8..=1u8` and `3u8..=u8::MAX` not covered
   --> $DIR/const-pattern-irrefutable.rs:14:9
    |
 LL |     pub const d: u8 = 2;
diff --git a/src/test/ui/consts/const-size_of-cycle.stderr b/src/test/ui/consts/const-size_of-cycle.stderr
index 5fd7fe4480e..0aa30665f59 100644
--- a/src/test/ui/consts/const-size_of-cycle.stderr
+++ b/src/test/ui/consts/const-size_of-cycle.stderr
@@ -17,8 +17,8 @@ LL |     bytes: [u8; std::mem::size_of::<Foo>()]
 note: ...which requires const-evaluating `std::mem::size_of`...
   --> $SRC_DIR/libcore/mem/mod.rs:LL:COL
    |
-LL |     intrinsics::size_of::<T>()
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL | pub const fn size_of<T>() -> usize {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires const-evaluating + checking `std::intrinsics::size_of`...
   --> $SRC_DIR/libcore/intrinsics.rs:LL:COL
    |
diff --git a/src/test/ui/consts/const_limit/const_eval_limit_reached.stderr b/src/test/ui/consts/const_limit/const_eval_limit_reached.stderr
index be522dd6d5d..8c2190b4e59 100644
--- a/src/test/ui/consts/const_limit/const_eval_limit_reached.stderr
+++ b/src/test/ui/consts/const_limit/const_eval_limit_reached.stderr
@@ -1,15 +1,18 @@
 error: any use of this value will cause an error
-  --> $DIR/const_eval_limit_reached.rs:8:11
+  --> $DIR/const_eval_limit_reached.rs:8:5
    |
-LL | / const X: usize = {
-LL | |     let mut x = 0;
-LL | |     while x != 1000 {
-   | |           ^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
-LL | |
-...  |
-LL | |     x
-LL | | };
-   | |__-
+LL |  / const X: usize = {
+LL |  |     let mut x = 0;
+LL |  |     while x != 1000 {
+   |  |_____^
+LL | ||
+LL | ||         x += 1;
+LL | ||     }
+   | ||_____^ exceeded interpreter step limit (see `#[const_eval_limit]`)
+LL |  |
+LL |  |     x
+LL |  | };
+   |  |__-
    |
    = note: `#[deny(const_err)]` on by default
 
diff --git a/src/test/ui/consts/enum-discr-type-err.stderr b/src/test/ui/consts/enum-discr-type-err.stderr
index 492b79e2e60..9834a99b79a 100644
--- a/src/test/ui/consts/enum-discr-type-err.stderr
+++ b/src/test/ui/consts/enum-discr-type-err.stderr
@@ -11,10 +11,6 @@ LL | | }
    | |_- in this macro invocation
    |
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit
-   |
-LL |             $( $v = $s::V.try_into().unwrap(), )*
-   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0308]: mismatched types
   --> $DIR/enum-discr-type-err.rs:18:21
@@ -29,10 +25,6 @@ LL | | }
    | |_- in this macro invocation
    |
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit
-   |
-LL |             $( $v = $s::V.try_into().unwrap(), )*
-   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/consts/recursive-zst-static.default.stderr b/src/test/ui/consts/recursive-zst-static.default.stderr
index d424b22f000..9042c6f6be1 100644
--- a/src/test/ui/consts/recursive-zst-static.default.stderr
+++ b/src/test/ui/consts/recursive-zst-static.default.stderr
@@ -1,8 +1,8 @@
 error[E0391]: cycle detected when const-evaluating `FOO`
-  --> $DIR/recursive-zst-static.rs:10:18
+  --> $DIR/recursive-zst-static.rs:10:1
    |
 LL | static FOO: () = FOO;
-   |                  ^^^
+   | ^^^^^^^^^^^^^^^^^^^^^
    |
 note: ...which requires const-evaluating `FOO`...
   --> $DIR/recursive-zst-static.rs:10:1
diff --git a/src/test/ui/consts/recursive-zst-static.unleash.stderr b/src/test/ui/consts/recursive-zst-static.unleash.stderr
index d424b22f000..9042c6f6be1 100644
--- a/src/test/ui/consts/recursive-zst-static.unleash.stderr
+++ b/src/test/ui/consts/recursive-zst-static.unleash.stderr
@@ -1,8 +1,8 @@
 error[E0391]: cycle detected when const-evaluating `FOO`
-  --> $DIR/recursive-zst-static.rs:10:18
+  --> $DIR/recursive-zst-static.rs:10:1
    |
 LL | static FOO: () = FOO;
-   |                  ^^^
+   | ^^^^^^^^^^^^^^^^^^^^^
    |
 note: ...which requires const-evaluating `FOO`...
   --> $DIR/recursive-zst-static.rs:10:1
diff --git a/src/test/ui/consts/uninhabited-const-issue-61744.rs b/src/test/ui/consts/uninhabited-const-issue-61744.rs
index 15436f9c1b2..55f42d84f9c 100644
--- a/src/test/ui/consts/uninhabited-const-issue-61744.rs
+++ b/src/test/ui/consts/uninhabited-const-issue-61744.rs
@@ -1,11 +1,11 @@
 // build-fail
 
 pub const unsafe fn fake_type<T>() -> T {
-    hint_unreachable()
+    hint_unreachable() //~ ERROR evaluation of constant value failed
 }
 
 pub const unsafe fn hint_unreachable() -> ! {
-    fake_type() //~ ERROR evaluation of constant value failed
+    fake_type()
 }
 
 trait Const {
diff --git a/src/test/ui/consts/uninhabited-const-issue-61744.stderr b/src/test/ui/consts/uninhabited-const-issue-61744.stderr
index ca232380897..fc908b2b222 100644
--- a/src/test/ui/consts/uninhabited-const-issue-61744.stderr
+++ b/src/test/ui/consts/uninhabited-const-issue-61744.stderr
@@ -1,9 +1,10 @@
 error[E0080]: evaluation of constant value failed
-  --> $DIR/uninhabited-const-issue-61744.rs:8:5
+  --> $DIR/uninhabited-const-issue-61744.rs:4:5
    |
 LL |     hint_unreachable()
-   |     ------------------
+   |     ^^^^^^^^^^^^^^^^^^
    |     |
+   |     reached the configured maximum number of stack frames
    |     inside `fake_type::<!>` at $DIR/uninhabited-const-issue-61744.rs:4:5
    |     inside `fake_type::<!>` at $DIR/uninhabited-const-issue-61744.rs:4:5
    |     inside `fake_type::<!>` at $DIR/uninhabited-const-issue-61744.rs:4:5
@@ -71,9 +72,8 @@ LL |     hint_unreachable()
    |     inside `fake_type::<i32>` at $DIR/uninhabited-const-issue-61744.rs:4:5
 ...
 LL |     fake_type()
-   |     ^^^^^^^^^^^
+   |     -----------
    |     |
-   |     reached the configured maximum number of stack frames
    |     inside `hint_unreachable` at $DIR/uninhabited-const-issue-61744.rs:8:5
    |     inside `hint_unreachable` at $DIR/uninhabited-const-issue-61744.rs:8:5
    |     inside `hint_unreachable` at $DIR/uninhabited-const-issue-61744.rs:8:5
diff --git a/src/test/ui/derived-errors/issue-31997-1.stderr b/src/test/ui/derived-errors/issue-31997-1.stderr
index a4daf86cc8a..229c5c9e80f 100644
--- a/src/test/ui/derived-errors/issue-31997-1.stderr
+++ b/src/test/ui/derived-errors/issue-31997-1.stderr
@@ -4,12 +4,10 @@ error[E0433]: failed to resolve: use of undeclared type or module `HashMap`
 LL |     let mut map = HashMap::new();
    |                   ^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this struct
    |
 LL | use std::collections::HashMap;
    |
-LL | use std::collections::hash_map::HashMap;
-   |
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs b/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs
index e9c6104e387..4e2cc89948a 100644
--- a/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs
+++ b/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs
@@ -5,7 +5,7 @@
 #[repr(i128)]
 enum Test {
     A(Box<u64>) = 0,
-    B(usize) = u64::max_value() as i128 + 1,
+    B(usize) = u64::MAX as i128 + 1,
 }
 
 fn main() {
diff --git a/src/test/ui/enum-discriminant/repr128.rs b/src/test/ui/enum-discriminant/repr128.rs
index 420b6007c6d..eefbc44f585 100644
--- a/src/test/ui/enum-discriminant/repr128.rs
+++ b/src/test/ui/enum-discriminant/repr128.rs
@@ -8,9 +8,9 @@ use std::marker::DiscriminantKind;
 enum Signed {
     Zero = 0,
     Staircase = 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f,
-    U64Limit = u64::max_value() as i128 + 1,
+    U64Limit = u64::MAX as i128 + 1,
     SmallNegative = -1,
-    BigNegative = i128::min_value(),
+    BigNegative = i128::MIN,
     Next,
 }
 
@@ -18,7 +18,7 @@ enum Signed {
 enum Unsigned {
     Zero = 0,
     Staircase = 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f,
-    U64Limit = u64::max_value() as u128 + 1,
+    U64Limit = u64::MAX as u128 + 1,
     Next,
 }
 
@@ -32,13 +32,13 @@ where
 fn main() {
     discr(Signed::Zero, 0);
     discr(Signed::Staircase, 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f);
-    discr(Signed::U64Limit, u64::max_value() as i128 + 1);
+    discr(Signed::U64Limit, u64::MAX as i128 + 1);
     discr(Signed::SmallNegative, -1);
-    discr(Signed::BigNegative, i128::min_value());
-    discr(Signed::Next, i128::min_value() + 1);
+    discr(Signed::BigNegative, i128::MIN);
+    discr(Signed::Next, i128::MIN + 1);
 
     discr(Unsigned::Zero, 0);
     discr(Unsigned::Staircase, 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f);
-    discr(Unsigned::U64Limit, u64::max_value() as u128 + 1);
-    discr(Unsigned::Next, u64::max_value() as u128 + 2);
+    discr(Unsigned::U64Limit, u64::MAX as u128 + 1);
+    discr(Unsigned::Next, u64::MAX as u128 + 2);
 }
diff --git a/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.rs b/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.rs
new file mode 100644
index 00000000000..0d7df8182c4
--- /dev/null
+++ b/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.rs
@@ -0,0 +1,9 @@
+// Test that the AVR interrupt ABI cannot be used when avr_interrupt
+// feature gate is not used.
+
+extern "avr-interrupt" fn foo() {}
+//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+
+fn main() {
+    foo();
+}
diff --git a/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr b/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr
new file mode 100644
index 00000000000..be7040e1491
--- /dev/null
+++ b/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr
@@ -0,0 +1,12 @@
+error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
+  --> $DIR/feature-gate-abi-avr-interrupt.rs:4:8
+   |
+LL | extern "avr-interrupt" fn foo() {}
+   |        ^^^^^^^^^^^^^^^
+   |
+   = note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
+   = help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs
index 6088331cded..3b6c9791722 100644
--- a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs
+++ b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs
@@ -9,10 +9,14 @@ trait Bar {
 
 impl Bar for () {
     type Baa = impl Debug; //~ ERROR `impl Trait` in type aliases is unstable
-    fn define() -> Self::Baa { 0 }
+    fn define() -> Self::Baa {
+        0
+    }
 }
 
-fn define() -> Foo { 0 }
+fn define() -> Foo {
+    0
+}
 
 trait TraitWithDefault {
     type Assoc = impl Debug;
@@ -26,20 +30,20 @@ type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>
 //~| ERROR `impl Trait` in type aliases is unstable
 //~| ERROR `impl Trait` in type aliases is unstable
 //~| ERROR `impl Trait` in type aliases is unstable
-//~| ERROR `impl Trait` not allowed outside of function
-//~| ERROR `impl Trait` not allowed outside of function
-//~| ERROR `impl Trait` not allowed outside of function
+
+fn define_multiple() -> NestedFree {
+    (vec![true], 0u8, 0i32..1)
+}
 
 impl Bar for u8 {
-    type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
+    type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug> + Debug);
     //~^ ERROR `impl Trait` in type aliases is unstable
     //~| ERROR `impl Trait` in type aliases is unstable
     //~| ERROR `impl Trait` in type aliases is unstable
     //~| ERROR `impl Trait` in type aliases is unstable
-    //~| ERROR `impl Trait` not allowed outside of function
-    //~| ERROR `impl Trait` not allowed outside of function
-    //~| ERROR `impl Trait` not allowed outside of function
-    fn define() -> Self::Baa { (vec![true], 0u8, 0i32..1) }
+    fn define() -> Self::Baa {
+        (vec![true], 0u8, 0i32..1)
+    }
 }
 
 fn main() {}
diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr
index 55cd2984ab6..8bab0d0c4a9 100644
--- a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr
+++ b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr
@@ -17,7 +17,7 @@ LL |     type Baa = impl Debug;
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: associated type defaults are unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:18:5
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:22:5
    |
 LL |     type Assoc = impl Debug;
    |     ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -26,7 +26,7 @@ LL |     type Assoc = impl Debug;
    = help: add `#![feature(associated_type_defaults)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:18:18
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:22:18
    |
 LL |     type Assoc = impl Debug;
    |                  ^^^^^^^^^^
@@ -35,7 +35,7 @@ LL |     type Assoc = impl Debug;
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:24
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:28:24
    |
 LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
    |                        ^^^^^^^^^^
@@ -44,7 +44,7 @@ LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl D
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:37
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:28:37
    |
 LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
    |                                     ^^^^^^^^^^
@@ -53,7 +53,7 @@ LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl D
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:49
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:28:49
    |
 LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -62,7 +62,7 @@ LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl D
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:70
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:28:70
    |
 LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
    |                                                                      ^^^^^^^^^^
@@ -71,84 +71,48 @@ LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl D
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:21
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:39:21
    |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
+LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug> + Debug);
    |                     ^^^^^^^^^^
    |
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:34
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:39:34
    |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
+LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug> + Debug);
    |                                  ^^^^^^^^^^
    |
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:46
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:39:46
    |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug> + Debug);
+   |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0658]: `impl Trait` in type aliases is unstable
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:67
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:39:67
    |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
+LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug> + Debug);
    |                                                                   ^^^^^^^^^^
    |
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:18:18
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:22:18
    |
 LL |     type Assoc = impl Debug;
    |                  ^^^^^^^^^^
 
-error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:24
-   |
-LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                        ^^^^^^^^^^
-
-error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:37
-   |
-LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                                     ^^^^^^^^^^
-
-error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:24:49
-   |
-LL | type NestedFree = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:21
-   |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                     ^^^^^^^^^^
-
-error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:34
-   |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                                  ^^^^^^^^^^
-
-error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:34:46
-   |
-LL |     type Baa = (Vec<impl Debug>, impl Debug, impl Iterator<Item = impl Debug>);
-   |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 19 previous errors
+error: aborting due to 13 previous errors
 
 Some errors have detailed explanations: E0562, E0658.
 For more information about an error, try `rustc --explain E0562`.
diff --git a/src/test/ui/ffi_returns_twice.stderr b/src/test/ui/ffi_returns_twice.stderr
index 862892e27be..2b7f5694f02 100644
--- a/src/test/ui/ffi_returns_twice.stderr
+++ b/src/test/ui/ffi_returns_twice.stderr
@@ -6,3 +6,4 @@ LL | #[ffi_returns_twice]
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0724`.
diff --git a/src/test/ui/for/for-loop-refutable-pattern-error-message.stderr b/src/test/ui/for/for-loop-refutable-pattern-error-message.stderr
index ce12b7853b6..e32005e21a8 100644
--- a/src/test/ui/for/for-loop-refutable-pattern-error-message.stderr
+++ b/src/test/ui/for/for-loop-refutable-pattern-error-message.stderr
@@ -1,8 +1,8 @@
-error[E0005]: refutable pattern in `for` loop binding: `&std::i32::MIN..=0i32` and `&2i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in `for` loop binding: `&i32::MIN..=0i32` and `&2i32..=i32::MAX` not covered
   --> $DIR/for-loop-refutable-pattern-error-message.rs:2:9
    |
 LL |     for &1 in [1].iter() {}
-   |         ^^ patterns `&std::i32::MIN..=0i32` and `&2i32..=std::i32::MAX` not covered
+   |         ^^ patterns `&i32::MIN..=0i32` and `&2i32..=i32::MAX` not covered
    |
    = note: the matched value is of type `&i32`
 
diff --git a/src/test/ui/generator/size-moved-locals.rs b/src/test/ui/generator/size-moved-locals.rs
index a5786c2999e..74c60d98154 100644
--- a/src/test/ui/generator/size-moved-locals.rs
+++ b/src/test/ui/generator/size-moved-locals.rs
@@ -72,6 +72,6 @@ fn overlap_x_and_y() -> impl Generator<Yield = (), Return = ()> {
 fn main() {
     assert_eq!(1025, std::mem::size_of_val(&move_before_yield()));
     assert_eq!(1026, std::mem::size_of_val(&move_before_yield_with_noop()));
-    assert_eq!(1027, std::mem::size_of_val(&overlap_move_points()));
+    assert_eq!(2051, std::mem::size_of_val(&overlap_move_points()));
     assert_eq!(1026, std::mem::size_of_val(&overlap_x_and_y()));
 }
diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr b/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr
index 6c7a0cdb77a..028bfb89312 100644
--- a/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr
+++ b/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr
@@ -70,20 +70,20 @@ LL |     m!('a', ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `char`
 
-error[E0004]: non-exhaustive patterns: `std::u8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u8::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:41:12
    |
 LL |         m!(0, ..core::u8::MAX);
-   |            ^ pattern `std::u8::MAX` not covered
+   |            ^ pattern `u8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
 
-error[E0004]: non-exhaustive patterns: `254u8..=std::u8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `254u8..=u8::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:42:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `254u8..=std::u8::MAX` not covered
+   |            ^ pattern `254u8..=u8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
@@ -97,11 +97,11 @@ LL |         m!(0, ALMOST_MIN..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
 
-error[E0004]: non-exhaustive patterns: `std::u8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u8::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:44:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::u8::MAX` not covered
+   |            ^ pattern `u8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
@@ -124,20 +124,20 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
 
-error[E0004]: non-exhaustive patterns: `std::u16::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u16::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:54:12
    |
 LL |         m!(0, ..core::u16::MAX);
-   |            ^ pattern `std::u16::MAX` not covered
+   |            ^ pattern `u16::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u16`
 
-error[E0004]: non-exhaustive patterns: `65534u16..=std::u16::MAX` not covered
+error[E0004]: non-exhaustive patterns: `65534u16..=u16::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:55:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `65534u16..=std::u16::MAX` not covered
+   |            ^ pattern `65534u16..=u16::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u16`
@@ -151,11 +151,11 @@ LL |         m!(0, ALMOST_MIN..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u16`
 
-error[E0004]: non-exhaustive patterns: `std::u16::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u16::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:57:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::u16::MAX` not covered
+   |            ^ pattern `u16::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u16`
@@ -178,20 +178,20 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u16`
 
-error[E0004]: non-exhaustive patterns: `std::u32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u32::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:67:12
    |
 LL |         m!(0, ..core::u32::MAX);
-   |            ^ pattern `std::u32::MAX` not covered
+   |            ^ pattern `u32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u32`
 
-error[E0004]: non-exhaustive patterns: `4294967294u32..=std::u32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `4294967294u32..=u32::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:68:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `4294967294u32..=std::u32::MAX` not covered
+   |            ^ pattern `4294967294u32..=u32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u32`
@@ -205,11 +205,11 @@ LL |         m!(0, ALMOST_MIN..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u32`
 
-error[E0004]: non-exhaustive patterns: `std::u32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u32::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:70:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::u32::MAX` not covered
+   |            ^ pattern `u32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u32`
@@ -232,20 +232,20 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u32`
 
-error[E0004]: non-exhaustive patterns: `std::u64::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u64::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:80:12
    |
 LL |         m!(0, ..core::u64::MAX);
-   |            ^ pattern `std::u64::MAX` not covered
+   |            ^ pattern `u64::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u64`
 
-error[E0004]: non-exhaustive patterns: `18446744073709551614u64..=std::u64::MAX` not covered
+error[E0004]: non-exhaustive patterns: `18446744073709551614u64..=u64::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:81:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `18446744073709551614u64..=std::u64::MAX` not covered
+   |            ^ pattern `18446744073709551614u64..=u64::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u64`
@@ -259,11 +259,11 @@ LL |         m!(0, ALMOST_MIN..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u64`
 
-error[E0004]: non-exhaustive patterns: `std::u64::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u64::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:83:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::u64::MAX` not covered
+   |            ^ pattern `u64::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u64`
@@ -286,20 +286,20 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u64`
 
-error[E0004]: non-exhaustive patterns: `std::u128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u128::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:93:12
    |
 LL |         m!(0, ..core::u128::MAX);
-   |            ^ pattern `std::u128::MAX` not covered
+   |            ^ pattern `u128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
 
-error[E0004]: non-exhaustive patterns: `340282366920938463463374607431768211454u128..=std::u128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `340282366920938463463374607431768211454u128..=u128::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:94:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `340282366920938463463374607431768211454u128..=std::u128::MAX` not covered
+   |            ^ pattern `340282366920938463463374607431768211454u128..=u128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
@@ -313,11 +313,11 @@ LL |         m!(0, ALMOST_MIN..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
 
-error[E0004]: non-exhaustive patterns: `std::u128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u128::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:96:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::u128::MAX` not covered
+   |            ^ pattern `u128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
@@ -340,38 +340,38 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
 
-error[E0004]: non-exhaustive patterns: `std::i8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i8::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:109:12
    |
 LL |         m!(0, ..core::i8::MAX);
-   |            ^ pattern `std::i8::MAX` not covered
+   |            ^ pattern `i8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
 
-error[E0004]: non-exhaustive patterns: `126i8..=std::i8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `126i8..=i8::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:110:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `126i8..=std::i8::MAX` not covered
+   |            ^ pattern `126i8..=i8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
 
-error[E0004]: non-exhaustive patterns: `std::i8::MIN` not covered
+error[E0004]: non-exhaustive patterns: `i8::MIN` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:111:12
    |
 LL |         m!(0, ALMOST_MIN..);
-   |            ^ pattern `std::i8::MIN` not covered
+   |            ^ pattern `i8::MIN` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
 
-error[E0004]: non-exhaustive patterns: `std::i8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i8::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:112:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::i8::MAX` not covered
+   |            ^ pattern `i8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
@@ -394,38 +394,38 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
 
-error[E0004]: non-exhaustive patterns: `std::i16::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i16::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:122:12
    |
 LL |         m!(0, ..core::i16::MAX);
-   |            ^ pattern `std::i16::MAX` not covered
+   |            ^ pattern `i16::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i16`
 
-error[E0004]: non-exhaustive patterns: `32766i16..=std::i16::MAX` not covered
+error[E0004]: non-exhaustive patterns: `32766i16..=i16::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:123:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `32766i16..=std::i16::MAX` not covered
+   |            ^ pattern `32766i16..=i16::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i16`
 
-error[E0004]: non-exhaustive patterns: `std::i16::MIN` not covered
+error[E0004]: non-exhaustive patterns: `i16::MIN` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:124:12
    |
 LL |         m!(0, ALMOST_MIN..);
-   |            ^ pattern `std::i16::MIN` not covered
+   |            ^ pattern `i16::MIN` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i16`
 
-error[E0004]: non-exhaustive patterns: `std::i16::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i16::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:125:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::i16::MAX` not covered
+   |            ^ pattern `i16::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i16`
@@ -448,38 +448,38 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i16`
 
-error[E0004]: non-exhaustive patterns: `std::i32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i32::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:135:12
    |
 LL |         m!(0, ..core::i32::MAX);
-   |            ^ pattern `std::i32::MAX` not covered
+   |            ^ pattern `i32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
 
-error[E0004]: non-exhaustive patterns: `2147483646i32..=std::i32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `2147483646i32..=i32::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:136:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `2147483646i32..=std::i32::MAX` not covered
+   |            ^ pattern `2147483646i32..=i32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
 
-error[E0004]: non-exhaustive patterns: `std::i32::MIN` not covered
+error[E0004]: non-exhaustive patterns: `i32::MIN` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:137:12
    |
 LL |         m!(0, ALMOST_MIN..);
-   |            ^ pattern `std::i32::MIN` not covered
+   |            ^ pattern `i32::MIN` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
 
-error[E0004]: non-exhaustive patterns: `std::i32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i32::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:138:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::i32::MAX` not covered
+   |            ^ pattern `i32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
@@ -502,38 +502,38 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
 
-error[E0004]: non-exhaustive patterns: `std::i64::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i64::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:148:12
    |
 LL |         m!(0, ..core::i64::MAX);
-   |            ^ pattern `std::i64::MAX` not covered
+   |            ^ pattern `i64::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i64`
 
-error[E0004]: non-exhaustive patterns: `9223372036854775806i64..=std::i64::MAX` not covered
+error[E0004]: non-exhaustive patterns: `9223372036854775806i64..=i64::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:149:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `9223372036854775806i64..=std::i64::MAX` not covered
+   |            ^ pattern `9223372036854775806i64..=i64::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i64`
 
-error[E0004]: non-exhaustive patterns: `std::i64::MIN` not covered
+error[E0004]: non-exhaustive patterns: `i64::MIN` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:150:12
    |
 LL |         m!(0, ALMOST_MIN..);
-   |            ^ pattern `std::i64::MIN` not covered
+   |            ^ pattern `i64::MIN` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i64`
 
-error[E0004]: non-exhaustive patterns: `std::i64::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i64::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:151:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::i64::MAX` not covered
+   |            ^ pattern `i64::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i64`
@@ -556,38 +556,38 @@ LL |         m!(0, ..VAL_1 | VAL_2..);
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i64`
 
-error[E0004]: non-exhaustive patterns: `std::i128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i128::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:161:12
    |
 LL |         m!(0, ..core::i128::MAX);
-   |            ^ pattern `std::i128::MAX` not covered
+   |            ^ pattern `i128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i128`
 
-error[E0004]: non-exhaustive patterns: `170141183460469231731687303715884105726i128..=std::i128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `170141183460469231731687303715884105726i128..=i128::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:162:12
    |
 LL |         m!(0, ..ALMOST_MAX);
-   |            ^ pattern `170141183460469231731687303715884105726i128..=std::i128::MAX` not covered
+   |            ^ pattern `170141183460469231731687303715884105726i128..=i128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i128`
 
-error[E0004]: non-exhaustive patterns: `std::i128::MIN` not covered
+error[E0004]: non-exhaustive patterns: `i128::MIN` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:163:12
    |
 LL |         m!(0, ALMOST_MIN..);
-   |            ^ pattern `std::i128::MIN` not covered
+   |            ^ pattern `i128::MIN` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i128`
 
-error[E0004]: non-exhaustive patterns: `std::i128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i128::MAX` not covered
   --> $DIR/half-open-range-pats-exhaustive-fail.rs:164:12
    |
 LL |         m!(0, ..=ALMOST_MAX);
-   |            ^ pattern `std::i128::MAX` not covered
+   |            ^ pattern `i128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i128`
diff --git a/src/test/ui/hygiene/no_implicit_prelude.stderr b/src/test/ui/hygiene/no_implicit_prelude.stderr
index c0539434d02..990210ffb6b 100644
--- a/src/test/ui/hygiene/no_implicit_prelude.stderr
+++ b/src/test/ui/hygiene/no_implicit_prelude.stderr
@@ -16,9 +16,7 @@ LL |         Vec::new();
    |         ^^^ not found in this scope
    |
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-help: consider importing one of these items
-   |
-LL |     use std::prelude::v1::Vec;
+help: consider importing this struct
    |
 LL |     use std::vec::Vec;
    |
diff --git a/src/test/ui/impl-trait/auto-trait-leak.rs b/src/test/ui/impl-trait/auto-trait-leak.rs
index a6012835f44..087f4582b21 100644
--- a/src/test/ui/impl-trait/auto-trait-leak.rs
+++ b/src/test/ui/impl-trait/auto-trait-leak.rs
@@ -11,8 +11,6 @@ fn main() {
 // return type, which can't depend on the obligation.
 fn cycle1() -> impl Clone {
     //~^ ERROR cycle detected
-    //~| ERROR cycle detected
-    //~| ERROR cycle detected
     send(cycle2().clone());
     //~^ ERROR cannot be sent between threads safely
 
diff --git a/src/test/ui/impl-trait/auto-trait-leak.stderr b/src/test/ui/impl-trait/auto-trait-leak.stderr
index 64d02f07048..679b26efe59 100644
--- a/src/test/ui/impl-trait/auto-trait-leak.stderr
+++ b/src/test/ui/impl-trait/auto-trait-leak.stderr
@@ -36,37 +36,37 @@ LL | fn cycle1() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`...
 note: ...which requires computing type of `cycle2::{{opaque}}#0`...
-  --> $DIR/auto-trait-leak.rs:22:16
+  --> $DIR/auto-trait-leak.rs:20:16
    |
 LL | fn cycle2() -> impl Clone {
    |                ^^^^^^^^^^
 note: ...which requires borrow-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
+  --> $DIR/auto-trait-leak.rs:20:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires processing `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
+  --> $DIR/auto-trait-leak.rs:20:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires processing MIR for `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
+  --> $DIR/auto-trait-leak.rs:20:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires unsafety-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
+  --> $DIR/auto-trait-leak.rs:20:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires building MIR for `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
+  --> $DIR/auto-trait-leak.rs:20:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires type-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
+  --> $DIR/auto-trait-leak.rs:20:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -84,178 +84,8 @@ LL | |     Rc::new(String::from("foo"))
 LL | | }
    | |_^
 
-error[E0391]: cycle detected when computing type of `cycle1::{{opaque}}#0`
-  --> $DIR/auto-trait-leak.rs:12:16
-   |
-LL | fn cycle1() -> impl Clone {
-   |                ^^^^^^^^^^
-   |
-note: ...which requires borrow-checking `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires unsafety-checking `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires building MIR for `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires type-checking `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`...
-note: ...which requires computing type of `cycle2::{{opaque}}#0`...
-  --> $DIR/auto-trait-leak.rs:22:16
-   |
-LL | fn cycle2() -> impl Clone {
-   |                ^^^^^^^^^^
-note: ...which requires borrow-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires unsafety-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires building MIR for `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires type-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which again requires computing type of `cycle1::{{opaque}}#0`, completing the cycle
-note: cycle used when checking item types in top-level module
-  --> $DIR/auto-trait-leak.rs:1:1
-   |
-LL | / use std::cell::Cell;
-LL | | use std::rc::Rc;
-LL | |
-LL | | fn send<T: Send>(_: T) {}
-...  |
-LL | |     Rc::new(String::from("foo"))
-LL | | }
-   | |_^
-
-error[E0391]: cycle detected when computing type of `cycle1::{{opaque}}#0`
-  --> $DIR/auto-trait-leak.rs:12:16
-   |
-LL | fn cycle1() -> impl Clone {
-   |                ^^^^^^^^^^
-   |
-note: ...which requires borrow-checking `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires unsafety-checking `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires building MIR for `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires type-checking `cycle1`...
-  --> $DIR/auto-trait-leak.rs:12:1
-   |
-LL | fn cycle1() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`...
-note: ...which requires computing type of `cycle2::{{opaque}}#0`...
-  --> $DIR/auto-trait-leak.rs:22:16
-   |
-LL | fn cycle2() -> impl Clone {
-   |                ^^^^^^^^^^
-note: ...which requires borrow-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires unsafety-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires building MIR for `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires type-checking `cycle2`...
-  --> $DIR/auto-trait-leak.rs:22:1
-   |
-LL | fn cycle2() -> impl Clone {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: ...which again requires computing type of `cycle1::{{opaque}}#0`, completing the cycle
-note: cycle used when checking item types in top-level module
-  --> $DIR/auto-trait-leak.rs:1:1
-   |
-LL | / use std::cell::Cell;
-LL | | use std::rc::Rc;
-LL | |
-LL | | fn send<T: Send>(_: T) {}
-...  |
-LL | |     Rc::new(String::from("foo"))
-LL | | }
-   | |_^
-
 error[E0277]: `std::rc::Rc<std::string::String>` cannot be sent between threads safely
-  --> $DIR/auto-trait-leak.rs:16:5
+  --> $DIR/auto-trait-leak.rs:14:5
    |
 LL | fn send<T: Send>(_: T) {}
    |            ---- required by this bound in `send`
@@ -269,7 +99,7 @@ LL | fn cycle2() -> impl Clone {
    = help: within `impl std::clone::Clone`, the trait `std::marker::Send` is not implemented for `std::rc::Rc<std::string::String>`
    = note: required because it appears within the type `impl std::clone::Clone`
 
-error: aborting due to 4 previous errors
+error: aborting due to 2 previous errors
 
 Some errors have detailed explanations: E0277, E0391.
 For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/impl-trait/auto-trait.rs b/src/test/ui/impl-trait/auto-trait.rs
index c7675781208..cf2773f4ef5 100644
--- a/src/test/ui/impl-trait/auto-trait.rs
+++ b/src/test/ui/impl-trait/auto-trait.rs
@@ -2,22 +2,24 @@
 // the purposes of coherence checking
 #![feature(type_alias_impl_trait)]
 
-trait OpaqueTrait { }
-impl<T> OpaqueTrait for T { }
+trait OpaqueTrait {}
+impl<T> OpaqueTrait for T {}
 type OpaqueType = impl OpaqueTrait;
-fn mk_opaque() -> OpaqueType { () }
+fn mk_opaque() -> OpaqueType {
+    ()
+}
 
 #[derive(Debug)]
 struct D<T>(T);
 
-trait AnotherTrait { }
-impl<T: Send> AnotherTrait for T { }
+trait AnotherTrait {}
+impl<T: Send> AnotherTrait for T {}
 
 // This is in error, because we cannot assume that `OpaqueType: !Send`.
 // (We treat opaque types as "foreign types" that could grow more impls
 // in the future.)
 impl AnotherTrait for D<OpaqueType> {
-    //~^ ERROR conflicting implementations of trait `AnotherTrait` for type `D<OpaqueType>`
+    //~^ ERROR conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`
 }
 
 fn main() {}
diff --git a/src/test/ui/impl-trait/auto-trait.stderr b/src/test/ui/impl-trait/auto-trait.stderr
index 5e72ca7a47b..16fe1b56b50 100644
--- a/src/test/ui/impl-trait/auto-trait.stderr
+++ b/src/test/ui/impl-trait/auto-trait.stderr
@@ -1,11 +1,11 @@
-error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<OpaqueType>`:
-  --> $DIR/auto-trait.rs:19:1
+error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`:
+  --> $DIR/auto-trait.rs:21:1
    |
-LL | impl<T: Send> AnotherTrait for T { }
+LL | impl<T: Send> AnotherTrait for T {}
    | -------------------------------- first implementation here
 ...
 LL | impl AnotherTrait for D<OpaqueType> {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `D<OpaqueType>`
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `D<impl OpaqueTrait>`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/impl-trait/issue-55872-1.stderr b/src/test/ui/impl-trait/issue-55872-1.stderr
index 6cb2c9fb892..5131509cdf0 100644
--- a/src/test/ui/impl-trait/issue-55872-1.stderr
+++ b/src/test/ui/impl-trait/issue-55872-1.stderr
@@ -1,8 +1,8 @@
 error[E0277]: the trait bound `S: std::marker::Copy` is not satisfied in `(S, T)`
-  --> $DIR/issue-55872-1.rs:12:5
+  --> $DIR/issue-55872-1.rs:12:14
    |
 LL |     type E = impl Copy;
-   |     ^^^^^^^^^^^^^^^^^^^ within `(S, T)`, the trait `std::marker::Copy` is not implemented for `S`
+   |              ^^^^^^^^^ within `(S, T)`, the trait `std::marker::Copy` is not implemented for `S`
    |
    = note: required because it appears within the type `(S, T)`
    = note: the return type of a function must have a statically known size
@@ -12,10 +12,10 @@ LL | impl<S: Default + std::marker::Copy> Bar for S {
    |                 ^^^^^^^^^^^^^^^^^^^
 
 error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied in `(S, T)`
-  --> $DIR/issue-55872-1.rs:12:5
+  --> $DIR/issue-55872-1.rs:12:14
    |
 LL |     type E = impl Copy;
-   |     ^^^^^^^^^^^^^^^^^^^ within `(S, T)`, the trait `std::marker::Copy` is not implemented for `T`
+   |              ^^^^^^^^^ within `(S, T)`, the trait `std::marker::Copy` is not implemented for `T`
    |
    = note: required because it appears within the type `(S, T)`
    = note: the return type of a function must have a statically known size
diff --git a/src/test/ui/impl-trait/issue-55872-2.stderr b/src/test/ui/impl-trait/issue-55872-2.stderr
index 01371b4d5c6..649109e4c93 100644
--- a/src/test/ui/impl-trait/issue-55872-2.stderr
+++ b/src/test/ui/impl-trait/issue-55872-2.stderr
@@ -1,8 +1,8 @@
 error[E0277]: the trait bound `impl std::future::Future: std::marker::Copy` is not satisfied
-  --> $DIR/issue-55872-2.rs:13:5
+  --> $DIR/issue-55872-2.rs:13:14
    |
 LL |     type E = impl Copy;
-   |     ^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `impl std::future::Future`
+   |              ^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `impl std::future::Future`
    |
    = note: the return type of a function must have a statically known size
 
diff --git a/src/test/ui/impl-trait/issue-60473.rs b/src/test/ui/impl-trait/issue-60473.rs
index 50cf0c8c6d6..2ef86f03d34 100644
--- a/src/test/ui/impl-trait/issue-60473.rs
+++ b/src/test/ui/impl-trait/issue-60473.rs
@@ -5,13 +5,11 @@
 
 struct A<'a>(&'a ());
 
-trait Trait<T> {
-}
+trait Trait<T> {}
 
-impl<T> Trait<T> for () {
-}
+impl<T> Trait<T> for () {}
 
 fn main() {
-    let x: impl Trait<A> = (); // FIXME: The error doesn't seem correct.
-    //~^ ERROR: opaque type expands to a recursive type
+    let x: impl Trait<A> = ();
+    //~^ ERROR: missing lifetime specifier
 }
diff --git a/src/test/ui/impl-trait/issue-60473.stderr b/src/test/ui/impl-trait/issue-60473.stderr
index 2d95be4e52c..367b5db5d2d 100644
--- a/src/test/ui/impl-trait/issue-60473.stderr
+++ b/src/test/ui/impl-trait/issue-60473.stderr
@@ -1,11 +1,15 @@
-error[E0720]: opaque type expands to a recursive type
-  --> $DIR/issue-60473.rs:15:12
+error[E0106]: missing lifetime specifier
+  --> $DIR/issue-60473.rs:13:23
    |
-LL |     let x: impl Trait<A> = (); // FIXME: The error doesn't seem correct.
-   |            ^^^^^^^^^^^^^ expands to a recursive type
+LL |     let x: impl Trait<A> = ();
+   |                       ^ expected named lifetime parameter
+   |
+help: consider introducing a named lifetime parameter
+   |
+LL | fn main<'a>() {
+LL |     let x: impl Trait<A<'a>> = ();
    |
-   = note: type resolves to itself
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0720`.
+For more information about this error, try `rustc --explain E0106`.
diff --git a/src/test/ui/impl-trait/issue-67166.rs b/src/test/ui/impl-trait/issue-67166.rs
index de7433a9bfc..efa67558bd7 100644
--- a/src/test/ui/impl-trait/issue-67166.rs
+++ b/src/test/ui/impl-trait/issue-67166.rs
@@ -4,8 +4,8 @@
 #![allow(incomplete_features)]
 
 pub fn run() {
-    let _foo: Box<impl Copy + '_> = Box::new(()); // FIXME: The error doesn't much make sense.
-    //~^ ERROR: opaque type expands to a recursive type
+    let _foo: Box<impl Copy + '_> = Box::new(());
+    //~^ ERROR: missing lifetime specifier
 }
 
 fn main() {}
diff --git a/src/test/ui/impl-trait/issue-67166.stderr b/src/test/ui/impl-trait/issue-67166.stderr
index 56cba3cff0b..14c78684e3e 100644
--- a/src/test/ui/impl-trait/issue-67166.stderr
+++ b/src/test/ui/impl-trait/issue-67166.stderr
@@ -1,11 +1,15 @@
-error[E0720]: opaque type expands to a recursive type
-  --> $DIR/issue-67166.rs:7:19
+error[E0106]: missing lifetime specifier
+  --> $DIR/issue-67166.rs:7:31
    |
-LL |     let _foo: Box<impl Copy + '_> = Box::new(()); // FIXME: The error doesn't much make sense.
-   |                   ^^^^^^^^^^^^^^ expands to a recursive type
+LL |     let _foo: Box<impl Copy + '_> = Box::new(());
+   |                               ^^ expected named lifetime parameter
+   |
+help: consider introducing a named lifetime parameter
+   |
+LL | pub fn run<'a>() {
+LL |     let _foo: Box<impl Copy + 'a> = Box::new(());
    |
-   = note: type resolves to itself
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0720`.
+For more information about this error, try `rustc --explain E0106`.
diff --git a/src/test/ui/impl-trait/negative-reasoning.rs b/src/test/ui/impl-trait/negative-reasoning.rs
index 4977f9bdbac..d173fe83fb7 100644
--- a/src/test/ui/impl-trait/negative-reasoning.rs
+++ b/src/test/ui/impl-trait/negative-reasoning.rs
@@ -2,21 +2,22 @@
 // other trait
 #![feature(type_alias_impl_trait)]
 
-trait OpaqueTrait { }
-impl<T> OpaqueTrait for T { }
+trait OpaqueTrait {}
+impl<T> OpaqueTrait for T {}
 type OpaqueType = impl OpaqueTrait;
-fn mk_opaque() -> OpaqueType { () }
+fn mk_opaque() -> OpaqueType {
+    ()
+}
 
 #[derive(Debug)]
 struct D<T>(T);
 
-trait AnotherTrait { }
-impl<T: std::fmt::Debug> AnotherTrait for T { }
-
+trait AnotherTrait {}
+impl<T: std::fmt::Debug> AnotherTrait for T {}
 
 // This is in error, because we cannot assume that `OpaqueType: !Debug`
 impl AnotherTrait for D<OpaqueType> {
-    //~^ ERROR conflicting implementations of trait `AnotherTrait` for type `D<OpaqueType>`
+    //~^ ERROR conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`
 }
 
 fn main() {}
diff --git a/src/test/ui/impl-trait/negative-reasoning.stderr b/src/test/ui/impl-trait/negative-reasoning.stderr
index 526a664726a..e43d8c857b2 100644
--- a/src/test/ui/impl-trait/negative-reasoning.stderr
+++ b/src/test/ui/impl-trait/negative-reasoning.stderr
@@ -1,13 +1,13 @@
-error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<OpaqueType>`:
-  --> $DIR/negative-reasoning.rs:18:1
+error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`:
+  --> $DIR/negative-reasoning.rs:19:1
    |
-LL | impl<T: std::fmt::Debug> AnotherTrait for T { }
+LL | impl<T: std::fmt::Debug> AnotherTrait for T {}
    | ------------------------------------------- first implementation here
 ...
 LL | impl AnotherTrait for D<OpaqueType> {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `D<OpaqueType>`
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `D<impl OpaqueTrait>`
    |
-   = note: upstream crates may add a new impl of trait `std::fmt::Debug` for type `OpaqueType` in future versions
+   = note: upstream crates may add a new impl of trait `std::fmt::Debug` for type `impl OpaqueTrait` in future versions
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/impl-trait/where-allowed.stderr b/src/test/ui/impl-trait/where-allowed.stderr
index 5d9ae6a0301..7addc006e19 100644
--- a/src/test/ui/impl-trait/where-allowed.stderr
+++ b/src/test/ui/impl-trait/where-allowed.stderr
@@ -256,16 +256,16 @@ LL |     let _in_return_in_local_variable = || -> impl Fn() { || {} };
    |                                              ^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/where-allowed.rs:155:1
+  --> $DIR/where-allowed.rs:119:16
    |
-LL | type InTypeAlias<R> = impl Debug;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL |     type Out = impl Debug;
+   |                ^^^^^^^^^^
 
 error: could not find defining uses
-  --> $DIR/where-allowed.rs:119:5
+  --> $DIR/where-allowed.rs:155:23
    |
-LL |     type Out = impl Debug;
-   |     ^^^^^^^^^^^^^^^^^^^^^^
+LL | type InTypeAlias<R> = impl Debug;
+   |                       ^^^^^^^^^^
 
 error: aborting due to 42 previous errors
 
diff --git a/src/test/ui/infinite/infinite-recursion-const-fn.stderr b/src/test/ui/infinite/infinite-recursion-const-fn.stderr
index 6bd5e035f57..de0c579f630 100644
--- a/src/test/ui/infinite/infinite-recursion-const-fn.stderr
+++ b/src/test/ui/infinite/infinite-recursion-const-fn.stderr
@@ -1,14 +1,14 @@
 error[E0391]: cycle detected when const-evaluating `a`
-  --> $DIR/infinite-recursion-const-fn.rs:3:25
+  --> $DIR/infinite-recursion-const-fn.rs:3:1
    |
 LL | const fn a() -> usize { b() }
-   |                         ^^^
+   | ^^^^^^^^^^^^^^^^^^^^^
    |
 note: ...which requires const-evaluating `b`...
-  --> $DIR/infinite-recursion-const-fn.rs:4:25
+  --> $DIR/infinite-recursion-const-fn.rs:4:1
    |
 LL | const fn b() -> usize { a() }
-   |                         ^^^
+   | ^^^^^^^^^^^^^^^^^^^^^
    = note: ...which again requires const-evaluating `a`, completing the cycle
 note: cycle used when const-evaluating `ARR::{{constant}}#0`
   --> $DIR/infinite-recursion-const-fn.rs:5:18
diff --git a/src/test/ui/infinite/infinite-tag-type-recursion.stderr b/src/test/ui/infinite/infinite-tag-type-recursion.stderr
index 11f82b842ba..6d1df4fda2e 100644
--- a/src/test/ui/infinite/infinite-tag-type-recursion.stderr
+++ b/src/test/ui/infinite/infinite-tag-type-recursion.stderr
@@ -6,7 +6,10 @@ LL | enum MList { Cons(isize, MList), Nil }
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `MList` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `MList` representable
+   |
+LL | enum MList { Cons(isize, Box<MList>), Nil }
+   |                          ^^^^     ^
 
 error[E0391]: cycle detected when computing drop-check constraints for `MList`
   --> $DIR/infinite-tag-type-recursion.rs:1:1
diff --git a/src/test/ui/issues/issue-17431-1.stderr b/src/test/ui/issues/issue-17431-1.stderr
index eb5a1366e89..58d087ca199 100644
--- a/src/test/ui/issues/issue-17431-1.stderr
+++ b/src/test/ui/issues/issue-17431-1.stderr
@@ -2,11 +2,14 @@ error[E0072]: recursive type `Foo` has infinite size
   --> $DIR/issue-17431-1.rs:1:1
    |
 LL | struct Foo { foo: Option<Option<Foo>> }
-   | ^^^^^^^^^^   ------------------------ recursive without indirection
+   | ^^^^^^^^^^        ------------------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | struct Foo { foo: Box<Option<Option<Foo>>> }
+   |                   ^^^^                   ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-17431-2.stderr b/src/test/ui/issues/issue-17431-2.stderr
index 3a7b0e9ce79..eba4bf6d1d5 100644
--- a/src/test/ui/issues/issue-17431-2.stderr
+++ b/src/test/ui/issues/issue-17431-2.stderr
@@ -2,21 +2,27 @@ error[E0072]: recursive type `Baz` has infinite size
   --> $DIR/issue-17431-2.rs:1:1
    |
 LL | struct Baz { q: Option<Foo> }
-   | ^^^^^^^^^^   -------------- recursive without indirection
+   | ^^^^^^^^^^      ----------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Baz` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Baz` representable
+   |
+LL | struct Baz { q: Box<Option<Foo>> }
+   |                 ^^^^           ^
 
 error[E0072]: recursive type `Foo` has infinite size
   --> $DIR/issue-17431-2.rs:4:1
    |
 LL | struct Foo { q: Option<Baz> }
-   | ^^^^^^^^^^   -------------- recursive without indirection
+   | ^^^^^^^^^^      ----------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | struct Foo { q: Box<Option<Baz>> }
+   |                 ^^^^           ^
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/issues/issue-17431-3.stderr b/src/test/ui/issues/issue-17431-3.stderr
index 675a2e27142..f6b15d0528a 100644
--- a/src/test/ui/issues/issue-17431-3.stderr
+++ b/src/test/ui/issues/issue-17431-3.stderr
@@ -2,11 +2,14 @@ error[E0072]: recursive type `Foo` has infinite size
   --> $DIR/issue-17431-3.rs:3:1
    |
 LL | struct Foo { foo: Mutex<Option<Foo>> }
-   | ^^^^^^^^^^   ----------------------- recursive without indirection
+   | ^^^^^^^^^^        ------------------ recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | struct Foo { foo: Box<Mutex<Option<Foo>>> }
+   |                   ^^^^                  ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-17431-4.stderr b/src/test/ui/issues/issue-17431-4.stderr
index aff9071095c..aa709e1ad51 100644
--- a/src/test/ui/issues/issue-17431-4.stderr
+++ b/src/test/ui/issues/issue-17431-4.stderr
@@ -2,11 +2,14 @@ error[E0072]: recursive type `Foo` has infinite size
   --> $DIR/issue-17431-4.rs:3:1
    |
 LL | struct Foo<T> { foo: Option<Option<Foo<T>>>, marker: marker::PhantomData<T> }
-   | ^^^^^^^^^^^^^   --------------------------- recursive without indirection
+   | ^^^^^^^^^^^^^        ---------------------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | struct Foo<T> { foo: Box<Option<Option<Foo<T>>>>, marker: marker::PhantomData<T> }
+   |                      ^^^^                      ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-17431-5.stderr b/src/test/ui/issues/issue-17431-5.stderr
index 537f9f34f55..1558cffb036 100644
--- a/src/test/ui/issues/issue-17431-5.stderr
+++ b/src/test/ui/issues/issue-17431-5.stderr
@@ -2,11 +2,14 @@ error[E0072]: recursive type `Bar` has infinite size
   --> $DIR/issue-17431-5.rs:5:1
    |
 LL | struct Bar<T> { x: Bar<Foo> , marker: marker::PhantomData<T> }
-   | ^^^^^^^^^^^^^   ----------- recursive without indirection
+   | ^^^^^^^^^^^^^      -------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
+   |
+LL | struct Bar<T> { x: Box<Bar<Foo>> , marker: marker::PhantomData<T> }
+   |                    ^^^^        ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-17431-6.stderr b/src/test/ui/issues/issue-17431-6.stderr
index cb2dab95014..f2aa2a79c82 100644
--- a/src/test/ui/issues/issue-17431-6.stderr
+++ b/src/test/ui/issues/issue-17431-6.stderr
@@ -6,7 +6,10 @@ LL | enum Foo { X(Mutex<Option<Foo>>) }
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | enum Foo { X(Box<Mutex<Option<Foo>>>) }
+   |              ^^^^                  ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-17431-7.stderr b/src/test/ui/issues/issue-17431-7.stderr
index de70851da4b..684c3089e85 100644
--- a/src/test/ui/issues/issue-17431-7.stderr
+++ b/src/test/ui/issues/issue-17431-7.stderr
@@ -6,7 +6,10 @@ LL | enum Foo { Voo(Option<Option<Foo>>) }
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | enum Foo { Voo(Box<Option<Option<Foo>>>) }
+   |                ^^^^                   ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-17546.stderr b/src/test/ui/issues/issue-17546.stderr
index 8bf40790f0b..95939cf6b38 100644
--- a/src/test/ui/issues/issue-17546.stderr
+++ b/src/test/ui/issues/issue-17546.stderr
@@ -30,11 +30,10 @@ LL |     use std::fmt::Result;
    |
 LL |     use std::io::Result;
    |
-LL |     use std::prelude::v1::Result;
-   |
 LL |     use std::result::Result;
    |
-     and 1 other candidate
+LL |     use std::thread::Result;
+   |
 
 error[E0573]: expected type, found variant `Result`
   --> $DIR/issue-17546.rs:30:13
@@ -48,11 +47,10 @@ LL | use std::fmt::Result;
    |
 LL | use std::io::Result;
    |
-LL | use std::prelude::v1::Result;
-   |
 LL | use std::result::Result;
    |
-     and 1 other candidate
+LL | use std::thread::Result;
+   |
 
 error[E0573]: expected type, found variant `NoResult`
   --> $DIR/issue-17546.rs:35:15
diff --git a/src/test/ui/issues/issue-20605.stderr b/src/test/ui/issues/issue-20605.stderr
index 89df58dd2dc..5e050f27ac5 100644
--- a/src/test/ui/issues/issue-20605.stderr
+++ b/src/test/ui/issues/issue-20605.stderr
@@ -1,10 +1,10 @@
-error[E0277]: the size for values of type `dyn std::iter::Iterator<Item = &mut u8>` cannot be known at compilation time
+error[E0277]: the size for values of type `dyn std::iter::Iterator<Item = &'a mut u8>` cannot be known at compilation time
   --> $DIR/issue-20605.rs:2:17
    |
 LL |     for item in *things { *item = 0 }
    |                 ^^^^^^^ doesn't have a size known at compile-time
    |
-   = help: the trait `std::marker::Sized` is not implemented for `dyn std::iter::Iterator<Item = &mut u8>`
+   = help: the trait `std::marker::Sized` is not implemented for `dyn std::iter::Iterator<Item = &'a mut u8>`
    = note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
    = note: required by `std::iter::IntoIterator::into_iter`
 
diff --git a/src/test/ui/issues/issue-2718-a.stderr b/src/test/ui/issues/issue-2718-a.stderr
index 0f52c791928..d152ffde4e5 100644
--- a/src/test/ui/issues/issue-2718-a.stderr
+++ b/src/test/ui/issues/issue-2718-a.stderr
@@ -7,7 +7,10 @@ LL |     pub struct Pong(SendPacket<Ping>);
    |     |               recursive without indirection
    |     recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `pingpong::Pong` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `pingpong::Pong` representable
+   |
+LL |     pub struct Pong(Box<SendPacket<Ping>>);
+   |                     ^^^^                ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-3008-1.stderr b/src/test/ui/issues/issue-3008-1.stderr
index f12274134ee..87ee36df216 100644
--- a/src/test/ui/issues/issue-3008-1.stderr
+++ b/src/test/ui/issues/issue-3008-1.stderr
@@ -7,7 +7,10 @@ LL | enum Bar {
 LL |     BarSome(Bar)
    |             --- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
+   |
+LL |     BarSome(Box<Bar>)
+   |             ^^^^   ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-3008-2.stderr b/src/test/ui/issues/issue-3008-2.stderr
index acc15f4b57c..369a19d37e6 100644
--- a/src/test/ui/issues/issue-3008-2.stderr
+++ b/src/test/ui/issues/issue-3008-2.stderr
@@ -2,11 +2,14 @@ error[E0072]: recursive type `Bar` has infinite size
   --> $DIR/issue-3008-2.rs:2:1
    |
 LL | struct Bar { x: Bar }
-   | ^^^^^^^^^^   ------ recursive without indirection
+   | ^^^^^^^^^^      --- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
+   |
+LL | struct Bar { x: Box<Bar> }
+   |                 ^^^^   ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-3008-3.stderr b/src/test/ui/issues/issue-3008-3.stderr
index d08a3d9708d..0b162eff94a 100644
--- a/src/test/ui/issues/issue-3008-3.stderr
+++ b/src/test/ui/issues/issue-3008-3.stderr
@@ -6,7 +6,10 @@ LL | enum E2<T> { V2(E2<E1>, marker::PhantomData<T>), }
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `E2` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `E2` representable
+   |
+LL | enum E2<T> { V2(Box<E2<E1>>, marker::PhantomData<T>), }
+   |                 ^^^^      ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-31910.stderr b/src/test/ui/issues/issue-31910.stderr
index c5c988cdaa7..2603c944207 100644
--- a/src/test/ui/issues/issue-31910.stderr
+++ b/src/test/ui/issues/issue-31910.stderr
@@ -3,11 +3,6 @@ error[E0308]: mismatched types
    |
 LL |     X = Trait::Number,
    |         ^^^^^^^^^^^^^ expected `isize`, found `i32`
-   |
-help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit
-   |
-LL |     X = Trait::Number.try_into().unwrap(),
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-32326.stderr b/src/test/ui/issues/issue-32326.stderr
index 5967627e51a..0f3d3690b73 100644
--- a/src/test/ui/issues/issue-32326.stderr
+++ b/src/test/ui/issues/issue-32326.stderr
@@ -8,7 +8,10 @@ LL |     Plus(Expr, Expr),
    |          |
    |          recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Expr` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Expr` representable
+   |
+LL |     Plus(Box<Expr>, Box<Expr>),
+   |          ^^^^    ^  ^^^^    ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-3779.stderr b/src/test/ui/issues/issue-3779.stderr
index ba1e842c610..7b17e914216 100644
--- a/src/test/ui/issues/issue-3779.stderr
+++ b/src/test/ui/issues/issue-3779.stderr
@@ -5,9 +5,12 @@ LL | struct S {
    | ^^^^^^^^ recursive type has infinite size
 LL |
 LL |     element: Option<S>
-   |     ------------------ recursive without indirection
+   |              --------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `S` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `S` representable
+   |
+LL |     element: Box<Option<S>>
+   |              ^^^^         ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-44216-add-instant.rs b/src/test/ui/issues/issue-44216-add-instant.rs
index c2f3598f645..78cfecf2f32 100644
--- a/src/test/ui/issues/issue-44216-add-instant.rs
+++ b/src/test/ui/issues/issue-44216-add-instant.rs
@@ -6,5 +6,5 @@ use std::time::{Instant, Duration};
 
 fn main() {
     let now = Instant::now();
-    let _ = now + Duration::from_secs(u64::max_value());
+    let _ = now + Duration::from_secs(u64::MAX);
 }
diff --git a/src/test/ui/issues/issue-44216-add-system-time.rs b/src/test/ui/issues/issue-44216-add-system-time.rs
index 9a88cb7c189..7e9a3f802ec 100644
--- a/src/test/ui/issues/issue-44216-add-system-time.rs
+++ b/src/test/ui/issues/issue-44216-add-system-time.rs
@@ -6,5 +6,5 @@ use std::time::{Duration, SystemTime};
 
 fn main() {
     let now = SystemTime::now();
-    let _ = now + Duration::from_secs(u64::max_value());
+    let _ = now + Duration::from_secs(u64::MAX);
 }
diff --git a/src/test/ui/issues/issue-44216-sub-instant.rs b/src/test/ui/issues/issue-44216-sub-instant.rs
index 2decd88bbc0..e40f80d449d 100644
--- a/src/test/ui/issues/issue-44216-sub-instant.rs
+++ b/src/test/ui/issues/issue-44216-sub-instant.rs
@@ -6,5 +6,5 @@ use std::time::{Instant, Duration};
 
 fn main() {
     let now = Instant::now();
-    let _ = now - Duration::from_secs(u64::max_value());
+    let _ = now - Duration::from_secs(u64::MAX);
 }
diff --git a/src/test/ui/issues/issue-44216-sub-system-time.rs b/src/test/ui/issues/issue-44216-sub-system-time.rs
index e58a31a41a5..2c5a000fab6 100644
--- a/src/test/ui/issues/issue-44216-sub-system-time.rs
+++ b/src/test/ui/issues/issue-44216-sub-system-time.rs
@@ -6,5 +6,5 @@ use std::time::{Duration, SystemTime};
 
 fn main() {
     let now = SystemTime::now();
-    let _ = now - Duration::from_secs(u64::max_value());
+    let _ = now - Duration::from_secs(u64::MAX);
 }
diff --git a/src/test/ui/issues/issue-57271.stderr b/src/test/ui/issues/issue-57271.stderr
index 4f164624f7a..b7c799e163c 100644
--- a/src/test/ui/issues/issue-57271.stderr
+++ b/src/test/ui/issues/issue-57271.stderr
@@ -7,7 +7,10 @@ LL |     Class(ClassTypeSignature),
 LL |     Array(TypeSignature),
    |           ------------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ObjectType` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ObjectType` representable
+   |
+LL |     Array(Box<TypeSignature>),
+   |           ^^^^             ^
 
 error[E0072]: recursive type `TypeSignature` has infinite size
   --> $DIR/issue-57271.rs:19:1
@@ -18,7 +21,10 @@ LL |     Base(BaseType),
 LL |     Object(ObjectType),
    |            ---------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `TypeSignature` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `TypeSignature` representable
+   |
+LL |     Object(Box<ObjectType>),
+   |            ^^^^          ^
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/issues/issue-60662.stdout b/src/test/ui/issues/issue-60662.stdout
index 5a4b49cfa1e..cebe834824a 100644
--- a/src/test/ui/issues/issue-60662.stdout
+++ b/src/test/ui/issues/issue-60662.stdout
@@ -10,5 +10,5 @@ extern crate std;
 trait Animal { }
 
 fn main() {
-              pub type ServeFut = impl Animal;
+              pub type ServeFut = /*impl Trait*/;
           }
diff --git a/src/test/ui/issues/issue-72554.stderr b/src/test/ui/issues/issue-72554.stderr
index 9db65f4a2ee..9de94c393a7 100644
--- a/src/test/ui/issues/issue-72554.stderr
+++ b/src/test/ui/issues/issue-72554.stderr
@@ -6,7 +6,10 @@ LL | pub enum ElemDerived {
 LL |     A(ElemDerived)
    |       ----------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ElemDerived` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ElemDerived` representable
+   |
+LL |     A(Box<ElemDerived>)
+   |       ^^^^           ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-72839-error-overflow.rs b/src/test/ui/issues/issue-72839-error-overflow.rs
new file mode 100644
index 00000000000..6562d228409
--- /dev/null
+++ b/src/test/ui/issues/issue-72839-error-overflow.rs
@@ -0,0 +1,19 @@
+// Regression test for issue #72839
+// Tests that we do not overflow during trait selection after
+// a type error occurs
+use std::ops::Rem;
+trait Foo {}
+struct MyStruct<T>(T);
+
+impl<T, U> Rem<MyStruct<T>> for MyStruct<U> where MyStruct<U>: Rem<MyStruct<T>> {
+    type Output = u8;
+    fn rem(self, _: MyStruct<T>) -> Self::Output {
+        panic!()
+    }
+}
+
+fn main() {}
+
+fn foo() {
+    if missing_var % 8 == 0 {} //~ ERROR cannot find
+}
diff --git a/src/test/ui/issues/issue-72839-error-overflow.stderr b/src/test/ui/issues/issue-72839-error-overflow.stderr
new file mode 100644
index 00000000000..c4b6f90ca69
--- /dev/null
+++ b/src/test/ui/issues/issue-72839-error-overflow.stderr
@@ -0,0 +1,9 @@
+error[E0425]: cannot find value `missing_var` in this scope
+  --> $DIR/issue-72839-error-overflow.rs:18:8
+   |
+LL |     if missing_var % 8 == 0 {}
+   |        ^^^^^^^^^^^ not found in this scope
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/ui/issues/issue-72933-match-stack-overflow.rs b/src/test/ui/issues/issue-72933-match-stack-overflow.rs
new file mode 100644
index 00000000000..aa796bcf5a0
--- /dev/null
+++ b/src/test/ui/issues/issue-72933-match-stack-overflow.rs
@@ -0,0 +1,5208 @@
+// build-pass
+// ignore-tidy-filelength
+#![crate_type="rlib"]
+
+fn banana(v: &str) -> u32 {
+    match v {
+        "0" => 0,
+        "1" => 1,
+        "2" => 2,
+        "3" => 3,
+        "4" => 4,
+        "5" => 5,
+        "6" => 6,
+        "7" => 7,
+        "8" => 8,
+        "9" => 9,
+        "10" => 10,
+        "11" => 11,
+        "12" => 12,
+        "13" => 13,
+        "14" => 14,
+        "15" => 15,
+        "16" => 16,
+        "17" => 17,
+        "18" => 18,
+        "19" => 19,
+        "20" => 20,
+        "21" => 21,
+        "22" => 22,
+        "23" => 23,
+        "24" => 24,
+        "25" => 25,
+        "26" => 26,
+        "27" => 27,
+        "28" => 28,
+        "29" => 29,
+        "30" => 30,
+        "31" => 31,
+        "32" => 32,
+        "33" => 33,
+        "34" => 34,
+        "35" => 35,
+        "36" => 36,
+        "37" => 37,
+        "38" => 38,
+        "39" => 39,
+        "40" => 40,
+        "41" => 41,
+        "42" => 42,
+        "43" => 43,
+        "44" => 44,
+        "45" => 45,
+        "46" => 46,
+        "47" => 47,
+        "48" => 48,
+        "49" => 49,
+        "50" => 50,
+        "51" => 51,
+        "52" => 52,
+        "53" => 53,
+        "54" => 54,
+        "55" => 55,
+        "56" => 56,
+        "57" => 57,
+        "58" => 58,
+        "59" => 59,
+        "60" => 60,
+        "61" => 61,
+        "62" => 62,
+        "63" => 63,
+        "64" => 64,
+        "65" => 65,
+        "66" => 66,
+        "67" => 67,
+        "68" => 68,
+        "69" => 69,
+        "70" => 70,
+        "71" => 71,
+        "72" => 72,
+        "73" => 73,
+        "74" => 74,
+        "75" => 75,
+        "76" => 76,
+        "77" => 77,
+        "78" => 78,
+        "79" => 79,
+        "80" => 80,
+        "81" => 81,
+        "82" => 82,
+        "83" => 83,
+        "84" => 84,
+        "85" => 85,
+        "86" => 86,
+        "87" => 87,
+        "88" => 88,
+        "89" => 89,
+        "90" => 90,
+        "91" => 91,
+        "92" => 92,
+        "93" => 93,
+        "94" => 94,
+        "95" => 95,
+        "96" => 96,
+        "97" => 97,
+        "98" => 98,
+        "99" => 99,
+        "100" => 100,
+        "101" => 101,
+        "102" => 102,
+        "103" => 103,
+        "104" => 104,
+        "105" => 105,
+        "106" => 106,
+        "107" => 107,
+        "108" => 108,
+        "109" => 109,
+        "110" => 110,
+        "111" => 111,
+        "112" => 112,
+        "113" => 113,
+        "114" => 114,
+        "115" => 115,
+        "116" => 116,
+        "117" => 117,
+        "118" => 118,
+        "119" => 119,
+        "120" => 120,
+        "121" => 121,
+        "122" => 122,
+        "123" => 123,
+        "124" => 124,
+        "125" => 125,
+        "126" => 126,
+        "127" => 127,
+        "128" => 128,
+        "129" => 129,
+        "130" => 130,
+        "131" => 131,
+        "132" => 132,
+        "133" => 133,
+        "134" => 134,
+        "135" => 135,
+        "136" => 136,
+        "137" => 137,
+        "138" => 138,
+        "139" => 139,
+        "140" => 140,
+        "141" => 141,
+        "142" => 142,
+        "143" => 143,
+        "144" => 144,
+        "145" => 145,
+        "146" => 146,
+        "147" => 147,
+        "148" => 148,
+        "149" => 149,
+        "150" => 150,
+        "151" => 151,
+        "152" => 152,
+        "153" => 153,
+        "154" => 154,
+        "155" => 155,
+        "156" => 156,
+        "157" => 157,
+        "158" => 158,
+        "159" => 159,
+        "160" => 160,
+        "161" => 161,
+        "162" => 162,
+        "163" => 163,
+        "164" => 164,
+        "165" => 165,
+        "166" => 166,
+        "167" => 167,
+        "168" => 168,
+        "169" => 169,
+        "170" => 170,
+        "171" => 171,
+        "172" => 172,
+        "173" => 173,
+        "174" => 174,
+        "175" => 175,
+        "176" => 176,
+        "177" => 177,
+        "178" => 178,
+        "179" => 179,
+        "180" => 180,
+        "181" => 181,
+        "182" => 182,
+        "183" => 183,
+        "184" => 184,
+        "185" => 185,
+        "186" => 186,
+        "187" => 187,
+        "188" => 188,
+        "189" => 189,
+        "190" => 190,
+        "191" => 191,
+        "192" => 192,
+        "193" => 193,
+        "194" => 194,
+        "195" => 195,
+        "196" => 196,
+        "197" => 197,
+        "198" => 198,
+        "199" => 199,
+        "200" => 200,
+        "201" => 201,
+        "202" => 202,
+        "203" => 203,
+        "204" => 204,
+        "205" => 205,
+        "206" => 206,
+        "207" => 207,
+        "208" => 208,
+        "209" => 209,
+        "210" => 210,
+        "211" => 211,
+        "212" => 212,
+        "213" => 213,
+        "214" => 214,
+        "215" => 215,
+        "216" => 216,
+        "217" => 217,
+        "218" => 218,
+        "219" => 219,
+        "220" => 220,
+        "221" => 221,
+        "222" => 222,
+        "223" => 223,
+        "224" => 224,
+        "225" => 225,
+        "226" => 226,
+        "227" => 227,
+        "228" => 228,
+        "229" => 229,
+        "230" => 230,
+        "231" => 231,
+        "232" => 232,
+        "233" => 233,
+        "234" => 234,
+        "235" => 235,
+        "236" => 236,
+        "237" => 237,
+        "238" => 238,
+        "239" => 239,
+        "240" => 240,
+        "241" => 241,
+        "242" => 242,
+        "243" => 243,
+        "244" => 244,
+        "245" => 245,
+        "246" => 246,
+        "247" => 247,
+        "248" => 248,
+        "249" => 249,
+        "250" => 250,
+        "251" => 251,
+        "252" => 252,
+        "253" => 253,
+        "254" => 254,
+        "255" => 255,
+        "256" => 256,
+        "257" => 257,
+        "258" => 258,
+        "259" => 259,
+        "260" => 260,
+        "261" => 261,
+        "262" => 262,
+        "263" => 263,
+        "264" => 264,
+        "265" => 265,
+        "266" => 266,
+        "267" => 267,
+        "268" => 268,
+        "269" => 269,
+        "270" => 270,
+        "271" => 271,
+        "272" => 272,
+        "273" => 273,
+        "274" => 274,
+        "275" => 275,
+        "276" => 276,
+        "277" => 277,
+        "278" => 278,
+        "279" => 279,
+        "280" => 280,
+        "281" => 281,
+        "282" => 282,
+        "283" => 283,
+        "284" => 284,
+        "285" => 285,
+        "286" => 286,
+        "287" => 287,
+        "288" => 288,
+        "289" => 289,
+        "290" => 290,
+        "291" => 291,
+        "292" => 292,
+        "293" => 293,
+        "294" => 294,
+        "295" => 295,
+        "296" => 296,
+        "297" => 297,
+        "298" => 298,
+        "299" => 299,
+        "300" => 300,
+        "301" => 301,
+        "302" => 302,
+        "303" => 303,
+        "304" => 304,
+        "305" => 305,
+        "306" => 306,
+        "307" => 307,
+        "308" => 308,
+        "309" => 309,
+        "310" => 310,
+        "311" => 311,
+        "312" => 312,
+        "313" => 313,
+        "314" => 314,
+        "315" => 315,
+        "316" => 316,
+        "317" => 317,
+        "318" => 318,
+        "319" => 319,
+        "320" => 320,
+        "321" => 321,
+        "322" => 322,
+        "323" => 323,
+        "324" => 324,
+        "325" => 325,
+        "326" => 326,
+        "327" => 327,
+        "328" => 328,
+        "329" => 329,
+        "330" => 330,
+        "331" => 331,
+        "332" => 332,
+        "333" => 333,
+        "334" => 334,
+        "335" => 335,
+        "336" => 336,
+        "337" => 337,
+        "338" => 338,
+        "339" => 339,
+        "340" => 340,
+        "341" => 341,
+        "342" => 342,
+        "343" => 343,
+        "344" => 344,
+        "345" => 345,
+        "346" => 346,
+        "347" => 347,
+        "348" => 348,
+        "349" => 349,
+        "350" => 350,
+        "351" => 351,
+        "352" => 352,
+        "353" => 353,
+        "354" => 354,
+        "355" => 355,
+        "356" => 356,
+        "357" => 357,
+        "358" => 358,
+        "359" => 359,
+        "360" => 360,
+        "361" => 361,
+        "362" => 362,
+        "363" => 363,
+        "364" => 364,
+        "365" => 365,
+        "366" => 366,
+        "367" => 367,
+        "368" => 368,
+        "369" => 369,
+        "370" => 370,
+        "371" => 371,
+        "372" => 372,
+        "373" => 373,
+        "374" => 374,
+        "375" => 375,
+        "376" => 376,
+        "377" => 377,
+        "378" => 378,
+        "379" => 379,
+        "380" => 380,
+        "381" => 381,
+        "382" => 382,
+        "383" => 383,
+        "384" => 384,
+        "385" => 385,
+        "386" => 386,
+        "387" => 387,
+        "388" => 388,
+        "389" => 389,
+        "390" => 390,
+        "391" => 391,
+        "392" => 392,
+        "393" => 393,
+        "394" => 394,
+        "395" => 395,
+        "396" => 396,
+        "397" => 397,
+        "398" => 398,
+        "399" => 399,
+        "400" => 400,
+        "401" => 401,
+        "402" => 402,
+        "403" => 403,
+        "404" => 404,
+        "405" => 405,
+        "406" => 406,
+        "407" => 407,
+        "408" => 408,
+        "409" => 409,
+        "410" => 410,
+        "411" => 411,
+        "412" => 412,
+        "413" => 413,
+        "414" => 414,
+        "415" => 415,
+        "416" => 416,
+        "417" => 417,
+        "418" => 418,
+        "419" => 419,
+        "420" => 420,
+        "421" => 421,
+        "422" => 422,
+        "423" => 423,
+        "424" => 424,
+        "425" => 425,
+        "426" => 426,
+        "427" => 427,
+        "428" => 428,
+        "429" => 429,
+        "430" => 430,
+        "431" => 431,
+        "432" => 432,
+        "433" => 433,
+        "434" => 434,
+        "435" => 435,
+        "436" => 436,
+        "437" => 437,
+        "438" => 438,
+        "439" => 439,
+        "440" => 440,
+        "441" => 441,
+        "442" => 442,
+        "443" => 443,
+        "444" => 444,
+        "445" => 445,
+        "446" => 446,
+        "447" => 447,
+        "448" => 448,
+        "449" => 449,
+        "450" => 450,
+        "451" => 451,
+        "452" => 452,
+        "453" => 453,
+        "454" => 454,
+        "455" => 455,
+        "456" => 456,
+        "457" => 457,
+        "458" => 458,
+        "459" => 459,
+        "460" => 460,
+        "461" => 461,
+        "462" => 462,
+        "463" => 463,
+        "464" => 464,
+        "465" => 465,
+        "466" => 466,
+        "467" => 467,
+        "468" => 468,
+        "469" => 469,
+        "470" => 470,
+        "471" => 471,
+        "472" => 472,
+        "473" => 473,
+        "474" => 474,
+        "475" => 475,
+        "476" => 476,
+        "477" => 477,
+        "478" => 478,
+        "479" => 479,
+        "480" => 480,
+        "481" => 481,
+        "482" => 482,
+        "483" => 483,
+        "484" => 484,
+        "485" => 485,
+        "486" => 486,
+        "487" => 487,
+        "488" => 488,
+        "489" => 489,
+        "490" => 490,
+        "491" => 491,
+        "492" => 492,
+        "493" => 493,
+        "494" => 494,
+        "495" => 495,
+        "496" => 496,
+        "497" => 497,
+        "498" => 498,
+        "499" => 499,
+        "500" => 500,
+        "501" => 501,
+        "502" => 502,
+        "503" => 503,
+        "504" => 504,
+        "505" => 505,
+        "506" => 506,
+        "507" => 507,
+        "508" => 508,
+        "509" => 509,
+        "510" => 510,
+        "511" => 511,
+        "512" => 512,
+        "513" => 513,
+        "514" => 514,
+        "515" => 515,
+        "516" => 516,
+        "517" => 517,
+        "518" => 518,
+        "519" => 519,
+        "520" => 520,
+        "521" => 521,
+        "522" => 522,
+        "523" => 523,
+        "524" => 524,
+        "525" => 525,
+        "526" => 526,
+        "527" => 527,
+        "528" => 528,
+        "529" => 529,
+        "530" => 530,
+        "531" => 531,
+        "532" => 532,
+        "533" => 533,
+        "534" => 534,
+        "535" => 535,
+        "536" => 536,
+        "537" => 537,
+        "538" => 538,
+        "539" => 539,
+        "540" => 540,
+        "541" => 541,
+        "542" => 542,
+        "543" => 543,
+        "544" => 544,
+        "545" => 545,
+        "546" => 546,
+        "547" => 547,
+        "548" => 548,
+        "549" => 549,
+        "550" => 550,
+        "551" => 551,
+        "552" => 552,
+        "553" => 553,
+        "554" => 554,
+        "555" => 555,
+        "556" => 556,
+        "557" => 557,
+        "558" => 558,
+        "559" => 559,
+        "560" => 560,
+        "561" => 561,
+        "562" => 562,
+        "563" => 563,
+        "564" => 564,
+        "565" => 565,
+        "566" => 566,
+        "567" => 567,
+        "568" => 568,
+        "569" => 569,
+        "570" => 570,
+        "571" => 571,
+        "572" => 572,
+        "573" => 573,
+        "574" => 574,
+        "575" => 575,
+        "576" => 576,
+        "577" => 577,
+        "578" => 578,
+        "579" => 579,
+        "580" => 580,
+        "581" => 581,
+        "582" => 582,
+        "583" => 583,
+        "584" => 584,
+        "585" => 585,
+        "586" => 586,
+        "587" => 587,
+        "588" => 588,
+        "589" => 589,
+        "590" => 590,
+        "591" => 591,
+        "592" => 592,
+        "593" => 593,
+        "594" => 594,
+        "595" => 595,
+        "596" => 596,
+        "597" => 597,
+        "598" => 598,
+        "599" => 599,
+        "600" => 600,
+        "601" => 601,
+        "602" => 602,
+        "603" => 603,
+        "604" => 604,
+        "605" => 605,
+        "606" => 606,
+        "607" => 607,
+        "608" => 608,
+        "609" => 609,
+        "610" => 610,
+        "611" => 611,
+        "612" => 612,
+        "613" => 613,
+        "614" => 614,
+        "615" => 615,
+        "616" => 616,
+        "617" => 617,
+        "618" => 618,
+        "619" => 619,
+        "620" => 620,
+        "621" => 621,
+        "622" => 622,
+        "623" => 623,
+        "624" => 624,
+        "625" => 625,
+        "626" => 626,
+        "627" => 627,
+        "628" => 628,
+        "629" => 629,
+        "630" => 630,
+        "631" => 631,
+        "632" => 632,
+        "633" => 633,
+        "634" => 634,
+        "635" => 635,
+        "636" => 636,
+        "637" => 637,
+        "638" => 638,
+        "639" => 639,
+        "640" => 640,
+        "641" => 641,
+        "642" => 642,
+        "643" => 643,
+        "644" => 644,
+        "645" => 645,
+        "646" => 646,
+        "647" => 647,
+        "648" => 648,
+        "649" => 649,
+        "650" => 650,
+        "651" => 651,
+        "652" => 652,
+        "653" => 653,
+        "654" => 654,
+        "655" => 655,
+        "656" => 656,
+        "657" => 657,
+        "658" => 658,
+        "659" => 659,
+        "660" => 660,
+        "661" => 661,
+        "662" => 662,
+        "663" => 663,
+        "664" => 664,
+        "665" => 665,
+        "666" => 666,
+        "667" => 667,
+        "668" => 668,
+        "669" => 669,
+        "670" => 670,
+        "671" => 671,
+        "672" => 672,
+        "673" => 673,
+        "674" => 674,
+        "675" => 675,
+        "676" => 676,
+        "677" => 677,
+        "678" => 678,
+        "679" => 679,
+        "680" => 680,
+        "681" => 681,
+        "682" => 682,
+        "683" => 683,
+        "684" => 684,
+        "685" => 685,
+        "686" => 686,
+        "687" => 687,
+        "688" => 688,
+        "689" => 689,
+        "690" => 690,
+        "691" => 691,
+        "692" => 692,
+        "693" => 693,
+        "694" => 694,
+        "695" => 695,
+        "696" => 696,
+        "697" => 697,
+        "698" => 698,
+        "699" => 699,
+        "700" => 700,
+        "701" => 701,
+        "702" => 702,
+        "703" => 703,
+        "704" => 704,
+        "705" => 705,
+        "706" => 706,
+        "707" => 707,
+        "708" => 708,
+        "709" => 709,
+        "710" => 710,
+        "711" => 711,
+        "712" => 712,
+        "713" => 713,
+        "714" => 714,
+        "715" => 715,
+        "716" => 716,
+        "717" => 717,
+        "718" => 718,
+        "719" => 719,
+        "720" => 720,
+        "721" => 721,
+        "722" => 722,
+        "723" => 723,
+        "724" => 724,
+        "725" => 725,
+        "726" => 726,
+        "727" => 727,
+        "728" => 728,
+        "729" => 729,
+        "730" => 730,
+        "731" => 731,
+        "732" => 732,
+        "733" => 733,
+        "734" => 734,
+        "735" => 735,
+        "736" => 736,
+        "737" => 737,
+        "738" => 738,
+        "739" => 739,
+        "740" => 740,
+        "741" => 741,
+        "742" => 742,
+        "743" => 743,
+        "744" => 744,
+        "745" => 745,
+        "746" => 746,
+        "747" => 747,
+        "748" => 748,
+        "749" => 749,
+        "750" => 750,
+        "751" => 751,
+        "752" => 752,
+        "753" => 753,
+        "754" => 754,
+        "755" => 755,
+        "756" => 756,
+        "757" => 757,
+        "758" => 758,
+        "759" => 759,
+        "760" => 760,
+        "761" => 761,
+        "762" => 762,
+        "763" => 763,
+        "764" => 764,
+        "765" => 765,
+        "766" => 766,
+        "767" => 767,
+        "768" => 768,
+        "769" => 769,
+        "770" => 770,
+        "771" => 771,
+        "772" => 772,
+        "773" => 773,
+        "774" => 774,
+        "775" => 775,
+        "776" => 776,
+        "777" => 777,
+        "778" => 778,
+        "779" => 779,
+        "780" => 780,
+        "781" => 781,
+        "782" => 782,
+        "783" => 783,
+        "784" => 784,
+        "785" => 785,
+        "786" => 786,
+        "787" => 787,
+        "788" => 788,
+        "789" => 789,
+        "790" => 790,
+        "791" => 791,
+        "792" => 792,
+        "793" => 793,
+        "794" => 794,
+        "795" => 795,
+        "796" => 796,
+        "797" => 797,
+        "798" => 798,
+        "799" => 799,
+        "800" => 800,
+        "801" => 801,
+        "802" => 802,
+        "803" => 803,
+        "804" => 804,
+        "805" => 805,
+        "806" => 806,
+        "807" => 807,
+        "808" => 808,
+        "809" => 809,
+        "810" => 810,
+        "811" => 811,
+        "812" => 812,
+        "813" => 813,
+        "814" => 814,
+        "815" => 815,
+        "816" => 816,
+        "817" => 817,
+        "818" => 818,
+        "819" => 819,
+        "820" => 820,
+        "821" => 821,
+        "822" => 822,
+        "823" => 823,
+        "824" => 824,
+        "825" => 825,
+        "826" => 826,
+        "827" => 827,
+        "828" => 828,
+        "829" => 829,
+        "830" => 830,
+        "831" => 831,
+        "832" => 832,
+        "833" => 833,
+        "834" => 834,
+        "835" => 835,
+        "836" => 836,
+        "837" => 837,
+        "838" => 838,
+        "839" => 839,
+        "840" => 840,
+        "841" => 841,
+        "842" => 842,
+        "843" => 843,
+        "844" => 844,
+        "845" => 845,
+        "846" => 846,
+        "847" => 847,
+        "848" => 848,
+        "849" => 849,
+        "850" => 850,
+        "851" => 851,
+        "852" => 852,
+        "853" => 853,
+        "854" => 854,
+        "855" => 855,
+        "856" => 856,
+        "857" => 857,
+        "858" => 858,
+        "859" => 859,
+        "860" => 860,
+        "861" => 861,
+        "862" => 862,
+        "863" => 863,
+        "864" => 864,
+        "865" => 865,
+        "866" => 866,
+        "867" => 867,
+        "868" => 868,
+        "869" => 869,
+        "870" => 870,
+        "871" => 871,
+        "872" => 872,
+        "873" => 873,
+        "874" => 874,
+        "875" => 875,
+        "876" => 876,
+        "877" => 877,
+        "878" => 878,
+        "879" => 879,
+        "880" => 880,
+        "881" => 881,
+        "882" => 882,
+        "883" => 883,
+        "884" => 884,
+        "885" => 885,
+        "886" => 886,
+        "887" => 887,
+        "888" => 888,
+        "889" => 889,
+        "890" => 890,
+        "891" => 891,
+        "892" => 892,
+        "893" => 893,
+        "894" => 894,
+        "895" => 895,
+        "896" => 896,
+        "897" => 897,
+        "898" => 898,
+        "899" => 899,
+        "900" => 900,
+        "901" => 901,
+        "902" => 902,
+        "903" => 903,
+        "904" => 904,
+        "905" => 905,
+        "906" => 906,
+        "907" => 907,
+        "908" => 908,
+        "909" => 909,
+        "910" => 910,
+        "911" => 911,
+        "912" => 912,
+        "913" => 913,
+        "914" => 914,
+        "915" => 915,
+        "916" => 916,
+        "917" => 917,
+        "918" => 918,
+        "919" => 919,
+        "920" => 920,
+        "921" => 921,
+        "922" => 922,
+        "923" => 923,
+        "924" => 924,
+        "925" => 925,
+        "926" => 926,
+        "927" => 927,
+        "928" => 928,
+        "929" => 929,
+        "930" => 930,
+        "931" => 931,
+        "932" => 932,
+        "933" => 933,
+        "934" => 934,
+        "935" => 935,
+        "936" => 936,
+        "937" => 937,
+        "938" => 938,
+        "939" => 939,
+        "940" => 940,
+        "941" => 941,
+        "942" => 942,
+        "943" => 943,
+        "944" => 944,
+        "945" => 945,
+        "946" => 946,
+        "947" => 947,
+        "948" => 948,
+        "949" => 949,
+        "950" => 950,
+        "951" => 951,
+        "952" => 952,
+        "953" => 953,
+        "954" => 954,
+        "955" => 955,
+        "956" => 956,
+        "957" => 957,
+        "958" => 958,
+        "959" => 959,
+        "960" => 960,
+        "961" => 961,
+        "962" => 962,
+        "963" => 963,
+        "964" => 964,
+        "965" => 965,
+        "966" => 966,
+        "967" => 967,
+        "968" => 968,
+        "969" => 969,
+        "970" => 970,
+        "971" => 971,
+        "972" => 972,
+        "973" => 973,
+        "974" => 974,
+        "975" => 975,
+        "976" => 976,
+        "977" => 977,
+        "978" => 978,
+        "979" => 979,
+        "980" => 980,
+        "981" => 981,
+        "982" => 982,
+        "983" => 983,
+        "984" => 984,
+        "985" => 985,
+        "986" => 986,
+        "987" => 987,
+        "988" => 988,
+        "989" => 989,
+        "990" => 990,
+        "991" => 991,
+        "992" => 992,
+        "993" => 993,
+        "994" => 994,
+        "995" => 995,
+        "996" => 996,
+        "997" => 997,
+        "998" => 998,
+        "999" => 999,
+        "1000" => 1000,
+        "1001" => 1001,
+        "1002" => 1002,
+        "1003" => 1003,
+        "1004" => 1004,
+        "1005" => 1005,
+        "1006" => 1006,
+        "1007" => 1007,
+        "1008" => 1008,
+        "1009" => 1009,
+        "1010" => 1010,
+        "1011" => 1011,
+        "1012" => 1012,
+        "1013" => 1013,
+        "1014" => 1014,
+        "1015" => 1015,
+        "1016" => 1016,
+        "1017" => 1017,
+        "1018" => 1018,
+        "1019" => 1019,
+        "1020" => 1020,
+        "1021" => 1021,
+        "1022" => 1022,
+        "1023" => 1023,
+        "1024" => 1024,
+        "1025" => 1025,
+        "1026" => 1026,
+        "1027" => 1027,
+        "1028" => 1028,
+        "1029" => 1029,
+        "1030" => 1030,
+        "1031" => 1031,
+        "1032" => 1032,
+        "1033" => 1033,
+        "1034" => 1034,
+        "1035" => 1035,
+        "1036" => 1036,
+        "1037" => 1037,
+        "1038" => 1038,
+        "1039" => 1039,
+        "1040" => 1040,
+        "1041" => 1041,
+        "1042" => 1042,
+        "1043" => 1043,
+        "1044" => 1044,
+        "1045" => 1045,
+        "1046" => 1046,
+        "1047" => 1047,
+        "1048" => 1048,
+        "1049" => 1049,
+        "1050" => 1050,
+        "1051" => 1051,
+        "1052" => 1052,
+        "1053" => 1053,
+        "1054" => 1054,
+        "1055" => 1055,
+        "1056" => 1056,
+        "1057" => 1057,
+        "1058" => 1058,
+        "1059" => 1059,
+        "1060" => 1060,
+        "1061" => 1061,
+        "1062" => 1062,
+        "1063" => 1063,
+        "1064" => 1064,
+        "1065" => 1065,
+        "1066" => 1066,
+        "1067" => 1067,
+        "1068" => 1068,
+        "1069" => 1069,
+        "1070" => 1070,
+        "1071" => 1071,
+        "1072" => 1072,
+        "1073" => 1073,
+        "1074" => 1074,
+        "1075" => 1075,
+        "1076" => 1076,
+        "1077" => 1077,
+        "1078" => 1078,
+        "1079" => 1079,
+        "1080" => 1080,
+        "1081" => 1081,
+        "1082" => 1082,
+        "1083" => 1083,
+        "1084" => 1084,
+        "1085" => 1085,
+        "1086" => 1086,
+        "1087" => 1087,
+        "1088" => 1088,
+        "1089" => 1089,
+        "1090" => 1090,
+        "1091" => 1091,
+        "1092" => 1092,
+        "1093" => 1093,
+        "1094" => 1094,
+        "1095" => 1095,
+        "1096" => 1096,
+        "1097" => 1097,
+        "1098" => 1098,
+        "1099" => 1099,
+        "1100" => 1100,
+        "1101" => 1101,
+        "1102" => 1102,
+        "1103" => 1103,
+        "1104" => 1104,
+        "1105" => 1105,
+        "1106" => 1106,
+        "1107" => 1107,
+        "1108" => 1108,
+        "1109" => 1109,
+        "1110" => 1110,
+        "1111" => 1111,
+        "1112" => 1112,
+        "1113" => 1113,
+        "1114" => 1114,
+        "1115" => 1115,
+        "1116" => 1116,
+        "1117" => 1117,
+        "1118" => 1118,
+        "1119" => 1119,
+        "1120" => 1120,
+        "1121" => 1121,
+        "1122" => 1122,
+        "1123" => 1123,
+        "1124" => 1124,
+        "1125" => 1125,
+        "1126" => 1126,
+        "1127" => 1127,
+        "1128" => 1128,
+        "1129" => 1129,
+        "1130" => 1130,
+        "1131" => 1131,
+        "1132" => 1132,
+        "1133" => 1133,
+        "1134" => 1134,
+        "1135" => 1135,
+        "1136" => 1136,
+        "1137" => 1137,
+        "1138" => 1138,
+        "1139" => 1139,
+        "1140" => 1140,
+        "1141" => 1141,
+        "1142" => 1142,
+        "1143" => 1143,
+        "1144" => 1144,
+        "1145" => 1145,
+        "1146" => 1146,
+        "1147" => 1147,
+        "1148" => 1148,
+        "1149" => 1149,
+        "1150" => 1150,
+        "1151" => 1151,
+        "1152" => 1152,
+        "1153" => 1153,
+        "1154" => 1154,
+        "1155" => 1155,
+        "1156" => 1156,
+        "1157" => 1157,
+        "1158" => 1158,
+        "1159" => 1159,
+        "1160" => 1160,
+        "1161" => 1161,
+        "1162" => 1162,
+        "1163" => 1163,
+        "1164" => 1164,
+        "1165" => 1165,
+        "1166" => 1166,
+        "1167" => 1167,
+        "1168" => 1168,
+        "1169" => 1169,
+        "1170" => 1170,
+        "1171" => 1171,
+        "1172" => 1172,
+        "1173" => 1173,
+        "1174" => 1174,
+        "1175" => 1175,
+        "1176" => 1176,
+        "1177" => 1177,
+        "1178" => 1178,
+        "1179" => 1179,
+        "1180" => 1180,
+        "1181" => 1181,
+        "1182" => 1182,
+        "1183" => 1183,
+        "1184" => 1184,
+        "1185" => 1185,
+        "1186" => 1186,
+        "1187" => 1187,
+        "1188" => 1188,
+        "1189" => 1189,
+        "1190" => 1190,
+        "1191" => 1191,
+        "1192" => 1192,
+        "1193" => 1193,
+        "1194" => 1194,
+        "1195" => 1195,
+        "1196" => 1196,
+        "1197" => 1197,
+        "1198" => 1198,
+        "1199" => 1199,
+        "1200" => 1200,
+        "1201" => 1201,
+        "1202" => 1202,
+        "1203" => 1203,
+        "1204" => 1204,
+        "1205" => 1205,
+        "1206" => 1206,
+        "1207" => 1207,
+        "1208" => 1208,
+        "1209" => 1209,
+        "1210" => 1210,
+        "1211" => 1211,
+        "1212" => 1212,
+        "1213" => 1213,
+        "1214" => 1214,
+        "1215" => 1215,
+        "1216" => 1216,
+        "1217" => 1217,
+        "1218" => 1218,
+        "1219" => 1219,
+        "1220" => 1220,
+        "1221" => 1221,
+        "1222" => 1222,
+        "1223" => 1223,
+        "1224" => 1224,
+        "1225" => 1225,
+        "1226" => 1226,
+        "1227" => 1227,
+        "1228" => 1228,
+        "1229" => 1229,
+        "1230" => 1230,
+        "1231" => 1231,
+        "1232" => 1232,
+        "1233" => 1233,
+        "1234" => 1234,
+        "1235" => 1235,
+        "1236" => 1236,
+        "1237" => 1237,
+        "1238" => 1238,
+        "1239" => 1239,
+        "1240" => 1240,
+        "1241" => 1241,
+        "1242" => 1242,
+        "1243" => 1243,
+        "1244" => 1244,
+        "1245" => 1245,
+        "1246" => 1246,
+        "1247" => 1247,
+        "1248" => 1248,
+        "1249" => 1249,
+        "1250" => 1250,
+        "1251" => 1251,
+        "1252" => 1252,
+        "1253" => 1253,
+        "1254" => 1254,
+        "1255" => 1255,
+        "1256" => 1256,
+        "1257" => 1257,
+        "1258" => 1258,
+        "1259" => 1259,
+        "1260" => 1260,
+        "1261" => 1261,
+        "1262" => 1262,
+        "1263" => 1263,
+        "1264" => 1264,
+        "1265" => 1265,
+        "1266" => 1266,
+        "1267" => 1267,
+        "1268" => 1268,
+        "1269" => 1269,
+        "1270" => 1270,
+        "1271" => 1271,
+        "1272" => 1272,
+        "1273" => 1273,
+        "1274" => 1274,
+        "1275" => 1275,
+        "1276" => 1276,
+        "1277" => 1277,
+        "1278" => 1278,
+        "1279" => 1279,
+        "1280" => 1280,
+        "1281" => 1281,
+        "1282" => 1282,
+        "1283" => 1283,
+        "1284" => 1284,
+        "1285" => 1285,
+        "1286" => 1286,
+        "1287" => 1287,
+        "1288" => 1288,
+        "1289" => 1289,
+        "1290" => 1290,
+        "1291" => 1291,
+        "1292" => 1292,
+        "1293" => 1293,
+        "1294" => 1294,
+        "1295" => 1295,
+        "1296" => 1296,
+        "1297" => 1297,
+        "1298" => 1298,
+        "1299" => 1299,
+        "1300" => 1300,
+        "1301" => 1301,
+        "1302" => 1302,
+        "1303" => 1303,
+        "1304" => 1304,
+        "1305" => 1305,
+        "1306" => 1306,
+        "1307" => 1307,
+        "1308" => 1308,
+        "1309" => 1309,
+        "1310" => 1310,
+        "1311" => 1311,
+        "1312" => 1312,
+        "1313" => 1313,
+        "1314" => 1314,
+        "1315" => 1315,
+        "1316" => 1316,
+        "1317" => 1317,
+        "1318" => 1318,
+        "1319" => 1319,
+        "1320" => 1320,
+        "1321" => 1321,
+        "1322" => 1322,
+        "1323" => 1323,
+        "1324" => 1324,
+        "1325" => 1325,
+        "1326" => 1326,
+        "1327" => 1327,
+        "1328" => 1328,
+        "1329" => 1329,
+        "1330" => 1330,
+        "1331" => 1331,
+        "1332" => 1332,
+        "1333" => 1333,
+        "1334" => 1334,
+        "1335" => 1335,
+        "1336" => 1336,
+        "1337" => 1337,
+        "1338" => 1338,
+        "1339" => 1339,
+        "1340" => 1340,
+        "1341" => 1341,
+        "1342" => 1342,
+        "1343" => 1343,
+        "1344" => 1344,
+        "1345" => 1345,
+        "1346" => 1346,
+        "1347" => 1347,
+        "1348" => 1348,
+        "1349" => 1349,
+        "1350" => 1350,
+        "1351" => 1351,
+        "1352" => 1352,
+        "1353" => 1353,
+        "1354" => 1354,
+        "1355" => 1355,
+        "1356" => 1356,
+        "1357" => 1357,
+        "1358" => 1358,
+        "1359" => 1359,
+        "1360" => 1360,
+        "1361" => 1361,
+        "1362" => 1362,
+        "1363" => 1363,
+        "1364" => 1364,
+        "1365" => 1365,
+        "1366" => 1366,
+        "1367" => 1367,
+        "1368" => 1368,
+        "1369" => 1369,
+        "1370" => 1370,
+        "1371" => 1371,
+        "1372" => 1372,
+        "1373" => 1373,
+        "1374" => 1374,
+        "1375" => 1375,
+        "1376" => 1376,
+        "1377" => 1377,
+        "1378" => 1378,
+        "1379" => 1379,
+        "1380" => 1380,
+        "1381" => 1381,
+        "1382" => 1382,
+        "1383" => 1383,
+        "1384" => 1384,
+        "1385" => 1385,
+        "1386" => 1386,
+        "1387" => 1387,
+        "1388" => 1388,
+        "1389" => 1389,
+        "1390" => 1390,
+        "1391" => 1391,
+        "1392" => 1392,
+        "1393" => 1393,
+        "1394" => 1394,
+        "1395" => 1395,
+        "1396" => 1396,
+        "1397" => 1397,
+        "1398" => 1398,
+        "1399" => 1399,
+        "1400" => 1400,
+        "1401" => 1401,
+        "1402" => 1402,
+        "1403" => 1403,
+        "1404" => 1404,
+        "1405" => 1405,
+        "1406" => 1406,
+        "1407" => 1407,
+        "1408" => 1408,
+        "1409" => 1409,
+        "1410" => 1410,
+        "1411" => 1411,
+        "1412" => 1412,
+        "1413" => 1413,
+        "1414" => 1414,
+        "1415" => 1415,
+        "1416" => 1416,
+        "1417" => 1417,
+        "1418" => 1418,
+        "1419" => 1419,
+        "1420" => 1420,
+        "1421" => 1421,
+        "1422" => 1422,
+        "1423" => 1423,
+        "1424" => 1424,
+        "1425" => 1425,
+        "1426" => 1426,
+        "1427" => 1427,
+        "1428" => 1428,
+        "1429" => 1429,
+        "1430" => 1430,
+        "1431" => 1431,
+        "1432" => 1432,
+        "1433" => 1433,
+        "1434" => 1434,
+        "1435" => 1435,
+        "1436" => 1436,
+        "1437" => 1437,
+        "1438" => 1438,
+        "1439" => 1439,
+        "1440" => 1440,
+        "1441" => 1441,
+        "1442" => 1442,
+        "1443" => 1443,
+        "1444" => 1444,
+        "1445" => 1445,
+        "1446" => 1446,
+        "1447" => 1447,
+        "1448" => 1448,
+        "1449" => 1449,
+        "1450" => 1450,
+        "1451" => 1451,
+        "1452" => 1452,
+        "1453" => 1453,
+        "1454" => 1454,
+        "1455" => 1455,
+        "1456" => 1456,
+        "1457" => 1457,
+        "1458" => 1458,
+        "1459" => 1459,
+        "1460" => 1460,
+        "1461" => 1461,
+        "1462" => 1462,
+        "1463" => 1463,
+        "1464" => 1464,
+        "1465" => 1465,
+        "1466" => 1466,
+        "1467" => 1467,
+        "1468" => 1468,
+        "1469" => 1469,
+        "1470" => 1470,
+        "1471" => 1471,
+        "1472" => 1472,
+        "1473" => 1473,
+        "1474" => 1474,
+        "1475" => 1475,
+        "1476" => 1476,
+        "1477" => 1477,
+        "1478" => 1478,
+        "1479" => 1479,
+        "1480" => 1480,
+        "1481" => 1481,
+        "1482" => 1482,
+        "1483" => 1483,
+        "1484" => 1484,
+        "1485" => 1485,
+        "1486" => 1486,
+        "1487" => 1487,
+        "1488" => 1488,
+        "1489" => 1489,
+        "1490" => 1490,
+        "1491" => 1491,
+        "1492" => 1492,
+        "1493" => 1493,
+        "1494" => 1494,
+        "1495" => 1495,
+        "1496" => 1496,
+        "1497" => 1497,
+        "1498" => 1498,
+        "1499" => 1499,
+        "1500" => 1500,
+        "1501" => 1501,
+        "1502" => 1502,
+        "1503" => 1503,
+        "1504" => 1504,
+        "1505" => 1505,
+        "1506" => 1506,
+        "1507" => 1507,
+        "1508" => 1508,
+        "1509" => 1509,
+        "1510" => 1510,
+        "1511" => 1511,
+        "1512" => 1512,
+        "1513" => 1513,
+        "1514" => 1514,
+        "1515" => 1515,
+        "1516" => 1516,
+        "1517" => 1517,
+        "1518" => 1518,
+        "1519" => 1519,
+        "1520" => 1520,
+        "1521" => 1521,
+        "1522" => 1522,
+        "1523" => 1523,
+        "1524" => 1524,
+        "1525" => 1525,
+        "1526" => 1526,
+        "1527" => 1527,
+        "1528" => 1528,
+        "1529" => 1529,
+        "1530" => 1530,
+        "1531" => 1531,
+        "1532" => 1532,
+        "1533" => 1533,
+        "1534" => 1534,
+        "1535" => 1535,
+        "1536" => 1536,
+        "1537" => 1537,
+        "1538" => 1538,
+        "1539" => 1539,
+        "1540" => 1540,
+        "1541" => 1541,
+        "1542" => 1542,
+        "1543" => 1543,
+        "1544" => 1544,
+        "1545" => 1545,
+        "1546" => 1546,
+        "1547" => 1547,
+        "1548" => 1548,
+        "1549" => 1549,
+        "1550" => 1550,
+        "1551" => 1551,
+        "1552" => 1552,
+        "1553" => 1553,
+        "1554" => 1554,
+        "1555" => 1555,
+        "1556" => 1556,
+        "1557" => 1557,
+        "1558" => 1558,
+        "1559" => 1559,
+        "1560" => 1560,
+        "1561" => 1561,
+        "1562" => 1562,
+        "1563" => 1563,
+        "1564" => 1564,
+        "1565" => 1565,
+        "1566" => 1566,
+        "1567" => 1567,
+        "1568" => 1568,
+        "1569" => 1569,
+        "1570" => 1570,
+        "1571" => 1571,
+        "1572" => 1572,
+        "1573" => 1573,
+        "1574" => 1574,
+        "1575" => 1575,
+        "1576" => 1576,
+        "1577" => 1577,
+        "1578" => 1578,
+        "1579" => 1579,
+        "1580" => 1580,
+        "1581" => 1581,
+        "1582" => 1582,
+        "1583" => 1583,
+        "1584" => 1584,
+        "1585" => 1585,
+        "1586" => 1586,
+        "1587" => 1587,
+        "1588" => 1588,
+        "1589" => 1589,
+        "1590" => 1590,
+        "1591" => 1591,
+        "1592" => 1592,
+        "1593" => 1593,
+        "1594" => 1594,
+        "1595" => 1595,
+        "1596" => 1596,
+        "1597" => 1597,
+        "1598" => 1598,
+        "1599" => 1599,
+        "1600" => 1600,
+        "1601" => 1601,
+        "1602" => 1602,
+        "1603" => 1603,
+        "1604" => 1604,
+        "1605" => 1605,
+        "1606" => 1606,
+        "1607" => 1607,
+        "1608" => 1608,
+        "1609" => 1609,
+        "1610" => 1610,
+        "1611" => 1611,
+        "1612" => 1612,
+        "1613" => 1613,
+        "1614" => 1614,
+        "1615" => 1615,
+        "1616" => 1616,
+        "1617" => 1617,
+        "1618" => 1618,
+        "1619" => 1619,
+        "1620" => 1620,
+        "1621" => 1621,
+        "1622" => 1622,
+        "1623" => 1623,
+        "1624" => 1624,
+        "1625" => 1625,
+        "1626" => 1626,
+        "1627" => 1627,
+        "1628" => 1628,
+        "1629" => 1629,
+        "1630" => 1630,
+        "1631" => 1631,
+        "1632" => 1632,
+        "1633" => 1633,
+        "1634" => 1634,
+        "1635" => 1635,
+        "1636" => 1636,
+        "1637" => 1637,
+        "1638" => 1638,
+        "1639" => 1639,
+        "1640" => 1640,
+        "1641" => 1641,
+        "1642" => 1642,
+        "1643" => 1643,
+        "1644" => 1644,
+        "1645" => 1645,
+        "1646" => 1646,
+        "1647" => 1647,
+        "1648" => 1648,
+        "1649" => 1649,
+        "1650" => 1650,
+        "1651" => 1651,
+        "1652" => 1652,
+        "1653" => 1653,
+        "1654" => 1654,
+        "1655" => 1655,
+        "1656" => 1656,
+        "1657" => 1657,
+        "1658" => 1658,
+        "1659" => 1659,
+        "1660" => 1660,
+        "1661" => 1661,
+        "1662" => 1662,
+        "1663" => 1663,
+        "1664" => 1664,
+        "1665" => 1665,
+        "1666" => 1666,
+        "1667" => 1667,
+        "1668" => 1668,
+        "1669" => 1669,
+        "1670" => 1670,
+        "1671" => 1671,
+        "1672" => 1672,
+        "1673" => 1673,
+        "1674" => 1674,
+        "1675" => 1675,
+        "1676" => 1676,
+        "1677" => 1677,
+        "1678" => 1678,
+        "1679" => 1679,
+        "1680" => 1680,
+        "1681" => 1681,
+        "1682" => 1682,
+        "1683" => 1683,
+        "1684" => 1684,
+        "1685" => 1685,
+        "1686" => 1686,
+        "1687" => 1687,
+        "1688" => 1688,
+        "1689" => 1689,
+        "1690" => 1690,
+        "1691" => 1691,
+        "1692" => 1692,
+        "1693" => 1693,
+        "1694" => 1694,
+        "1695" => 1695,
+        "1696" => 1696,
+        "1697" => 1697,
+        "1698" => 1698,
+        "1699" => 1699,
+        "1700" => 1700,
+        "1701" => 1701,
+        "1702" => 1702,
+        "1703" => 1703,
+        "1704" => 1704,
+        "1705" => 1705,
+        "1706" => 1706,
+        "1707" => 1707,
+        "1708" => 1708,
+        "1709" => 1709,
+        "1710" => 1710,
+        "1711" => 1711,
+        "1712" => 1712,
+        "1713" => 1713,
+        "1714" => 1714,
+        "1715" => 1715,
+        "1716" => 1716,
+        "1717" => 1717,
+        "1718" => 1718,
+        "1719" => 1719,
+        "1720" => 1720,
+        "1721" => 1721,
+        "1722" => 1722,
+        "1723" => 1723,
+        "1724" => 1724,
+        "1725" => 1725,
+        "1726" => 1726,
+        "1727" => 1727,
+        "1728" => 1728,
+        "1729" => 1729,
+        "1730" => 1730,
+        "1731" => 1731,
+        "1732" => 1732,
+        "1733" => 1733,
+        "1734" => 1734,
+        "1735" => 1735,
+        "1736" => 1736,
+        "1737" => 1737,
+        "1738" => 1738,
+        "1739" => 1739,
+        "1740" => 1740,
+        "1741" => 1741,
+        "1742" => 1742,
+        "1743" => 1743,
+        "1744" => 1744,
+        "1745" => 1745,
+        "1746" => 1746,
+        "1747" => 1747,
+        "1748" => 1748,
+        "1749" => 1749,
+        "1750" => 1750,
+        "1751" => 1751,
+        "1752" => 1752,
+        "1753" => 1753,
+        "1754" => 1754,
+        "1755" => 1755,
+        "1756" => 1756,
+        "1757" => 1757,
+        "1758" => 1758,
+        "1759" => 1759,
+        "1760" => 1760,
+        "1761" => 1761,
+        "1762" => 1762,
+        "1763" => 1763,
+        "1764" => 1764,
+        "1765" => 1765,
+        "1766" => 1766,
+        "1767" => 1767,
+        "1768" => 1768,
+        "1769" => 1769,
+        "1770" => 1770,
+        "1771" => 1771,
+        "1772" => 1772,
+        "1773" => 1773,
+        "1774" => 1774,
+        "1775" => 1775,
+        "1776" => 1776,
+        "1777" => 1777,
+        "1778" => 1778,
+        "1779" => 1779,
+        "1780" => 1780,
+        "1781" => 1781,
+        "1782" => 1782,
+        "1783" => 1783,
+        "1784" => 1784,
+        "1785" => 1785,
+        "1786" => 1786,
+        "1787" => 1787,
+        "1788" => 1788,
+        "1789" => 1789,
+        "1790" => 1790,
+        "1791" => 1791,
+        "1792" => 1792,
+        "1793" => 1793,
+        "1794" => 1794,
+        "1795" => 1795,
+        "1796" => 1796,
+        "1797" => 1797,
+        "1798" => 1798,
+        "1799" => 1799,
+        "1800" => 1800,
+        "1801" => 1801,
+        "1802" => 1802,
+        "1803" => 1803,
+        "1804" => 1804,
+        "1805" => 1805,
+        "1806" => 1806,
+        "1807" => 1807,
+        "1808" => 1808,
+        "1809" => 1809,
+        "1810" => 1810,
+        "1811" => 1811,
+        "1812" => 1812,
+        "1813" => 1813,
+        "1814" => 1814,
+        "1815" => 1815,
+        "1816" => 1816,
+        "1817" => 1817,
+        "1818" => 1818,
+        "1819" => 1819,
+        "1820" => 1820,
+        "1821" => 1821,
+        "1822" => 1822,
+        "1823" => 1823,
+        "1824" => 1824,
+        "1825" => 1825,
+        "1826" => 1826,
+        "1827" => 1827,
+        "1828" => 1828,
+        "1829" => 1829,
+        "1830" => 1830,
+        "1831" => 1831,
+        "1832" => 1832,
+        "1833" => 1833,
+        "1834" => 1834,
+        "1835" => 1835,
+        "1836" => 1836,
+        "1837" => 1837,
+        "1838" => 1838,
+        "1839" => 1839,
+        "1840" => 1840,
+        "1841" => 1841,
+        "1842" => 1842,
+        "1843" => 1843,
+        "1844" => 1844,
+        "1845" => 1845,
+        "1846" => 1846,
+        "1847" => 1847,
+        "1848" => 1848,
+        "1849" => 1849,
+        "1850" => 1850,
+        "1851" => 1851,
+        "1852" => 1852,
+        "1853" => 1853,
+        "1854" => 1854,
+        "1855" => 1855,
+        "1856" => 1856,
+        "1857" => 1857,
+        "1858" => 1858,
+        "1859" => 1859,
+        "1860" => 1860,
+        "1861" => 1861,
+        "1862" => 1862,
+        "1863" => 1863,
+        "1864" => 1864,
+        "1865" => 1865,
+        "1866" => 1866,
+        "1867" => 1867,
+        "1868" => 1868,
+        "1869" => 1869,
+        "1870" => 1870,
+        "1871" => 1871,
+        "1872" => 1872,
+        "1873" => 1873,
+        "1874" => 1874,
+        "1875" => 1875,
+        "1876" => 1876,
+        "1877" => 1877,
+        "1878" => 1878,
+        "1879" => 1879,
+        "1880" => 1880,
+        "1881" => 1881,
+        "1882" => 1882,
+        "1883" => 1883,
+        "1884" => 1884,
+        "1885" => 1885,
+        "1886" => 1886,
+        "1887" => 1887,
+        "1888" => 1888,
+        "1889" => 1889,
+        "1890" => 1890,
+        "1891" => 1891,
+        "1892" => 1892,
+        "1893" => 1893,
+        "1894" => 1894,
+        "1895" => 1895,
+        "1896" => 1896,
+        "1897" => 1897,
+        "1898" => 1898,
+        "1899" => 1899,
+        "1900" => 1900,
+        "1901" => 1901,
+        "1902" => 1902,
+        "1903" => 1903,
+        "1904" => 1904,
+        "1905" => 1905,
+        "1906" => 1906,
+        "1907" => 1907,
+        "1908" => 1908,
+        "1909" => 1909,
+        "1910" => 1910,
+        "1911" => 1911,
+        "1912" => 1912,
+        "1913" => 1913,
+        "1914" => 1914,
+        "1915" => 1915,
+        "1916" => 1916,
+        "1917" => 1917,
+        "1918" => 1918,
+        "1919" => 1919,
+        "1920" => 1920,
+        "1921" => 1921,
+        "1922" => 1922,
+        "1923" => 1923,
+        "1924" => 1924,
+        "1925" => 1925,
+        "1926" => 1926,
+        "1927" => 1927,
+        "1928" => 1928,
+        "1929" => 1929,
+        "1930" => 1930,
+        "1931" => 1931,
+        "1932" => 1932,
+        "1933" => 1933,
+        "1934" => 1934,
+        "1935" => 1935,
+        "1936" => 1936,
+        "1937" => 1937,
+        "1938" => 1938,
+        "1939" => 1939,
+        "1940" => 1940,
+        "1941" => 1941,
+        "1942" => 1942,
+        "1943" => 1943,
+        "1944" => 1944,
+        "1945" => 1945,
+        "1946" => 1946,
+        "1947" => 1947,
+        "1948" => 1948,
+        "1949" => 1949,
+        "1950" => 1950,
+        "1951" => 1951,
+        "1952" => 1952,
+        "1953" => 1953,
+        "1954" => 1954,
+        "1955" => 1955,
+        "1956" => 1956,
+        "1957" => 1957,
+        "1958" => 1958,
+        "1959" => 1959,
+        "1960" => 1960,
+        "1961" => 1961,
+        "1962" => 1962,
+        "1963" => 1963,
+        "1964" => 1964,
+        "1965" => 1965,
+        "1966" => 1966,
+        "1967" => 1967,
+        "1968" => 1968,
+        "1969" => 1969,
+        "1970" => 1970,
+        "1971" => 1971,
+        "1972" => 1972,
+        "1973" => 1973,
+        "1974" => 1974,
+        "1975" => 1975,
+        "1976" => 1976,
+        "1977" => 1977,
+        "1978" => 1978,
+        "1979" => 1979,
+        "1980" => 1980,
+        "1981" => 1981,
+        "1982" => 1982,
+        "1983" => 1983,
+        "1984" => 1984,
+        "1985" => 1985,
+        "1986" => 1986,
+        "1987" => 1987,
+        "1988" => 1988,
+        "1989" => 1989,
+        "1990" => 1990,
+        "1991" => 1991,
+        "1992" => 1992,
+        "1993" => 1993,
+        "1994" => 1994,
+        "1995" => 1995,
+        "1996" => 1996,
+        "1997" => 1997,
+        "1998" => 1998,
+        "1999" => 1999,
+        "2000" => 2000,
+        "2001" => 2001,
+        "2002" => 2002,
+        "2003" => 2003,
+        "2004" => 2004,
+        "2005" => 2005,
+        "2006" => 2006,
+        "2007" => 2007,
+        "2008" => 2008,
+        "2009" => 2009,
+        "2010" => 2010,
+        "2011" => 2011,
+        "2012" => 2012,
+        "2013" => 2013,
+        "2014" => 2014,
+        "2015" => 2015,
+        "2016" => 2016,
+        "2017" => 2017,
+        "2018" => 2018,
+        "2019" => 2019,
+        "2020" => 2020,
+        "2021" => 2021,
+        "2022" => 2022,
+        "2023" => 2023,
+        "2024" => 2024,
+        "2025" => 2025,
+        "2026" => 2026,
+        "2027" => 2027,
+        "2028" => 2028,
+        "2029" => 2029,
+        "2030" => 2030,
+        "2031" => 2031,
+        "2032" => 2032,
+        "2033" => 2033,
+        "2034" => 2034,
+        "2035" => 2035,
+        "2036" => 2036,
+        "2037" => 2037,
+        "2038" => 2038,
+        "2039" => 2039,
+        "2040" => 2040,
+        "2041" => 2041,
+        "2042" => 2042,
+        "2043" => 2043,
+        "2044" => 2044,
+        "2045" => 2045,
+        "2046" => 2046,
+        "2047" => 2047,
+        "2048" => 2048,
+        "2049" => 2049,
+        "2050" => 2050,
+        "2051" => 2051,
+        "2052" => 2052,
+        "2053" => 2053,
+        "2054" => 2054,
+        "2055" => 2055,
+        "2056" => 2056,
+        "2057" => 2057,
+        "2058" => 2058,
+        "2059" => 2059,
+        "2060" => 2060,
+        "2061" => 2061,
+        "2062" => 2062,
+        "2063" => 2063,
+        "2064" => 2064,
+        "2065" => 2065,
+        "2066" => 2066,
+        "2067" => 2067,
+        "2068" => 2068,
+        "2069" => 2069,
+        "2070" => 2070,
+        "2071" => 2071,
+        "2072" => 2072,
+        "2073" => 2073,
+        "2074" => 2074,
+        "2075" => 2075,
+        "2076" => 2076,
+        "2077" => 2077,
+        "2078" => 2078,
+        "2079" => 2079,
+        "2080" => 2080,
+        "2081" => 2081,
+        "2082" => 2082,
+        "2083" => 2083,
+        "2084" => 2084,
+        "2085" => 2085,
+        "2086" => 2086,
+        "2087" => 2087,
+        "2088" => 2088,
+        "2089" => 2089,
+        "2090" => 2090,
+        "2091" => 2091,
+        "2092" => 2092,
+        "2093" => 2093,
+        "2094" => 2094,
+        "2095" => 2095,
+        "2096" => 2096,
+        "2097" => 2097,
+        "2098" => 2098,
+        "2099" => 2099,
+        "2100" => 2100,
+        "2101" => 2101,
+        "2102" => 2102,
+        "2103" => 2103,
+        "2104" => 2104,
+        "2105" => 2105,
+        "2106" => 2106,
+        "2107" => 2107,
+        "2108" => 2108,
+        "2109" => 2109,
+        "2110" => 2110,
+        "2111" => 2111,
+        "2112" => 2112,
+        "2113" => 2113,
+        "2114" => 2114,
+        "2115" => 2115,
+        "2116" => 2116,
+        "2117" => 2117,
+        "2118" => 2118,
+        "2119" => 2119,
+        "2120" => 2120,
+        "2121" => 2121,
+        "2122" => 2122,
+        "2123" => 2123,
+        "2124" => 2124,
+        "2125" => 2125,
+        "2126" => 2126,
+        "2127" => 2127,
+        "2128" => 2128,
+        "2129" => 2129,
+        "2130" => 2130,
+        "2131" => 2131,
+        "2132" => 2132,
+        "2133" => 2133,
+        "2134" => 2134,
+        "2135" => 2135,
+        "2136" => 2136,
+        "2137" => 2137,
+        "2138" => 2138,
+        "2139" => 2139,
+        "2140" => 2140,
+        "2141" => 2141,
+        "2142" => 2142,
+        "2143" => 2143,
+        "2144" => 2144,
+        "2145" => 2145,
+        "2146" => 2146,
+        "2147" => 2147,
+        "2148" => 2148,
+        "2149" => 2149,
+        "2150" => 2150,
+        "2151" => 2151,
+        "2152" => 2152,
+        "2153" => 2153,
+        "2154" => 2154,
+        "2155" => 2155,
+        "2156" => 2156,
+        "2157" => 2157,
+        "2158" => 2158,
+        "2159" => 2159,
+        "2160" => 2160,
+        "2161" => 2161,
+        "2162" => 2162,
+        "2163" => 2163,
+        "2164" => 2164,
+        "2165" => 2165,
+        "2166" => 2166,
+        "2167" => 2167,
+        "2168" => 2168,
+        "2169" => 2169,
+        "2170" => 2170,
+        "2171" => 2171,
+        "2172" => 2172,
+        "2173" => 2173,
+        "2174" => 2174,
+        "2175" => 2175,
+        "2176" => 2176,
+        "2177" => 2177,
+        "2178" => 2178,
+        "2179" => 2179,
+        "2180" => 2180,
+        "2181" => 2181,
+        "2182" => 2182,
+        "2183" => 2183,
+        "2184" => 2184,
+        "2185" => 2185,
+        "2186" => 2186,
+        "2187" => 2187,
+        "2188" => 2188,
+        "2189" => 2189,
+        "2190" => 2190,
+        "2191" => 2191,
+        "2192" => 2192,
+        "2193" => 2193,
+        "2194" => 2194,
+        "2195" => 2195,
+        "2196" => 2196,
+        "2197" => 2197,
+        "2198" => 2198,
+        "2199" => 2199,
+        "2200" => 2200,
+        "2201" => 2201,
+        "2202" => 2202,
+        "2203" => 2203,
+        "2204" => 2204,
+        "2205" => 2205,
+        "2206" => 2206,
+        "2207" => 2207,
+        "2208" => 2208,
+        "2209" => 2209,
+        "2210" => 2210,
+        "2211" => 2211,
+        "2212" => 2212,
+        "2213" => 2213,
+        "2214" => 2214,
+        "2215" => 2215,
+        "2216" => 2216,
+        "2217" => 2217,
+        "2218" => 2218,
+        "2219" => 2219,
+        "2220" => 2220,
+        "2221" => 2221,
+        "2222" => 2222,
+        "2223" => 2223,
+        "2224" => 2224,
+        "2225" => 2225,
+        "2226" => 2226,
+        "2227" => 2227,
+        "2228" => 2228,
+        "2229" => 2229,
+        "2230" => 2230,
+        "2231" => 2231,
+        "2232" => 2232,
+        "2233" => 2233,
+        "2234" => 2234,
+        "2235" => 2235,
+        "2236" => 2236,
+        "2237" => 2237,
+        "2238" => 2238,
+        "2239" => 2239,
+        "2240" => 2240,
+        "2241" => 2241,
+        "2242" => 2242,
+        "2243" => 2243,
+        "2244" => 2244,
+        "2245" => 2245,
+        "2246" => 2246,
+        "2247" => 2247,
+        "2248" => 2248,
+        "2249" => 2249,
+        "2250" => 2250,
+        "2251" => 2251,
+        "2252" => 2252,
+        "2253" => 2253,
+        "2254" => 2254,
+        "2255" => 2255,
+        "2256" => 2256,
+        "2257" => 2257,
+        "2258" => 2258,
+        "2259" => 2259,
+        "2260" => 2260,
+        "2261" => 2261,
+        "2262" => 2262,
+        "2263" => 2263,
+        "2264" => 2264,
+        "2265" => 2265,
+        "2266" => 2266,
+        "2267" => 2267,
+        "2268" => 2268,
+        "2269" => 2269,
+        "2270" => 2270,
+        "2271" => 2271,
+        "2272" => 2272,
+        "2273" => 2273,
+        "2274" => 2274,
+        "2275" => 2275,
+        "2276" => 2276,
+        "2277" => 2277,
+        "2278" => 2278,
+        "2279" => 2279,
+        "2280" => 2280,
+        "2281" => 2281,
+        "2282" => 2282,
+        "2283" => 2283,
+        "2284" => 2284,
+        "2285" => 2285,
+        "2286" => 2286,
+        "2287" => 2287,
+        "2288" => 2288,
+        "2289" => 2289,
+        "2290" => 2290,
+        "2291" => 2291,
+        "2292" => 2292,
+        "2293" => 2293,
+        "2294" => 2294,
+        "2295" => 2295,
+        "2296" => 2296,
+        "2297" => 2297,
+        "2298" => 2298,
+        "2299" => 2299,
+        "2300" => 2300,
+        "2301" => 2301,
+        "2302" => 2302,
+        "2303" => 2303,
+        "2304" => 2304,
+        "2305" => 2305,
+        "2306" => 2306,
+        "2307" => 2307,
+        "2308" => 2308,
+        "2309" => 2309,
+        "2310" => 2310,
+        "2311" => 2311,
+        "2312" => 2312,
+        "2313" => 2313,
+        "2314" => 2314,
+        "2315" => 2315,
+        "2316" => 2316,
+        "2317" => 2317,
+        "2318" => 2318,
+        "2319" => 2319,
+        "2320" => 2320,
+        "2321" => 2321,
+        "2322" => 2322,
+        "2323" => 2323,
+        "2324" => 2324,
+        "2325" => 2325,
+        "2326" => 2326,
+        "2327" => 2327,
+        "2328" => 2328,
+        "2329" => 2329,
+        "2330" => 2330,
+        "2331" => 2331,
+        "2332" => 2332,
+        "2333" => 2333,
+        "2334" => 2334,
+        "2335" => 2335,
+        "2336" => 2336,
+        "2337" => 2337,
+        "2338" => 2338,
+        "2339" => 2339,
+        "2340" => 2340,
+        "2341" => 2341,
+        "2342" => 2342,
+        "2343" => 2343,
+        "2344" => 2344,
+        "2345" => 2345,
+        "2346" => 2346,
+        "2347" => 2347,
+        "2348" => 2348,
+        "2349" => 2349,
+        "2350" => 2350,
+        "2351" => 2351,
+        "2352" => 2352,
+        "2353" => 2353,
+        "2354" => 2354,
+        "2355" => 2355,
+        "2356" => 2356,
+        "2357" => 2357,
+        "2358" => 2358,
+        "2359" => 2359,
+        "2360" => 2360,
+        "2361" => 2361,
+        "2362" => 2362,
+        "2363" => 2363,
+        "2364" => 2364,
+        "2365" => 2365,
+        "2366" => 2366,
+        "2367" => 2367,
+        "2368" => 2368,
+        "2369" => 2369,
+        "2370" => 2370,
+        "2371" => 2371,
+        "2372" => 2372,
+        "2373" => 2373,
+        "2374" => 2374,
+        "2375" => 2375,
+        "2376" => 2376,
+        "2377" => 2377,
+        "2378" => 2378,
+        "2379" => 2379,
+        "2380" => 2380,
+        "2381" => 2381,
+        "2382" => 2382,
+        "2383" => 2383,
+        "2384" => 2384,
+        "2385" => 2385,
+        "2386" => 2386,
+        "2387" => 2387,
+        "2388" => 2388,
+        "2389" => 2389,
+        "2390" => 2390,
+        "2391" => 2391,
+        "2392" => 2392,
+        "2393" => 2393,
+        "2394" => 2394,
+        "2395" => 2395,
+        "2396" => 2396,
+        "2397" => 2397,
+        "2398" => 2398,
+        "2399" => 2399,
+        "2400" => 2400,
+        "2401" => 2401,
+        "2402" => 2402,
+        "2403" => 2403,
+        "2404" => 2404,
+        "2405" => 2405,
+        "2406" => 2406,
+        "2407" => 2407,
+        "2408" => 2408,
+        "2409" => 2409,
+        "2410" => 2410,
+        "2411" => 2411,
+        "2412" => 2412,
+        "2413" => 2413,
+        "2414" => 2414,
+        "2415" => 2415,
+        "2416" => 2416,
+        "2417" => 2417,
+        "2418" => 2418,
+        "2419" => 2419,
+        "2420" => 2420,
+        "2421" => 2421,
+        "2422" => 2422,
+        "2423" => 2423,
+        "2424" => 2424,
+        "2425" => 2425,
+        "2426" => 2426,
+        "2427" => 2427,
+        "2428" => 2428,
+        "2429" => 2429,
+        "2430" => 2430,
+        "2431" => 2431,
+        "2432" => 2432,
+        "2433" => 2433,
+        "2434" => 2434,
+        "2435" => 2435,
+        "2436" => 2436,
+        "2437" => 2437,
+        "2438" => 2438,
+        "2439" => 2439,
+        "2440" => 2440,
+        "2441" => 2441,
+        "2442" => 2442,
+        "2443" => 2443,
+        "2444" => 2444,
+        "2445" => 2445,
+        "2446" => 2446,
+        "2447" => 2447,
+        "2448" => 2448,
+        "2449" => 2449,
+        "2450" => 2450,
+        "2451" => 2451,
+        "2452" => 2452,
+        "2453" => 2453,
+        "2454" => 2454,
+        "2455" => 2455,
+        "2456" => 2456,
+        "2457" => 2457,
+        "2458" => 2458,
+        "2459" => 2459,
+        "2460" => 2460,
+        "2461" => 2461,
+        "2462" => 2462,
+        "2463" => 2463,
+        "2464" => 2464,
+        "2465" => 2465,
+        "2466" => 2466,
+        "2467" => 2467,
+        "2468" => 2468,
+        "2469" => 2469,
+        "2470" => 2470,
+        "2471" => 2471,
+        "2472" => 2472,
+        "2473" => 2473,
+        "2474" => 2474,
+        "2475" => 2475,
+        "2476" => 2476,
+        "2477" => 2477,
+        "2478" => 2478,
+        "2479" => 2479,
+        "2480" => 2480,
+        "2481" => 2481,
+        "2482" => 2482,
+        "2483" => 2483,
+        "2484" => 2484,
+        "2485" => 2485,
+        "2486" => 2486,
+        "2487" => 2487,
+        "2488" => 2488,
+        "2489" => 2489,
+        "2490" => 2490,
+        "2491" => 2491,
+        "2492" => 2492,
+        "2493" => 2493,
+        "2494" => 2494,
+        "2495" => 2495,
+        "2496" => 2496,
+        "2497" => 2497,
+        "2498" => 2498,
+        "2499" => 2499,
+        "2500" => 2500,
+        "2501" => 2501,
+        "2502" => 2502,
+        "2503" => 2503,
+        "2504" => 2504,
+        "2505" => 2505,
+        "2506" => 2506,
+        "2507" => 2507,
+        "2508" => 2508,
+        "2509" => 2509,
+        "2510" => 2510,
+        "2511" => 2511,
+        "2512" => 2512,
+        "2513" => 2513,
+        "2514" => 2514,
+        "2515" => 2515,
+        "2516" => 2516,
+        "2517" => 2517,
+        "2518" => 2518,
+        "2519" => 2519,
+        "2520" => 2520,
+        "2521" => 2521,
+        "2522" => 2522,
+        "2523" => 2523,
+        "2524" => 2524,
+        "2525" => 2525,
+        "2526" => 2526,
+        "2527" => 2527,
+        "2528" => 2528,
+        "2529" => 2529,
+        "2530" => 2530,
+        "2531" => 2531,
+        "2532" => 2532,
+        "2533" => 2533,
+        "2534" => 2534,
+        "2535" => 2535,
+        "2536" => 2536,
+        "2537" => 2537,
+        "2538" => 2538,
+        "2539" => 2539,
+        "2540" => 2540,
+        "2541" => 2541,
+        "2542" => 2542,
+        "2543" => 2543,
+        "2544" => 2544,
+        "2545" => 2545,
+        "2546" => 2546,
+        "2547" => 2547,
+        "2548" => 2548,
+        "2549" => 2549,
+        "2550" => 2550,
+        "2551" => 2551,
+        "2552" => 2552,
+        "2553" => 2553,
+        "2554" => 2554,
+        "2555" => 2555,
+        "2556" => 2556,
+        "2557" => 2557,
+        "2558" => 2558,
+        "2559" => 2559,
+        "2560" => 2560,
+        "2561" => 2561,
+        "2562" => 2562,
+        "2563" => 2563,
+        "2564" => 2564,
+        "2565" => 2565,
+        "2566" => 2566,
+        "2567" => 2567,
+        "2568" => 2568,
+        "2569" => 2569,
+        "2570" => 2570,
+        "2571" => 2571,
+        "2572" => 2572,
+        "2573" => 2573,
+        "2574" => 2574,
+        "2575" => 2575,
+        "2576" => 2576,
+        "2577" => 2577,
+        "2578" => 2578,
+        "2579" => 2579,
+        "2580" => 2580,
+        "2581" => 2581,
+        "2582" => 2582,
+        "2583" => 2583,
+        "2584" => 2584,
+        "2585" => 2585,
+        "2586" => 2586,
+        "2587" => 2587,
+        "2588" => 2588,
+        "2589" => 2589,
+        "2590" => 2590,
+        "2591" => 2591,
+        "2592" => 2592,
+        "2593" => 2593,
+        "2594" => 2594,
+        "2595" => 2595,
+        "2596" => 2596,
+        "2597" => 2597,
+        "2598" => 2598,
+        "2599" => 2599,
+        "2600" => 2600,
+        "2601" => 2601,
+        "2602" => 2602,
+        "2603" => 2603,
+        "2604" => 2604,
+        "2605" => 2605,
+        "2606" => 2606,
+        "2607" => 2607,
+        "2608" => 2608,
+        "2609" => 2609,
+        "2610" => 2610,
+        "2611" => 2611,
+        "2612" => 2612,
+        "2613" => 2613,
+        "2614" => 2614,
+        "2615" => 2615,
+        "2616" => 2616,
+        "2617" => 2617,
+        "2618" => 2618,
+        "2619" => 2619,
+        "2620" => 2620,
+        "2621" => 2621,
+        "2622" => 2622,
+        "2623" => 2623,
+        "2624" => 2624,
+        "2625" => 2625,
+        "2626" => 2626,
+        "2627" => 2627,
+        "2628" => 2628,
+        "2629" => 2629,
+        "2630" => 2630,
+        "2631" => 2631,
+        "2632" => 2632,
+        "2633" => 2633,
+        "2634" => 2634,
+        "2635" => 2635,
+        "2636" => 2636,
+        "2637" => 2637,
+        "2638" => 2638,
+        "2639" => 2639,
+        "2640" => 2640,
+        "2641" => 2641,
+        "2642" => 2642,
+        "2643" => 2643,
+        "2644" => 2644,
+        "2645" => 2645,
+        "2646" => 2646,
+        "2647" => 2647,
+        "2648" => 2648,
+        "2649" => 2649,
+        "2650" => 2650,
+        "2651" => 2651,
+        "2652" => 2652,
+        "2653" => 2653,
+        "2654" => 2654,
+        "2655" => 2655,
+        "2656" => 2656,
+        "2657" => 2657,
+        "2658" => 2658,
+        "2659" => 2659,
+        "2660" => 2660,
+        "2661" => 2661,
+        "2662" => 2662,
+        "2663" => 2663,
+        "2664" => 2664,
+        "2665" => 2665,
+        "2666" => 2666,
+        "2667" => 2667,
+        "2668" => 2668,
+        "2669" => 2669,
+        "2670" => 2670,
+        "2671" => 2671,
+        "2672" => 2672,
+        "2673" => 2673,
+        "2674" => 2674,
+        "2675" => 2675,
+        "2676" => 2676,
+        "2677" => 2677,
+        "2678" => 2678,
+        "2679" => 2679,
+        "2680" => 2680,
+        "2681" => 2681,
+        "2682" => 2682,
+        "2683" => 2683,
+        "2684" => 2684,
+        "2685" => 2685,
+        "2686" => 2686,
+        "2687" => 2687,
+        "2688" => 2688,
+        "2689" => 2689,
+        "2690" => 2690,
+        "2691" => 2691,
+        "2692" => 2692,
+        "2693" => 2693,
+        "2694" => 2694,
+        "2695" => 2695,
+        "2696" => 2696,
+        "2697" => 2697,
+        "2698" => 2698,
+        "2699" => 2699,
+        "2700" => 2700,
+        "2701" => 2701,
+        "2702" => 2702,
+        "2703" => 2703,
+        "2704" => 2704,
+        "2705" => 2705,
+        "2706" => 2706,
+        "2707" => 2707,
+        "2708" => 2708,
+        "2709" => 2709,
+        "2710" => 2710,
+        "2711" => 2711,
+        "2712" => 2712,
+        "2713" => 2713,
+        "2714" => 2714,
+        "2715" => 2715,
+        "2716" => 2716,
+        "2717" => 2717,
+        "2718" => 2718,
+        "2719" => 2719,
+        "2720" => 2720,
+        "2721" => 2721,
+        "2722" => 2722,
+        "2723" => 2723,
+        "2724" => 2724,
+        "2725" => 2725,
+        "2726" => 2726,
+        "2727" => 2727,
+        "2728" => 2728,
+        "2729" => 2729,
+        "2730" => 2730,
+        "2731" => 2731,
+        "2732" => 2732,
+        "2733" => 2733,
+        "2734" => 2734,
+        "2735" => 2735,
+        "2736" => 2736,
+        "2737" => 2737,
+        "2738" => 2738,
+        "2739" => 2739,
+        "2740" => 2740,
+        "2741" => 2741,
+        "2742" => 2742,
+        "2743" => 2743,
+        "2744" => 2744,
+        "2745" => 2745,
+        "2746" => 2746,
+        "2747" => 2747,
+        "2748" => 2748,
+        "2749" => 2749,
+        "2750" => 2750,
+        "2751" => 2751,
+        "2752" => 2752,
+        "2753" => 2753,
+        "2754" => 2754,
+        "2755" => 2755,
+        "2756" => 2756,
+        "2757" => 2757,
+        "2758" => 2758,
+        "2759" => 2759,
+        "2760" => 2760,
+        "2761" => 2761,
+        "2762" => 2762,
+        "2763" => 2763,
+        "2764" => 2764,
+        "2765" => 2765,
+        "2766" => 2766,
+        "2767" => 2767,
+        "2768" => 2768,
+        "2769" => 2769,
+        "2770" => 2770,
+        "2771" => 2771,
+        "2772" => 2772,
+        "2773" => 2773,
+        "2774" => 2774,
+        "2775" => 2775,
+        "2776" => 2776,
+        "2777" => 2777,
+        "2778" => 2778,
+        "2779" => 2779,
+        "2780" => 2780,
+        "2781" => 2781,
+        "2782" => 2782,
+        "2783" => 2783,
+        "2784" => 2784,
+        "2785" => 2785,
+        "2786" => 2786,
+        "2787" => 2787,
+        "2788" => 2788,
+        "2789" => 2789,
+        "2790" => 2790,
+        "2791" => 2791,
+        "2792" => 2792,
+        "2793" => 2793,
+        "2794" => 2794,
+        "2795" => 2795,
+        "2796" => 2796,
+        "2797" => 2797,
+        "2798" => 2798,
+        "2799" => 2799,
+        "2800" => 2800,
+        "2801" => 2801,
+        "2802" => 2802,
+        "2803" => 2803,
+        "2804" => 2804,
+        "2805" => 2805,
+        "2806" => 2806,
+        "2807" => 2807,
+        "2808" => 2808,
+        "2809" => 2809,
+        "2810" => 2810,
+        "2811" => 2811,
+        "2812" => 2812,
+        "2813" => 2813,
+        "2814" => 2814,
+        "2815" => 2815,
+        "2816" => 2816,
+        "2817" => 2817,
+        "2818" => 2818,
+        "2819" => 2819,
+        "2820" => 2820,
+        "2821" => 2821,
+        "2822" => 2822,
+        "2823" => 2823,
+        "2824" => 2824,
+        "2825" => 2825,
+        "2826" => 2826,
+        "2827" => 2827,
+        "2828" => 2828,
+        "2829" => 2829,
+        "2830" => 2830,
+        "2831" => 2831,
+        "2832" => 2832,
+        "2833" => 2833,
+        "2834" => 2834,
+        "2835" => 2835,
+        "2836" => 2836,
+        "2837" => 2837,
+        "2838" => 2838,
+        "2839" => 2839,
+        "2840" => 2840,
+        "2841" => 2841,
+        "2842" => 2842,
+        "2843" => 2843,
+        "2844" => 2844,
+        "2845" => 2845,
+        "2846" => 2846,
+        "2847" => 2847,
+        "2848" => 2848,
+        "2849" => 2849,
+        "2850" => 2850,
+        "2851" => 2851,
+        "2852" => 2852,
+        "2853" => 2853,
+        "2854" => 2854,
+        "2855" => 2855,
+        "2856" => 2856,
+        "2857" => 2857,
+        "2858" => 2858,
+        "2859" => 2859,
+        "2860" => 2860,
+        "2861" => 2861,
+        "2862" => 2862,
+        "2863" => 2863,
+        "2864" => 2864,
+        "2865" => 2865,
+        "2866" => 2866,
+        "2867" => 2867,
+        "2868" => 2868,
+        "2869" => 2869,
+        "2870" => 2870,
+        "2871" => 2871,
+        "2872" => 2872,
+        "2873" => 2873,
+        "2874" => 2874,
+        "2875" => 2875,
+        "2876" => 2876,
+        "2877" => 2877,
+        "2878" => 2878,
+        "2879" => 2879,
+        "2880" => 2880,
+        "2881" => 2881,
+        "2882" => 2882,
+        "2883" => 2883,
+        "2884" => 2884,
+        "2885" => 2885,
+        "2886" => 2886,
+        "2887" => 2887,
+        "2888" => 2888,
+        "2889" => 2889,
+        "2890" => 2890,
+        "2891" => 2891,
+        "2892" => 2892,
+        "2893" => 2893,
+        "2894" => 2894,
+        "2895" => 2895,
+        "2896" => 2896,
+        "2897" => 2897,
+        "2898" => 2898,
+        "2899" => 2899,
+        "2900" => 2900,
+        "2901" => 2901,
+        "2902" => 2902,
+        "2903" => 2903,
+        "2904" => 2904,
+        "2905" => 2905,
+        "2906" => 2906,
+        "2907" => 2907,
+        "2908" => 2908,
+        "2909" => 2909,
+        "2910" => 2910,
+        "2911" => 2911,
+        "2912" => 2912,
+        "2913" => 2913,
+        "2914" => 2914,
+        "2915" => 2915,
+        "2916" => 2916,
+        "2917" => 2917,
+        "2918" => 2918,
+        "2919" => 2919,
+        "2920" => 2920,
+        "2921" => 2921,
+        "2922" => 2922,
+        "2923" => 2923,
+        "2924" => 2924,
+        "2925" => 2925,
+        "2926" => 2926,
+        "2927" => 2927,
+        "2928" => 2928,
+        "2929" => 2929,
+        "2930" => 2930,
+        "2931" => 2931,
+        "2932" => 2932,
+        "2933" => 2933,
+        "2934" => 2934,
+        "2935" => 2935,
+        "2936" => 2936,
+        "2937" => 2937,
+        "2938" => 2938,
+        "2939" => 2939,
+        "2940" => 2940,
+        "2941" => 2941,
+        "2942" => 2942,
+        "2943" => 2943,
+        "2944" => 2944,
+        "2945" => 2945,
+        "2946" => 2946,
+        "2947" => 2947,
+        "2948" => 2948,
+        "2949" => 2949,
+        "2950" => 2950,
+        "2951" => 2951,
+        "2952" => 2952,
+        "2953" => 2953,
+        "2954" => 2954,
+        "2955" => 2955,
+        "2956" => 2956,
+        "2957" => 2957,
+        "2958" => 2958,
+        "2959" => 2959,
+        "2960" => 2960,
+        "2961" => 2961,
+        "2962" => 2962,
+        "2963" => 2963,
+        "2964" => 2964,
+        "2965" => 2965,
+        "2966" => 2966,
+        "2967" => 2967,
+        "2968" => 2968,
+        "2969" => 2969,
+        "2970" => 2970,
+        "2971" => 2971,
+        "2972" => 2972,
+        "2973" => 2973,
+        "2974" => 2974,
+        "2975" => 2975,
+        "2976" => 2976,
+        "2977" => 2977,
+        "2978" => 2978,
+        "2979" => 2979,
+        "2980" => 2980,
+        "2981" => 2981,
+        "2982" => 2982,
+        "2983" => 2983,
+        "2984" => 2984,
+        "2985" => 2985,
+        "2986" => 2986,
+        "2987" => 2987,
+        "2988" => 2988,
+        "2989" => 2989,
+        "2990" => 2990,
+        "2991" => 2991,
+        "2992" => 2992,
+        "2993" => 2993,
+        "2994" => 2994,
+        "2995" => 2995,
+        "2996" => 2996,
+        "2997" => 2997,
+        "2998" => 2998,
+        "2999" => 2999,
+        "3000" => 3000,
+        "3001" => 3001,
+        "3002" => 3002,
+        "3003" => 3003,
+        "3004" => 3004,
+        "3005" => 3005,
+        "3006" => 3006,
+        "3007" => 3007,
+        "3008" => 3008,
+        "3009" => 3009,
+        "3010" => 3010,
+        "3011" => 3011,
+        "3012" => 3012,
+        "3013" => 3013,
+        "3014" => 3014,
+        "3015" => 3015,
+        "3016" => 3016,
+        "3017" => 3017,
+        "3018" => 3018,
+        "3019" => 3019,
+        "3020" => 3020,
+        "3021" => 3021,
+        "3022" => 3022,
+        "3023" => 3023,
+        "3024" => 3024,
+        "3025" => 3025,
+        "3026" => 3026,
+        "3027" => 3027,
+        "3028" => 3028,
+        "3029" => 3029,
+        "3030" => 3030,
+        "3031" => 3031,
+        "3032" => 3032,
+        "3033" => 3033,
+        "3034" => 3034,
+        "3035" => 3035,
+        "3036" => 3036,
+        "3037" => 3037,
+        "3038" => 3038,
+        "3039" => 3039,
+        "3040" => 3040,
+        "3041" => 3041,
+        "3042" => 3042,
+        "3043" => 3043,
+        "3044" => 3044,
+        "3045" => 3045,
+        "3046" => 3046,
+        "3047" => 3047,
+        "3048" => 3048,
+        "3049" => 3049,
+        "3050" => 3050,
+        "3051" => 3051,
+        "3052" => 3052,
+        "3053" => 3053,
+        "3054" => 3054,
+        "3055" => 3055,
+        "3056" => 3056,
+        "3057" => 3057,
+        "3058" => 3058,
+        "3059" => 3059,
+        "3060" => 3060,
+        "3061" => 3061,
+        "3062" => 3062,
+        "3063" => 3063,
+        "3064" => 3064,
+        "3065" => 3065,
+        "3066" => 3066,
+        "3067" => 3067,
+        "3068" => 3068,
+        "3069" => 3069,
+        "3070" => 3070,
+        "3071" => 3071,
+        "3072" => 3072,
+        "3073" => 3073,
+        "3074" => 3074,
+        "3075" => 3075,
+        "3076" => 3076,
+        "3077" => 3077,
+        "3078" => 3078,
+        "3079" => 3079,
+        "3080" => 3080,
+        "3081" => 3081,
+        "3082" => 3082,
+        "3083" => 3083,
+        "3084" => 3084,
+        "3085" => 3085,
+        "3086" => 3086,
+        "3087" => 3087,
+        "3088" => 3088,
+        "3089" => 3089,
+        "3090" => 3090,
+        "3091" => 3091,
+        "3092" => 3092,
+        "3093" => 3093,
+        "3094" => 3094,
+        "3095" => 3095,
+        "3096" => 3096,
+        "3097" => 3097,
+        "3098" => 3098,
+        "3099" => 3099,
+        "3100" => 3100,
+        "3101" => 3101,
+        "3102" => 3102,
+        "3103" => 3103,
+        "3104" => 3104,
+        "3105" => 3105,
+        "3106" => 3106,
+        "3107" => 3107,
+        "3108" => 3108,
+        "3109" => 3109,
+        "3110" => 3110,
+        "3111" => 3111,
+        "3112" => 3112,
+        "3113" => 3113,
+        "3114" => 3114,
+        "3115" => 3115,
+        "3116" => 3116,
+        "3117" => 3117,
+        "3118" => 3118,
+        "3119" => 3119,
+        "3120" => 3120,
+        "3121" => 3121,
+        "3122" => 3122,
+        "3123" => 3123,
+        "3124" => 3124,
+        "3125" => 3125,
+        "3126" => 3126,
+        "3127" => 3127,
+        "3128" => 3128,
+        "3129" => 3129,
+        "3130" => 3130,
+        "3131" => 3131,
+        "3132" => 3132,
+        "3133" => 3133,
+        "3134" => 3134,
+        "3135" => 3135,
+        "3136" => 3136,
+        "3137" => 3137,
+        "3138" => 3138,
+        "3139" => 3139,
+        "3140" => 3140,
+        "3141" => 3141,
+        "3142" => 3142,
+        "3143" => 3143,
+        "3144" => 3144,
+        "3145" => 3145,
+        "3146" => 3146,
+        "3147" => 3147,
+        "3148" => 3148,
+        "3149" => 3149,
+        "3150" => 3150,
+        "3151" => 3151,
+        "3152" => 3152,
+        "3153" => 3153,
+        "3154" => 3154,
+        "3155" => 3155,
+        "3156" => 3156,
+        "3157" => 3157,
+        "3158" => 3158,
+        "3159" => 3159,
+        "3160" => 3160,
+        "3161" => 3161,
+        "3162" => 3162,
+        "3163" => 3163,
+        "3164" => 3164,
+        "3165" => 3165,
+        "3166" => 3166,
+        "3167" => 3167,
+        "3168" => 3168,
+        "3169" => 3169,
+        "3170" => 3170,
+        "3171" => 3171,
+        "3172" => 3172,
+        "3173" => 3173,
+        "3174" => 3174,
+        "3175" => 3175,
+        "3176" => 3176,
+        "3177" => 3177,
+        "3178" => 3178,
+        "3179" => 3179,
+        "3180" => 3180,
+        "3181" => 3181,
+        "3182" => 3182,
+        "3183" => 3183,
+        "3184" => 3184,
+        "3185" => 3185,
+        "3186" => 3186,
+        "3187" => 3187,
+        "3188" => 3188,
+        "3189" => 3189,
+        "3190" => 3190,
+        "3191" => 3191,
+        "3192" => 3192,
+        "3193" => 3193,
+        "3194" => 3194,
+        "3195" => 3195,
+        "3196" => 3196,
+        "3197" => 3197,
+        "3198" => 3198,
+        "3199" => 3199,
+        "3200" => 3200,
+        "3201" => 3201,
+        "3202" => 3202,
+        "3203" => 3203,
+        "3204" => 3204,
+        "3205" => 3205,
+        "3206" => 3206,
+        "3207" => 3207,
+        "3208" => 3208,
+        "3209" => 3209,
+        "3210" => 3210,
+        "3211" => 3211,
+        "3212" => 3212,
+        "3213" => 3213,
+        "3214" => 3214,
+        "3215" => 3215,
+        "3216" => 3216,
+        "3217" => 3217,
+        "3218" => 3218,
+        "3219" => 3219,
+        "3220" => 3220,
+        "3221" => 3221,
+        "3222" => 3222,
+        "3223" => 3223,
+        "3224" => 3224,
+        "3225" => 3225,
+        "3226" => 3226,
+        "3227" => 3227,
+        "3228" => 3228,
+        "3229" => 3229,
+        "3230" => 3230,
+        "3231" => 3231,
+        "3232" => 3232,
+        "3233" => 3233,
+        "3234" => 3234,
+        "3235" => 3235,
+        "3236" => 3236,
+        "3237" => 3237,
+        "3238" => 3238,
+        "3239" => 3239,
+        "3240" => 3240,
+        "3241" => 3241,
+        "3242" => 3242,
+        "3243" => 3243,
+        "3244" => 3244,
+        "3245" => 3245,
+        "3246" => 3246,
+        "3247" => 3247,
+        "3248" => 3248,
+        "3249" => 3249,
+        "3250" => 3250,
+        "3251" => 3251,
+        "3252" => 3252,
+        "3253" => 3253,
+        "3254" => 3254,
+        "3255" => 3255,
+        "3256" => 3256,
+        "3257" => 3257,
+        "3258" => 3258,
+        "3259" => 3259,
+        "3260" => 3260,
+        "3261" => 3261,
+        "3262" => 3262,
+        "3263" => 3263,
+        "3264" => 3264,
+        "3265" => 3265,
+        "3266" => 3266,
+        "3267" => 3267,
+        "3268" => 3268,
+        "3269" => 3269,
+        "3270" => 3270,
+        "3271" => 3271,
+        "3272" => 3272,
+        "3273" => 3273,
+        "3274" => 3274,
+        "3275" => 3275,
+        "3276" => 3276,
+        "3277" => 3277,
+        "3278" => 3278,
+        "3279" => 3279,
+        "3280" => 3280,
+        "3281" => 3281,
+        "3282" => 3282,
+        "3283" => 3283,
+        "3284" => 3284,
+        "3285" => 3285,
+        "3286" => 3286,
+        "3287" => 3287,
+        "3288" => 3288,
+        "3289" => 3289,
+        "3290" => 3290,
+        "3291" => 3291,
+        "3292" => 3292,
+        "3293" => 3293,
+        "3294" => 3294,
+        "3295" => 3295,
+        "3296" => 3296,
+        "3297" => 3297,
+        "3298" => 3298,
+        "3299" => 3299,
+        "3300" => 3300,
+        "3301" => 3301,
+        "3302" => 3302,
+        "3303" => 3303,
+        "3304" => 3304,
+        "3305" => 3305,
+        "3306" => 3306,
+        "3307" => 3307,
+        "3308" => 3308,
+        "3309" => 3309,
+        "3310" => 3310,
+        "3311" => 3311,
+        "3312" => 3312,
+        "3313" => 3313,
+        "3314" => 3314,
+        "3315" => 3315,
+        "3316" => 3316,
+        "3317" => 3317,
+        "3318" => 3318,
+        "3319" => 3319,
+        "3320" => 3320,
+        "3321" => 3321,
+        "3322" => 3322,
+        "3323" => 3323,
+        "3324" => 3324,
+        "3325" => 3325,
+        "3326" => 3326,
+        "3327" => 3327,
+        "3328" => 3328,
+        "3329" => 3329,
+        "3330" => 3330,
+        "3331" => 3331,
+        "3332" => 3332,
+        "3333" => 3333,
+        "3334" => 3334,
+        "3335" => 3335,
+        "3336" => 3336,
+        "3337" => 3337,
+        "3338" => 3338,
+        "3339" => 3339,
+        "3340" => 3340,
+        "3341" => 3341,
+        "3342" => 3342,
+        "3343" => 3343,
+        "3344" => 3344,
+        "3345" => 3345,
+        "3346" => 3346,
+        "3347" => 3347,
+        "3348" => 3348,
+        "3349" => 3349,
+        "3350" => 3350,
+        "3351" => 3351,
+        "3352" => 3352,
+        "3353" => 3353,
+        "3354" => 3354,
+        "3355" => 3355,
+        "3356" => 3356,
+        "3357" => 3357,
+        "3358" => 3358,
+        "3359" => 3359,
+        "3360" => 3360,
+        "3361" => 3361,
+        "3362" => 3362,
+        "3363" => 3363,
+        "3364" => 3364,
+        "3365" => 3365,
+        "3366" => 3366,
+        "3367" => 3367,
+        "3368" => 3368,
+        "3369" => 3369,
+        "3370" => 3370,
+        "3371" => 3371,
+        "3372" => 3372,
+        "3373" => 3373,
+        "3374" => 3374,
+        "3375" => 3375,
+        "3376" => 3376,
+        "3377" => 3377,
+        "3378" => 3378,
+        "3379" => 3379,
+        "3380" => 3380,
+        "3381" => 3381,
+        "3382" => 3382,
+        "3383" => 3383,
+        "3384" => 3384,
+        "3385" => 3385,
+        "3386" => 3386,
+        "3387" => 3387,
+        "3388" => 3388,
+        "3389" => 3389,
+        "3390" => 3390,
+        "3391" => 3391,
+        "3392" => 3392,
+        "3393" => 3393,
+        "3394" => 3394,
+        "3395" => 3395,
+        "3396" => 3396,
+        "3397" => 3397,
+        "3398" => 3398,
+        "3399" => 3399,
+        "3400" => 3400,
+        "3401" => 3401,
+        "3402" => 3402,
+        "3403" => 3403,
+        "3404" => 3404,
+        "3405" => 3405,
+        "3406" => 3406,
+        "3407" => 3407,
+        "3408" => 3408,
+        "3409" => 3409,
+        "3410" => 3410,
+        "3411" => 3411,
+        "3412" => 3412,
+        "3413" => 3413,
+        "3414" => 3414,
+        "3415" => 3415,
+        "3416" => 3416,
+        "3417" => 3417,
+        "3418" => 3418,
+        "3419" => 3419,
+        "3420" => 3420,
+        "3421" => 3421,
+        "3422" => 3422,
+        "3423" => 3423,
+        "3424" => 3424,
+        "3425" => 3425,
+        "3426" => 3426,
+        "3427" => 3427,
+        "3428" => 3428,
+        "3429" => 3429,
+        "3430" => 3430,
+        "3431" => 3431,
+        "3432" => 3432,
+        "3433" => 3433,
+        "3434" => 3434,
+        "3435" => 3435,
+        "3436" => 3436,
+        "3437" => 3437,
+        "3438" => 3438,
+        "3439" => 3439,
+        "3440" => 3440,
+        "3441" => 3441,
+        "3442" => 3442,
+        "3443" => 3443,
+        "3444" => 3444,
+        "3445" => 3445,
+        "3446" => 3446,
+        "3447" => 3447,
+        "3448" => 3448,
+        "3449" => 3449,
+        "3450" => 3450,
+        "3451" => 3451,
+        "3452" => 3452,
+        "3453" => 3453,
+        "3454" => 3454,
+        "3455" => 3455,
+        "3456" => 3456,
+        "3457" => 3457,
+        "3458" => 3458,
+        "3459" => 3459,
+        "3460" => 3460,
+        "3461" => 3461,
+        "3462" => 3462,
+        "3463" => 3463,
+        "3464" => 3464,
+        "3465" => 3465,
+        "3466" => 3466,
+        "3467" => 3467,
+        "3468" => 3468,
+        "3469" => 3469,
+        "3470" => 3470,
+        "3471" => 3471,
+        "3472" => 3472,
+        "3473" => 3473,
+        "3474" => 3474,
+        "3475" => 3475,
+        "3476" => 3476,
+        "3477" => 3477,
+        "3478" => 3478,
+        "3479" => 3479,
+        "3480" => 3480,
+        "3481" => 3481,
+        "3482" => 3482,
+        "3483" => 3483,
+        "3484" => 3484,
+        "3485" => 3485,
+        "3486" => 3486,
+        "3487" => 3487,
+        "3488" => 3488,
+        "3489" => 3489,
+        "3490" => 3490,
+        "3491" => 3491,
+        "3492" => 3492,
+        "3493" => 3493,
+        "3494" => 3494,
+        "3495" => 3495,
+        "3496" => 3496,
+        "3497" => 3497,
+        "3498" => 3498,
+        "3499" => 3499,
+        "3500" => 3500,
+        "3501" => 3501,
+        "3502" => 3502,
+        "3503" => 3503,
+        "3504" => 3504,
+        "3505" => 3505,
+        "3506" => 3506,
+        "3507" => 3507,
+        "3508" => 3508,
+        "3509" => 3509,
+        "3510" => 3510,
+        "3511" => 3511,
+        "3512" => 3512,
+        "3513" => 3513,
+        "3514" => 3514,
+        "3515" => 3515,
+        "3516" => 3516,
+        "3517" => 3517,
+        "3518" => 3518,
+        "3519" => 3519,
+        "3520" => 3520,
+        "3521" => 3521,
+        "3522" => 3522,
+        "3523" => 3523,
+        "3524" => 3524,
+        "3525" => 3525,
+        "3526" => 3526,
+        "3527" => 3527,
+        "3528" => 3528,
+        "3529" => 3529,
+        "3530" => 3530,
+        "3531" => 3531,
+        "3532" => 3532,
+        "3533" => 3533,
+        "3534" => 3534,
+        "3535" => 3535,
+        "3536" => 3536,
+        "3537" => 3537,
+        "3538" => 3538,
+        "3539" => 3539,
+        "3540" => 3540,
+        "3541" => 3541,
+        "3542" => 3542,
+        "3543" => 3543,
+        "3544" => 3544,
+        "3545" => 3545,
+        "3546" => 3546,
+        "3547" => 3547,
+        "3548" => 3548,
+        "3549" => 3549,
+        "3550" => 3550,
+        "3551" => 3551,
+        "3552" => 3552,
+        "3553" => 3553,
+        "3554" => 3554,
+        "3555" => 3555,
+        "3556" => 3556,
+        "3557" => 3557,
+        "3558" => 3558,
+        "3559" => 3559,
+        "3560" => 3560,
+        "3561" => 3561,
+        "3562" => 3562,
+        "3563" => 3563,
+        "3564" => 3564,
+        "3565" => 3565,
+        "3566" => 3566,
+        "3567" => 3567,
+        "3568" => 3568,
+        "3569" => 3569,
+        "3570" => 3570,
+        "3571" => 3571,
+        "3572" => 3572,
+        "3573" => 3573,
+        "3574" => 3574,
+        "3575" => 3575,
+        "3576" => 3576,
+        "3577" => 3577,
+        "3578" => 3578,
+        "3579" => 3579,
+        "3580" => 3580,
+        "3581" => 3581,
+        "3582" => 3582,
+        "3583" => 3583,
+        "3584" => 3584,
+        "3585" => 3585,
+        "3586" => 3586,
+        "3587" => 3587,
+        "3588" => 3588,
+        "3589" => 3589,
+        "3590" => 3590,
+        "3591" => 3591,
+        "3592" => 3592,
+        "3593" => 3593,
+        "3594" => 3594,
+        "3595" => 3595,
+        "3596" => 3596,
+        "3597" => 3597,
+        "3598" => 3598,
+        "3599" => 3599,
+        "3600" => 3600,
+        "3601" => 3601,
+        "3602" => 3602,
+        "3603" => 3603,
+        "3604" => 3604,
+        "3605" => 3605,
+        "3606" => 3606,
+        "3607" => 3607,
+        "3608" => 3608,
+        "3609" => 3609,
+        "3610" => 3610,
+        "3611" => 3611,
+        "3612" => 3612,
+        "3613" => 3613,
+        "3614" => 3614,
+        "3615" => 3615,
+        "3616" => 3616,
+        "3617" => 3617,
+        "3618" => 3618,
+        "3619" => 3619,
+        "3620" => 3620,
+        "3621" => 3621,
+        "3622" => 3622,
+        "3623" => 3623,
+        "3624" => 3624,
+        "3625" => 3625,
+        "3626" => 3626,
+        "3627" => 3627,
+        "3628" => 3628,
+        "3629" => 3629,
+        "3630" => 3630,
+        "3631" => 3631,
+        "3632" => 3632,
+        "3633" => 3633,
+        "3634" => 3634,
+        "3635" => 3635,
+        "3636" => 3636,
+        "3637" => 3637,
+        "3638" => 3638,
+        "3639" => 3639,
+        "3640" => 3640,
+        "3641" => 3641,
+        "3642" => 3642,
+        "3643" => 3643,
+        "3644" => 3644,
+        "3645" => 3645,
+        "3646" => 3646,
+        "3647" => 3647,
+        "3648" => 3648,
+        "3649" => 3649,
+        "3650" => 3650,
+        "3651" => 3651,
+        "3652" => 3652,
+        "3653" => 3653,
+        "3654" => 3654,
+        "3655" => 3655,
+        "3656" => 3656,
+        "3657" => 3657,
+        "3658" => 3658,
+        "3659" => 3659,
+        "3660" => 3660,
+        "3661" => 3661,
+        "3662" => 3662,
+        "3663" => 3663,
+        "3664" => 3664,
+        "3665" => 3665,
+        "3666" => 3666,
+        "3667" => 3667,
+        "3668" => 3668,
+        "3669" => 3669,
+        "3670" => 3670,
+        "3671" => 3671,
+        "3672" => 3672,
+        "3673" => 3673,
+        "3674" => 3674,
+        "3675" => 3675,
+        "3676" => 3676,
+        "3677" => 3677,
+        "3678" => 3678,
+        "3679" => 3679,
+        "3680" => 3680,
+        "3681" => 3681,
+        "3682" => 3682,
+        "3683" => 3683,
+        "3684" => 3684,
+        "3685" => 3685,
+        "3686" => 3686,
+        "3687" => 3687,
+        "3688" => 3688,
+        "3689" => 3689,
+        "3690" => 3690,
+        "3691" => 3691,
+        "3692" => 3692,
+        "3693" => 3693,
+        "3694" => 3694,
+        "3695" => 3695,
+        "3696" => 3696,
+        "3697" => 3697,
+        "3698" => 3698,
+        "3699" => 3699,
+        "3700" => 3700,
+        "3701" => 3701,
+        "3702" => 3702,
+        "3703" => 3703,
+        "3704" => 3704,
+        "3705" => 3705,
+        "3706" => 3706,
+        "3707" => 3707,
+        "3708" => 3708,
+        "3709" => 3709,
+        "3710" => 3710,
+        "3711" => 3711,
+        "3712" => 3712,
+        "3713" => 3713,
+        "3714" => 3714,
+        "3715" => 3715,
+        "3716" => 3716,
+        "3717" => 3717,
+        "3718" => 3718,
+        "3719" => 3719,
+        "3720" => 3720,
+        "3721" => 3721,
+        "3722" => 3722,
+        "3723" => 3723,
+        "3724" => 3724,
+        "3725" => 3725,
+        "3726" => 3726,
+        "3727" => 3727,
+        "3728" => 3728,
+        "3729" => 3729,
+        "3730" => 3730,
+        "3731" => 3731,
+        "3732" => 3732,
+        "3733" => 3733,
+        "3734" => 3734,
+        "3735" => 3735,
+        "3736" => 3736,
+        "3737" => 3737,
+        "3738" => 3738,
+        "3739" => 3739,
+        "3740" => 3740,
+        "3741" => 3741,
+        "3742" => 3742,
+        "3743" => 3743,
+        "3744" => 3744,
+        "3745" => 3745,
+        "3746" => 3746,
+        "3747" => 3747,
+        "3748" => 3748,
+        "3749" => 3749,
+        "3750" => 3750,
+        "3751" => 3751,
+        "3752" => 3752,
+        "3753" => 3753,
+        "3754" => 3754,
+        "3755" => 3755,
+        "3756" => 3756,
+        "3757" => 3757,
+        "3758" => 3758,
+        "3759" => 3759,
+        "3760" => 3760,
+        "3761" => 3761,
+        "3762" => 3762,
+        "3763" => 3763,
+        "3764" => 3764,
+        "3765" => 3765,
+        "3766" => 3766,
+        "3767" => 3767,
+        "3768" => 3768,
+        "3769" => 3769,
+        "3770" => 3770,
+        "3771" => 3771,
+        "3772" => 3772,
+        "3773" => 3773,
+        "3774" => 3774,
+        "3775" => 3775,
+        "3776" => 3776,
+        "3777" => 3777,
+        "3778" => 3778,
+        "3779" => 3779,
+        "3780" => 3780,
+        "3781" => 3781,
+        "3782" => 3782,
+        "3783" => 3783,
+        "3784" => 3784,
+        "3785" => 3785,
+        "3786" => 3786,
+        "3787" => 3787,
+        "3788" => 3788,
+        "3789" => 3789,
+        "3790" => 3790,
+        "3791" => 3791,
+        "3792" => 3792,
+        "3793" => 3793,
+        "3794" => 3794,
+        "3795" => 3795,
+        "3796" => 3796,
+        "3797" => 3797,
+        "3798" => 3798,
+        "3799" => 3799,
+        "3800" => 3800,
+        "3801" => 3801,
+        "3802" => 3802,
+        "3803" => 3803,
+        "3804" => 3804,
+        "3805" => 3805,
+        "3806" => 3806,
+        "3807" => 3807,
+        "3808" => 3808,
+        "3809" => 3809,
+        "3810" => 3810,
+        "3811" => 3811,
+        "3812" => 3812,
+        "3813" => 3813,
+        "3814" => 3814,
+        "3815" => 3815,
+        "3816" => 3816,
+        "3817" => 3817,
+        "3818" => 3818,
+        "3819" => 3819,
+        "3820" => 3820,
+        "3821" => 3821,
+        "3822" => 3822,
+        "3823" => 3823,
+        "3824" => 3824,
+        "3825" => 3825,
+        "3826" => 3826,
+        "3827" => 3827,
+        "3828" => 3828,
+        "3829" => 3829,
+        "3830" => 3830,
+        "3831" => 3831,
+        "3832" => 3832,
+        "3833" => 3833,
+        "3834" => 3834,
+        "3835" => 3835,
+        "3836" => 3836,
+        "3837" => 3837,
+        "3838" => 3838,
+        "3839" => 3839,
+        "3840" => 3840,
+        "3841" => 3841,
+        "3842" => 3842,
+        "3843" => 3843,
+        "3844" => 3844,
+        "3845" => 3845,
+        "3846" => 3846,
+        "3847" => 3847,
+        "3848" => 3848,
+        "3849" => 3849,
+        "3850" => 3850,
+        "3851" => 3851,
+        "3852" => 3852,
+        "3853" => 3853,
+        "3854" => 3854,
+        "3855" => 3855,
+        "3856" => 3856,
+        "3857" => 3857,
+        "3858" => 3858,
+        "3859" => 3859,
+        "3860" => 3860,
+        "3861" => 3861,
+        "3862" => 3862,
+        "3863" => 3863,
+        "3864" => 3864,
+        "3865" => 3865,
+        "3866" => 3866,
+        "3867" => 3867,
+        "3868" => 3868,
+        "3869" => 3869,
+        "3870" => 3870,
+        "3871" => 3871,
+        "3872" => 3872,
+        "3873" => 3873,
+        "3874" => 3874,
+        "3875" => 3875,
+        "3876" => 3876,
+        "3877" => 3877,
+        "3878" => 3878,
+        "3879" => 3879,
+        "3880" => 3880,
+        "3881" => 3881,
+        "3882" => 3882,
+        "3883" => 3883,
+        "3884" => 3884,
+        "3885" => 3885,
+        "3886" => 3886,
+        "3887" => 3887,
+        "3888" => 3888,
+        "3889" => 3889,
+        "3890" => 3890,
+        "3891" => 3891,
+        "3892" => 3892,
+        "3893" => 3893,
+        "3894" => 3894,
+        "3895" => 3895,
+        "3896" => 3896,
+        "3897" => 3897,
+        "3898" => 3898,
+        "3899" => 3899,
+        "3900" => 3900,
+        "3901" => 3901,
+        "3902" => 3902,
+        "3903" => 3903,
+        "3904" => 3904,
+        "3905" => 3905,
+        "3906" => 3906,
+        "3907" => 3907,
+        "3908" => 3908,
+        "3909" => 3909,
+        "3910" => 3910,
+        "3911" => 3911,
+        "3912" => 3912,
+        "3913" => 3913,
+        "3914" => 3914,
+        "3915" => 3915,
+        "3916" => 3916,
+        "3917" => 3917,
+        "3918" => 3918,
+        "3919" => 3919,
+        "3920" => 3920,
+        "3921" => 3921,
+        "3922" => 3922,
+        "3923" => 3923,
+        "3924" => 3924,
+        "3925" => 3925,
+        "3926" => 3926,
+        "3927" => 3927,
+        "3928" => 3928,
+        "3929" => 3929,
+        "3930" => 3930,
+        "3931" => 3931,
+        "3932" => 3932,
+        "3933" => 3933,
+        "3934" => 3934,
+        "3935" => 3935,
+        "3936" => 3936,
+        "3937" => 3937,
+        "3938" => 3938,
+        "3939" => 3939,
+        "3940" => 3940,
+        "3941" => 3941,
+        "3942" => 3942,
+        "3943" => 3943,
+        "3944" => 3944,
+        "3945" => 3945,
+        "3946" => 3946,
+        "3947" => 3947,
+        "3948" => 3948,
+        "3949" => 3949,
+        "3950" => 3950,
+        "3951" => 3951,
+        "3952" => 3952,
+        "3953" => 3953,
+        "3954" => 3954,
+        "3955" => 3955,
+        "3956" => 3956,
+        "3957" => 3957,
+        "3958" => 3958,
+        "3959" => 3959,
+        "3960" => 3960,
+        "3961" => 3961,
+        "3962" => 3962,
+        "3963" => 3963,
+        "3964" => 3964,
+        "3965" => 3965,
+        "3966" => 3966,
+        "3967" => 3967,
+        "3968" => 3968,
+        "3969" => 3969,
+        "3970" => 3970,
+        "3971" => 3971,
+        "3972" => 3972,
+        "3973" => 3973,
+        "3974" => 3974,
+        "3975" => 3975,
+        "3976" => 3976,
+        "3977" => 3977,
+        "3978" => 3978,
+        "3979" => 3979,
+        "3980" => 3980,
+        "3981" => 3981,
+        "3982" => 3982,
+        "3983" => 3983,
+        "3984" => 3984,
+        "3985" => 3985,
+        "3986" => 3986,
+        "3987" => 3987,
+        "3988" => 3988,
+        "3989" => 3989,
+        "3990" => 3990,
+        "3991" => 3991,
+        "3992" => 3992,
+        "3993" => 3993,
+        "3994" => 3994,
+        "3995" => 3995,
+        "3996" => 3996,
+        "3997" => 3997,
+        "3998" => 3998,
+        "3999" => 3999,
+        "4000" => 4000,
+        "4001" => 4001,
+        "4002" => 4002,
+        "4003" => 4003,
+        "4004" => 4004,
+        "4005" => 4005,
+        "4006" => 4006,
+        "4007" => 4007,
+        "4008" => 4008,
+        "4009" => 4009,
+        "4010" => 4010,
+        "4011" => 4011,
+        "4012" => 4012,
+        "4013" => 4013,
+        "4014" => 4014,
+        "4015" => 4015,
+        "4016" => 4016,
+        "4017" => 4017,
+        "4018" => 4018,
+        "4019" => 4019,
+        "4020" => 4020,
+        "4021" => 4021,
+        "4022" => 4022,
+        "4023" => 4023,
+        "4024" => 4024,
+        "4025" => 4025,
+        "4026" => 4026,
+        "4027" => 4027,
+        "4028" => 4028,
+        "4029" => 4029,
+        "4030" => 4030,
+        "4031" => 4031,
+        "4032" => 4032,
+        "4033" => 4033,
+        "4034" => 4034,
+        "4035" => 4035,
+        "4036" => 4036,
+        "4037" => 4037,
+        "4038" => 4038,
+        "4039" => 4039,
+        "4040" => 4040,
+        "4041" => 4041,
+        "4042" => 4042,
+        "4043" => 4043,
+        "4044" => 4044,
+        "4045" => 4045,
+        "4046" => 4046,
+        "4047" => 4047,
+        "4048" => 4048,
+        "4049" => 4049,
+        "4050" => 4050,
+        "4051" => 4051,
+        "4052" => 4052,
+        "4053" => 4053,
+        "4054" => 4054,
+        "4055" => 4055,
+        "4056" => 4056,
+        "4057" => 4057,
+        "4058" => 4058,
+        "4059" => 4059,
+        "4060" => 4060,
+        "4061" => 4061,
+        "4062" => 4062,
+        "4063" => 4063,
+        "4064" => 4064,
+        "4065" => 4065,
+        "4066" => 4066,
+        "4067" => 4067,
+        "4068" => 4068,
+        "4069" => 4069,
+        "4070" => 4070,
+        "4071" => 4071,
+        "4072" => 4072,
+        "4073" => 4073,
+        "4074" => 4074,
+        "4075" => 4075,
+        "4076" => 4076,
+        "4077" => 4077,
+        "4078" => 4078,
+        "4079" => 4079,
+        "4080" => 4080,
+        "4081" => 4081,
+        "4082" => 4082,
+        "4083" => 4083,
+        "4084" => 4084,
+        "4085" => 4085,
+        "4086" => 4086,
+        "4087" => 4087,
+        "4088" => 4088,
+        "4089" => 4089,
+        "4090" => 4090,
+        "4091" => 4091,
+        "4092" => 4092,
+        "4093" => 4093,
+        "4094" => 4094,
+        "4095" => 4095,
+        "4096" => 4096,
+        "4097" => 4097,
+        "4098" => 4098,
+        "4099" => 4099,
+        "4100" => 4100,
+        "4101" => 4101,
+        "4102" => 4102,
+        "4103" => 4103,
+        "4104" => 4104,
+        "4105" => 4105,
+        "4106" => 4106,
+        "4107" => 4107,
+        "4108" => 4108,
+        "4109" => 4109,
+        "4110" => 4110,
+        "4111" => 4111,
+        "4112" => 4112,
+        "4113" => 4113,
+        "4114" => 4114,
+        "4115" => 4115,
+        "4116" => 4116,
+        "4117" => 4117,
+        "4118" => 4118,
+        "4119" => 4119,
+        "4120" => 4120,
+        "4121" => 4121,
+        "4122" => 4122,
+        "4123" => 4123,
+        "4124" => 4124,
+        "4125" => 4125,
+        "4126" => 4126,
+        "4127" => 4127,
+        "4128" => 4128,
+        "4129" => 4129,
+        "4130" => 4130,
+        "4131" => 4131,
+        "4132" => 4132,
+        "4133" => 4133,
+        "4134" => 4134,
+        "4135" => 4135,
+        "4136" => 4136,
+        "4137" => 4137,
+        "4138" => 4138,
+        "4139" => 4139,
+        "4140" => 4140,
+        "4141" => 4141,
+        "4142" => 4142,
+        "4143" => 4143,
+        "4144" => 4144,
+        "4145" => 4145,
+        "4146" => 4146,
+        "4147" => 4147,
+        "4148" => 4148,
+        "4149" => 4149,
+        "4150" => 4150,
+        "4151" => 4151,
+        "4152" => 4152,
+        "4153" => 4153,
+        "4154" => 4154,
+        "4155" => 4155,
+        "4156" => 4156,
+        "4157" => 4157,
+        "4158" => 4158,
+        "4159" => 4159,
+        "4160" => 4160,
+        "4161" => 4161,
+        "4162" => 4162,
+        "4163" => 4163,
+        "4164" => 4164,
+        "4165" => 4165,
+        "4166" => 4166,
+        "4167" => 4167,
+        "4168" => 4168,
+        "4169" => 4169,
+        "4170" => 4170,
+        "4171" => 4171,
+        "4172" => 4172,
+        "4173" => 4173,
+        "4174" => 4174,
+        "4175" => 4175,
+        "4176" => 4176,
+        "4177" => 4177,
+        "4178" => 4178,
+        "4179" => 4179,
+        "4180" => 4180,
+        "4181" => 4181,
+        "4182" => 4182,
+        "4183" => 4183,
+        "4184" => 4184,
+        "4185" => 4185,
+        "4186" => 4186,
+        "4187" => 4187,
+        "4188" => 4188,
+        "4189" => 4189,
+        "4190" => 4190,
+        "4191" => 4191,
+        "4192" => 4192,
+        "4193" => 4193,
+        "4194" => 4194,
+        "4195" => 4195,
+        "4196" => 4196,
+        "4197" => 4197,
+        "4198" => 4198,
+        "4199" => 4199,
+        "4200" => 4200,
+        "4201" => 4201,
+        "4202" => 4202,
+        "4203" => 4203,
+        "4204" => 4204,
+        "4205" => 4205,
+        "4206" => 4206,
+        "4207" => 4207,
+        "4208" => 4208,
+        "4209" => 4209,
+        "4210" => 4210,
+        "4211" => 4211,
+        "4212" => 4212,
+        "4213" => 4213,
+        "4214" => 4214,
+        "4215" => 4215,
+        "4216" => 4216,
+        "4217" => 4217,
+        "4218" => 4218,
+        "4219" => 4219,
+        "4220" => 4220,
+        "4221" => 4221,
+        "4222" => 4222,
+        "4223" => 4223,
+        "4224" => 4224,
+        "4225" => 4225,
+        "4226" => 4226,
+        "4227" => 4227,
+        "4228" => 4228,
+        "4229" => 4229,
+        "4230" => 4230,
+        "4231" => 4231,
+        "4232" => 4232,
+        "4233" => 4233,
+        "4234" => 4234,
+        "4235" => 4235,
+        "4236" => 4236,
+        "4237" => 4237,
+        "4238" => 4238,
+        "4239" => 4239,
+        "4240" => 4240,
+        "4241" => 4241,
+        "4242" => 4242,
+        "4243" => 4243,
+        "4244" => 4244,
+        "4245" => 4245,
+        "4246" => 4246,
+        "4247" => 4247,
+        "4248" => 4248,
+        "4249" => 4249,
+        "4250" => 4250,
+        "4251" => 4251,
+        "4252" => 4252,
+        "4253" => 4253,
+        "4254" => 4254,
+        "4255" => 4255,
+        "4256" => 4256,
+        "4257" => 4257,
+        "4258" => 4258,
+        "4259" => 4259,
+        "4260" => 4260,
+        "4261" => 4261,
+        "4262" => 4262,
+        "4263" => 4263,
+        "4264" => 4264,
+        "4265" => 4265,
+        "4266" => 4266,
+        "4267" => 4267,
+        "4268" => 4268,
+        "4269" => 4269,
+        "4270" => 4270,
+        "4271" => 4271,
+        "4272" => 4272,
+        "4273" => 4273,
+        "4274" => 4274,
+        "4275" => 4275,
+        "4276" => 4276,
+        "4277" => 4277,
+        "4278" => 4278,
+        "4279" => 4279,
+        "4280" => 4280,
+        "4281" => 4281,
+        "4282" => 4282,
+        "4283" => 4283,
+        "4284" => 4284,
+        "4285" => 4285,
+        "4286" => 4286,
+        "4287" => 4287,
+        "4288" => 4288,
+        "4289" => 4289,
+        "4290" => 4290,
+        "4291" => 4291,
+        "4292" => 4292,
+        "4293" => 4293,
+        "4294" => 4294,
+        "4295" => 4295,
+        "4296" => 4296,
+        "4297" => 4297,
+        "4298" => 4298,
+        "4299" => 4299,
+        "4300" => 4300,
+        "4301" => 4301,
+        "4302" => 4302,
+        "4303" => 4303,
+        "4304" => 4304,
+        "4305" => 4305,
+        "4306" => 4306,
+        "4307" => 4307,
+        "4308" => 4308,
+        "4309" => 4309,
+        "4310" => 4310,
+        "4311" => 4311,
+        "4312" => 4312,
+        "4313" => 4313,
+        "4314" => 4314,
+        "4315" => 4315,
+        "4316" => 4316,
+        "4317" => 4317,
+        "4318" => 4318,
+        "4319" => 4319,
+        "4320" => 4320,
+        "4321" => 4321,
+        "4322" => 4322,
+        "4323" => 4323,
+        "4324" => 4324,
+        "4325" => 4325,
+        "4326" => 4326,
+        "4327" => 4327,
+        "4328" => 4328,
+        "4329" => 4329,
+        "4330" => 4330,
+        "4331" => 4331,
+        "4332" => 4332,
+        "4333" => 4333,
+        "4334" => 4334,
+        "4335" => 4335,
+        "4336" => 4336,
+        "4337" => 4337,
+        "4338" => 4338,
+        "4339" => 4339,
+        "4340" => 4340,
+        "4341" => 4341,
+        "4342" => 4342,
+        "4343" => 4343,
+        "4344" => 4344,
+        "4345" => 4345,
+        "4346" => 4346,
+        "4347" => 4347,
+        "4348" => 4348,
+        "4349" => 4349,
+        "4350" => 4350,
+        "4351" => 4351,
+        "4352" => 4352,
+        "4353" => 4353,
+        "4354" => 4354,
+        "4355" => 4355,
+        "4356" => 4356,
+        "4357" => 4357,
+        "4358" => 4358,
+        "4359" => 4359,
+        "4360" => 4360,
+        "4361" => 4361,
+        "4362" => 4362,
+        "4363" => 4363,
+        "4364" => 4364,
+        "4365" => 4365,
+        "4366" => 4366,
+        "4367" => 4367,
+        "4368" => 4368,
+        "4369" => 4369,
+        "4370" => 4370,
+        "4371" => 4371,
+        "4372" => 4372,
+        "4373" => 4373,
+        "4374" => 4374,
+        "4375" => 4375,
+        "4376" => 4376,
+        "4377" => 4377,
+        "4378" => 4378,
+        "4379" => 4379,
+        "4380" => 4380,
+        "4381" => 4381,
+        "4382" => 4382,
+        "4383" => 4383,
+        "4384" => 4384,
+        "4385" => 4385,
+        "4386" => 4386,
+        "4387" => 4387,
+        "4388" => 4388,
+        "4389" => 4389,
+        "4390" => 4390,
+        "4391" => 4391,
+        "4392" => 4392,
+        "4393" => 4393,
+        "4394" => 4394,
+        "4395" => 4395,
+        "4396" => 4396,
+        "4397" => 4397,
+        "4398" => 4398,
+        "4399" => 4399,
+        "4400" => 4400,
+        "4401" => 4401,
+        "4402" => 4402,
+        "4403" => 4403,
+        "4404" => 4404,
+        "4405" => 4405,
+        "4406" => 4406,
+        "4407" => 4407,
+        "4408" => 4408,
+        "4409" => 4409,
+        "4410" => 4410,
+        "4411" => 4411,
+        "4412" => 4412,
+        "4413" => 4413,
+        "4414" => 4414,
+        "4415" => 4415,
+        "4416" => 4416,
+        "4417" => 4417,
+        "4418" => 4418,
+        "4419" => 4419,
+        "4420" => 4420,
+        "4421" => 4421,
+        "4422" => 4422,
+        "4423" => 4423,
+        "4424" => 4424,
+        "4425" => 4425,
+        "4426" => 4426,
+        "4427" => 4427,
+        "4428" => 4428,
+        "4429" => 4429,
+        "4430" => 4430,
+        "4431" => 4431,
+        "4432" => 4432,
+        "4433" => 4433,
+        "4434" => 4434,
+        "4435" => 4435,
+        "4436" => 4436,
+        "4437" => 4437,
+        "4438" => 4438,
+        "4439" => 4439,
+        "4440" => 4440,
+        "4441" => 4441,
+        "4442" => 4442,
+        "4443" => 4443,
+        "4444" => 4444,
+        "4445" => 4445,
+        "4446" => 4446,
+        "4447" => 4447,
+        "4448" => 4448,
+        "4449" => 4449,
+        "4450" => 4450,
+        "4451" => 4451,
+        "4452" => 4452,
+        "4453" => 4453,
+        "4454" => 4454,
+        "4455" => 4455,
+        "4456" => 4456,
+        "4457" => 4457,
+        "4458" => 4458,
+        "4459" => 4459,
+        "4460" => 4460,
+        "4461" => 4461,
+        "4462" => 4462,
+        "4463" => 4463,
+        "4464" => 4464,
+        "4465" => 4465,
+        "4466" => 4466,
+        "4467" => 4467,
+        "4468" => 4468,
+        "4469" => 4469,
+        "4470" => 4470,
+        "4471" => 4471,
+        "4472" => 4472,
+        "4473" => 4473,
+        "4474" => 4474,
+        "4475" => 4475,
+        "4476" => 4476,
+        "4477" => 4477,
+        "4478" => 4478,
+        "4479" => 4479,
+        "4480" => 4480,
+        "4481" => 4481,
+        "4482" => 4482,
+        "4483" => 4483,
+        "4484" => 4484,
+        "4485" => 4485,
+        "4486" => 4486,
+        "4487" => 4487,
+        "4488" => 4488,
+        "4489" => 4489,
+        "4490" => 4490,
+        "4491" => 4491,
+        "4492" => 4492,
+        "4493" => 4493,
+        "4494" => 4494,
+        "4495" => 4495,
+        "4496" => 4496,
+        "4497" => 4497,
+        "4498" => 4498,
+        "4499" => 4499,
+        "4500" => 4500,
+        "4501" => 4501,
+        "4502" => 4502,
+        "4503" => 4503,
+        "4504" => 4504,
+        "4505" => 4505,
+        "4506" => 4506,
+        "4507" => 4507,
+        "4508" => 4508,
+        "4509" => 4509,
+        "4510" => 4510,
+        "4511" => 4511,
+        "4512" => 4512,
+        "4513" => 4513,
+        "4514" => 4514,
+        "4515" => 4515,
+        "4516" => 4516,
+        "4517" => 4517,
+        "4518" => 4518,
+        "4519" => 4519,
+        "4520" => 4520,
+        "4521" => 4521,
+        "4522" => 4522,
+        "4523" => 4523,
+        "4524" => 4524,
+        "4525" => 4525,
+        "4526" => 4526,
+        "4527" => 4527,
+        "4528" => 4528,
+        "4529" => 4529,
+        "4530" => 4530,
+        "4531" => 4531,
+        "4532" => 4532,
+        "4533" => 4533,
+        "4534" => 4534,
+        "4535" => 4535,
+        "4536" => 4536,
+        "4537" => 4537,
+        "4538" => 4538,
+        "4539" => 4539,
+        "4540" => 4540,
+        "4541" => 4541,
+        "4542" => 4542,
+        "4543" => 4543,
+        "4544" => 4544,
+        "4545" => 4545,
+        "4546" => 4546,
+        "4547" => 4547,
+        "4548" => 4548,
+        "4549" => 4549,
+        "4550" => 4550,
+        "4551" => 4551,
+        "4552" => 4552,
+        "4553" => 4553,
+        "4554" => 4554,
+        "4555" => 4555,
+        "4556" => 4556,
+        "4557" => 4557,
+        "4558" => 4558,
+        "4559" => 4559,
+        "4560" => 4560,
+        "4561" => 4561,
+        "4562" => 4562,
+        "4563" => 4563,
+        "4564" => 4564,
+        "4565" => 4565,
+        "4566" => 4566,
+        "4567" => 4567,
+        "4568" => 4568,
+        "4569" => 4569,
+        "4570" => 4570,
+        "4571" => 4571,
+        "4572" => 4572,
+        "4573" => 4573,
+        "4574" => 4574,
+        "4575" => 4575,
+        "4576" => 4576,
+        "4577" => 4577,
+        "4578" => 4578,
+        "4579" => 4579,
+        "4580" => 4580,
+        "4581" => 4581,
+        "4582" => 4582,
+        "4583" => 4583,
+        "4584" => 4584,
+        "4585" => 4585,
+        "4586" => 4586,
+        "4587" => 4587,
+        "4588" => 4588,
+        "4589" => 4589,
+        "4590" => 4590,
+        "4591" => 4591,
+        "4592" => 4592,
+        "4593" => 4593,
+        "4594" => 4594,
+        "4595" => 4595,
+        "4596" => 4596,
+        "4597" => 4597,
+        "4598" => 4598,
+        "4599" => 4599,
+        "4600" => 4600,
+        "4601" => 4601,
+        "4602" => 4602,
+        "4603" => 4603,
+        "4604" => 4604,
+        "4605" => 4605,
+        "4606" => 4606,
+        "4607" => 4607,
+        "4608" => 4608,
+        "4609" => 4609,
+        "4610" => 4610,
+        "4611" => 4611,
+        "4612" => 4612,
+        "4613" => 4613,
+        "4614" => 4614,
+        "4615" => 4615,
+        "4616" => 4616,
+        "4617" => 4617,
+        "4618" => 4618,
+        "4619" => 4619,
+        "4620" => 4620,
+        "4621" => 4621,
+        "4622" => 4622,
+        "4623" => 4623,
+        "4624" => 4624,
+        "4625" => 4625,
+        "4626" => 4626,
+        "4627" => 4627,
+        "4628" => 4628,
+        "4629" => 4629,
+        "4630" => 4630,
+        "4631" => 4631,
+        "4632" => 4632,
+        "4633" => 4633,
+        "4634" => 4634,
+        "4635" => 4635,
+        "4636" => 4636,
+        "4637" => 4637,
+        "4638" => 4638,
+        "4639" => 4639,
+        "4640" => 4640,
+        "4641" => 4641,
+        "4642" => 4642,
+        "4643" => 4643,
+        "4644" => 4644,
+        "4645" => 4645,
+        "4646" => 4646,
+        "4647" => 4647,
+        "4648" => 4648,
+        "4649" => 4649,
+        "4650" => 4650,
+        "4651" => 4651,
+        "4652" => 4652,
+        "4653" => 4653,
+        "4654" => 4654,
+        "4655" => 4655,
+        "4656" => 4656,
+        "4657" => 4657,
+        "4658" => 4658,
+        "4659" => 4659,
+        "4660" => 4660,
+        "4661" => 4661,
+        "4662" => 4662,
+        "4663" => 4663,
+        "4664" => 4664,
+        "4665" => 4665,
+        "4666" => 4666,
+        "4667" => 4667,
+        "4668" => 4668,
+        "4669" => 4669,
+        "4670" => 4670,
+        "4671" => 4671,
+        "4672" => 4672,
+        "4673" => 4673,
+        "4674" => 4674,
+        "4675" => 4675,
+        "4676" => 4676,
+        "4677" => 4677,
+        "4678" => 4678,
+        "4679" => 4679,
+        "4680" => 4680,
+        "4681" => 4681,
+        "4682" => 4682,
+        "4683" => 4683,
+        "4684" => 4684,
+        "4685" => 4685,
+        "4686" => 4686,
+        "4687" => 4687,
+        "4688" => 4688,
+        "4689" => 4689,
+        "4690" => 4690,
+        "4691" => 4691,
+        "4692" => 4692,
+        "4693" => 4693,
+        "4694" => 4694,
+        "4695" => 4695,
+        "4696" => 4696,
+        "4697" => 4697,
+        "4698" => 4698,
+        "4699" => 4699,
+        "4700" => 4700,
+        "4701" => 4701,
+        "4702" => 4702,
+        "4703" => 4703,
+        "4704" => 4704,
+        "4705" => 4705,
+        "4706" => 4706,
+        "4707" => 4707,
+        "4708" => 4708,
+        "4709" => 4709,
+        "4710" => 4710,
+        "4711" => 4711,
+        "4712" => 4712,
+        "4713" => 4713,
+        "4714" => 4714,
+        "4715" => 4715,
+        "4716" => 4716,
+        "4717" => 4717,
+        "4718" => 4718,
+        "4719" => 4719,
+        "4720" => 4720,
+        "4721" => 4721,
+        "4722" => 4722,
+        "4723" => 4723,
+        "4724" => 4724,
+        "4725" => 4725,
+        "4726" => 4726,
+        "4727" => 4727,
+        "4728" => 4728,
+        "4729" => 4729,
+        "4730" => 4730,
+        "4731" => 4731,
+        "4732" => 4732,
+        "4733" => 4733,
+        "4734" => 4734,
+        "4735" => 4735,
+        "4736" => 4736,
+        "4737" => 4737,
+        "4738" => 4738,
+        "4739" => 4739,
+        "4740" => 4740,
+        "4741" => 4741,
+        "4742" => 4742,
+        "4743" => 4743,
+        "4744" => 4744,
+        "4745" => 4745,
+        "4746" => 4746,
+        "4747" => 4747,
+        "4748" => 4748,
+        "4749" => 4749,
+        "4750" => 4750,
+        "4751" => 4751,
+        "4752" => 4752,
+        "4753" => 4753,
+        "4754" => 4754,
+        "4755" => 4755,
+        "4756" => 4756,
+        "4757" => 4757,
+        "4758" => 4758,
+        "4759" => 4759,
+        "4760" => 4760,
+        "4761" => 4761,
+        "4762" => 4762,
+        "4763" => 4763,
+        "4764" => 4764,
+        "4765" => 4765,
+        "4766" => 4766,
+        "4767" => 4767,
+        "4768" => 4768,
+        "4769" => 4769,
+        "4770" => 4770,
+        "4771" => 4771,
+        "4772" => 4772,
+        "4773" => 4773,
+        "4774" => 4774,
+        "4775" => 4775,
+        "4776" => 4776,
+        "4777" => 4777,
+        "4778" => 4778,
+        "4779" => 4779,
+        "4780" => 4780,
+        "4781" => 4781,
+        "4782" => 4782,
+        "4783" => 4783,
+        "4784" => 4784,
+        "4785" => 4785,
+        "4786" => 4786,
+        "4787" => 4787,
+        "4788" => 4788,
+        "4789" => 4789,
+        "4790" => 4790,
+        "4791" => 4791,
+        "4792" => 4792,
+        "4793" => 4793,
+        "4794" => 4794,
+        "4795" => 4795,
+        "4796" => 4796,
+        "4797" => 4797,
+        "4798" => 4798,
+        "4799" => 4799,
+        "4800" => 4800,
+        "4801" => 4801,
+        "4802" => 4802,
+        "4803" => 4803,
+        "4804" => 4804,
+        "4805" => 4805,
+        "4806" => 4806,
+        "4807" => 4807,
+        "4808" => 4808,
+        "4809" => 4809,
+        "4810" => 4810,
+        "4811" => 4811,
+        "4812" => 4812,
+        "4813" => 4813,
+        "4814" => 4814,
+        "4815" => 4815,
+        "4816" => 4816,
+        "4817" => 4817,
+        "4818" => 4818,
+        "4819" => 4819,
+        "4820" => 4820,
+        "4821" => 4821,
+        "4822" => 4822,
+        "4823" => 4823,
+        "4824" => 4824,
+        "4825" => 4825,
+        "4826" => 4826,
+        "4827" => 4827,
+        "4828" => 4828,
+        "4829" => 4829,
+        "4830" => 4830,
+        "4831" => 4831,
+        "4832" => 4832,
+        "4833" => 4833,
+        "4834" => 4834,
+        "4835" => 4835,
+        "4836" => 4836,
+        "4837" => 4837,
+        "4838" => 4838,
+        "4839" => 4839,
+        "4840" => 4840,
+        "4841" => 4841,
+        "4842" => 4842,
+        "4843" => 4843,
+        "4844" => 4844,
+        "4845" => 4845,
+        "4846" => 4846,
+        "4847" => 4847,
+        "4848" => 4848,
+        "4849" => 4849,
+        "4850" => 4850,
+        "4851" => 4851,
+        "4852" => 4852,
+        "4853" => 4853,
+        "4854" => 4854,
+        "4855" => 4855,
+        "4856" => 4856,
+        "4857" => 4857,
+        "4858" => 4858,
+        "4859" => 4859,
+        "4860" => 4860,
+        "4861" => 4861,
+        "4862" => 4862,
+        "4863" => 4863,
+        "4864" => 4864,
+        "4865" => 4865,
+        "4866" => 4866,
+        "4867" => 4867,
+        "4868" => 4868,
+        "4869" => 4869,
+        "4870" => 4870,
+        "4871" => 4871,
+        "4872" => 4872,
+        "4873" => 4873,
+        "4874" => 4874,
+        "4875" => 4875,
+        "4876" => 4876,
+        "4877" => 4877,
+        "4878" => 4878,
+        "4879" => 4879,
+        "4880" => 4880,
+        "4881" => 4881,
+        "4882" => 4882,
+        "4883" => 4883,
+        "4884" => 4884,
+        "4885" => 4885,
+        "4886" => 4886,
+        "4887" => 4887,
+        "4888" => 4888,
+        "4889" => 4889,
+        "4890" => 4890,
+        "4891" => 4891,
+        "4892" => 4892,
+        "4893" => 4893,
+        "4894" => 4894,
+        "4895" => 4895,
+        "4896" => 4896,
+        "4897" => 4897,
+        "4898" => 4898,
+        "4899" => 4899,
+        "4900" => 4900,
+        "4901" => 4901,
+        "4902" => 4902,
+        "4903" => 4903,
+        "4904" => 4904,
+        "4905" => 4905,
+        "4906" => 4906,
+        "4907" => 4907,
+        "4908" => 4908,
+        "4909" => 4909,
+        "4910" => 4910,
+        "4911" => 4911,
+        "4912" => 4912,
+        "4913" => 4913,
+        "4914" => 4914,
+        "4915" => 4915,
+        "4916" => 4916,
+        "4917" => 4917,
+        "4918" => 4918,
+        "4919" => 4919,
+        "4920" => 4920,
+        "4921" => 4921,
+        "4922" => 4922,
+        "4923" => 4923,
+        "4924" => 4924,
+        "4925" => 4925,
+        "4926" => 4926,
+        "4927" => 4927,
+        "4928" => 4928,
+        "4929" => 4929,
+        "4930" => 4930,
+        "4931" => 4931,
+        "4932" => 4932,
+        "4933" => 4933,
+        "4934" => 4934,
+        "4935" => 4935,
+        "4936" => 4936,
+        "4937" => 4937,
+        "4938" => 4938,
+        "4939" => 4939,
+        "4940" => 4940,
+        "4941" => 4941,
+        "4942" => 4942,
+        "4943" => 4943,
+        "4944" => 4944,
+        "4945" => 4945,
+        "4946" => 4946,
+        "4947" => 4947,
+        "4948" => 4948,
+        "4949" => 4949,
+        "4950" => 4950,
+        "4951" => 4951,
+        "4952" => 4952,
+        "4953" => 4953,
+        "4954" => 4954,
+        "4955" => 4955,
+        "4956" => 4956,
+        "4957" => 4957,
+        "4958" => 4958,
+        "4959" => 4959,
+        "4960" => 4960,
+        "4961" => 4961,
+        "4962" => 4962,
+        "4963" => 4963,
+        "4964" => 4964,
+        "4965" => 4965,
+        "4966" => 4966,
+        "4967" => 4967,
+        "4968" => 4968,
+        "4969" => 4969,
+        "4970" => 4970,
+        "4971" => 4971,
+        "4972" => 4972,
+        "4973" => 4973,
+        "4974" => 4974,
+        "4975" => 4975,
+        "4976" => 4976,
+        "4977" => 4977,
+        "4978" => 4978,
+        "4979" => 4979,
+        "4980" => 4980,
+        "4981" => 4981,
+        "4982" => 4982,
+        "4983" => 4983,
+        "4984" => 4984,
+        "4985" => 4985,
+        "4986" => 4986,
+        "4987" => 4987,
+        "4988" => 4988,
+        "4989" => 4989,
+        "4990" => 4990,
+        "4991" => 4991,
+        "4992" => 4992,
+        "4993" => 4993,
+        "4994" => 4994,
+        "4995" => 4995,
+        "4996" => 4996,
+        "4997" => 4997,
+        "4998" => 4998,
+        "4999" => 4999,
+        "5000" => 5000,
+        "5001" => 5001,
+        "5002" => 5002,
+        "5003" => 5003,
+        "5004" => 5004,
+        "5005" => 5005,
+        "5006" => 5006,
+        "5007" => 5007,
+        "5008" => 5008,
+        "5009" => 5009,
+        "5010" => 5010,
+        "5011" => 5011,
+        "5012" => 5012,
+        "5013" => 5013,
+        "5014" => 5014,
+        "5015" => 5015,
+        "5016" => 5016,
+        "5017" => 5017,
+        "5018" => 5018,
+        "5019" => 5019,
+        "5020" => 5020,
+        "5021" => 5021,
+        "5022" => 5022,
+        "5023" => 5023,
+        "5024" => 5024,
+        "5025" => 5025,
+        "5026" => 5026,
+        "5027" => 5027,
+        "5028" => 5028,
+        "5029" => 5029,
+        "5030" => 5030,
+        "5031" => 5031,
+        "5032" => 5032,
+        "5033" => 5033,
+        "5034" => 5034,
+        "5035" => 5035,
+        "5036" => 5036,
+        "5037" => 5037,
+        "5038" => 5038,
+        "5039" => 5039,
+        "5040" => 5040,
+        "5041" => 5041,
+        "5042" => 5042,
+        "5043" => 5043,
+        "5044" => 5044,
+        "5045" => 5045,
+        "5046" => 5046,
+        "5047" => 5047,
+        "5048" => 5048,
+        "5049" => 5049,
+        "5050" => 5050,
+        "5051" => 5051,
+        "5052" => 5052,
+        "5053" => 5053,
+        "5054" => 5054,
+        "5055" => 5055,
+        "5056" => 5056,
+        "5057" => 5057,
+        "5058" => 5058,
+        "5059" => 5059,
+        "5060" => 5060,
+        "5061" => 5061,
+        "5062" => 5062,
+        "5063" => 5063,
+        "5064" => 5064,
+        "5065" => 5065,
+        "5066" => 5066,
+        "5067" => 5067,
+        "5068" => 5068,
+        "5069" => 5069,
+        "5070" => 5070,
+        "5071" => 5071,
+        "5072" => 5072,
+        "5073" => 5073,
+        "5074" => 5074,
+        "5075" => 5075,
+        "5076" => 5076,
+        "5077" => 5077,
+        "5078" => 5078,
+        "5079" => 5079,
+        "5080" => 5080,
+        "5081" => 5081,
+        "5082" => 5082,
+        "5083" => 5083,
+        "5084" => 5084,
+        "5085" => 5085,
+        "5086" => 5086,
+        "5087" => 5087,
+        "5088" => 5088,
+        "5089" => 5089,
+        "5090" => 5090,
+        "5091" => 5091,
+        "5092" => 5092,
+        "5093" => 5093,
+        "5094" => 5094,
+        "5095" => 5095,
+        "5096" => 5096,
+        "5097" => 5097,
+        "5098" => 5098,
+        "5099" => 5099,
+        "5100" => 5100,
+        "5101" => 5101,
+        "5102" => 5102,
+        "5103" => 5103,
+        "5104" => 5104,
+        "5105" => 5105,
+        "5106" => 5106,
+        "5107" => 5107,
+        "5108" => 5108,
+        "5109" => 5109,
+        "5110" => 5110,
+        "5111" => 5111,
+        "5112" => 5112,
+        "5113" => 5113,
+        "5114" => 5114,
+        "5115" => 5115,
+        "5116" => 5116,
+        "5117" => 5117,
+        "5118" => 5118,
+        "5119" => 5119,
+        "5120" => 5120,
+        "5121" => 5121,
+        "5122" => 5122,
+        "5123" => 5123,
+        "5124" => 5124,
+        "5125" => 5125,
+        "5126" => 5126,
+        "5127" => 5127,
+        "5128" => 5128,
+        "5129" => 5129,
+        "5130" => 5130,
+        "5131" => 5131,
+        "5132" => 5132,
+        "5133" => 5133,
+        "5134" => 5134,
+        "5135" => 5135,
+        "5136" => 5136,
+        "5137" => 5137,
+        "5138" => 5138,
+        "5139" => 5139,
+        "5140" => 5140,
+        "5141" => 5141,
+        "5142" => 5142,
+        "5143" => 5143,
+        "5144" => 5144,
+        "5145" => 5145,
+        "5146" => 5146,
+        "5147" => 5147,
+        "5148" => 5148,
+        "5149" => 5149,
+        "5150" => 5150,
+        "5151" => 5151,
+        "5152" => 5152,
+        "5153" => 5153,
+        "5154" => 5154,
+        "5155" => 5155,
+        "5156" => 5156,
+        "5157" => 5157,
+        "5158" => 5158,
+        "5159" => 5159,
+        "5160" => 5160,
+        "5161" => 5161,
+        "5162" => 5162,
+        "5163" => 5163,
+        "5164" => 5164,
+        "5165" => 5165,
+        "5166" => 5166,
+        "5167" => 5167,
+        "5168" => 5168,
+        "5169" => 5169,
+        "5170" => 5170,
+        "5171" => 5171,
+        "5172" => 5172,
+        "5173" => 5173,
+        "5174" => 5174,
+        "5175" => 5175,
+        "5176" => 5176,
+        "5177" => 5177,
+        "5178" => 5178,
+        "5179" => 5179,
+        "5180" => 5180,
+        "5181" => 5181,
+        "5182" => 5182,
+        "5183" => 5183,
+        "5184" => 5184,
+        "5185" => 5185,
+        "5186" => 5186,
+        "5187" => 5187,
+        "5188" => 5188,
+        "5189" => 5189,
+        "5190" => 5190,
+        "5191" => 5191,
+        "5192" => 5192,
+        "5193" => 5193,
+        "5194" => 5194,
+        "5195" => 5195,
+        "5196" => 5196,
+        "5197" => 5197,
+        "5198" => 5198,
+        _ => 5199,
+    }
+}
diff --git a/src/test/ui/issues/issue-8460.rs b/src/test/ui/issues/issue-8460.rs
index 3fd576a8d35..a7de4bd74aa 100644
--- a/src/test/ui/issues/issue-8460.rs
+++ b/src/test/ui/issues/issue-8460.rs
@@ -27,21 +27,21 @@ macro_rules! check {
 
 fn main() {
     check![
-        isize::min_value() / -isize::one(),
-        i8::min_value() / -i8::one(),
-        i16::min_value() / -i16::one(),
-        i32::min_value() / -i32::one(),
-        i64::min_value() / -i64::one(),
+        isize::MIN / -isize::one(),
+        i8::MIN / -i8::one(),
+        i16::MIN / -i16::one(),
+        i32::MIN / -i32::one(),
+        i64::MIN / -i64::one(),
         1isize / isize::zero(),
         1i8 / i8::zero(),
         1i16 / i16::zero(),
         1i32 / i32::zero(),
         1i64 / i64::zero(),
-        isize::min_value() % -isize::one(),
-        i8::min_value() % -i8::one(),
-        i16::min_value() % -i16::one(),
-        i32::min_value() % -i32::one(),
-        i64::min_value() % -i64::one(),
+        isize::MIN % -isize::one(),
+        i8::MIN % -i8::one(),
+        i16::MIN % -i16::one(),
+        i32::MIN % -i32::one(),
+        i64::MIN % -i64::one(),
         1isize % isize::zero(),
         1i8 % i8::zero(),
         1i16 % i16::zero(),
diff --git a/src/test/ui/iterators/iter-step-overflow-debug.rs b/src/test/ui/iterators/iter-step-overflow-debug.rs
index 5d67c7cbb42..67605d2fcc2 100644
--- a/src/test/ui/iterators/iter-step-overflow-debug.rs
+++ b/src/test/ui/iterators/iter-step-overflow-debug.rs
@@ -6,14 +6,14 @@ use std::panic;
 
 fn main() {
     let r = panic::catch_unwind(|| {
-        let mut it = u8::max_value()..;
+        let mut it = u8::MAX..;
         it.next().unwrap(); // 255
         it.next().unwrap();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        let mut it = i8::max_value()..;
+        let mut it = i8::MAX..;
         it.next().unwrap(); // 127
         it.next().unwrap();
     });
diff --git a/src/test/ui/iterators/iter-step-overflow-ndebug.rs b/src/test/ui/iterators/iter-step-overflow-ndebug.rs
index a0ad92071b6..33e708769ba 100644
--- a/src/test/ui/iterators/iter-step-overflow-ndebug.rs
+++ b/src/test/ui/iterators/iter-step-overflow-ndebug.rs
@@ -2,11 +2,11 @@
 // compile-flags: -C debug_assertions=no
 
 fn main() {
-    let mut it = u8::max_value()..;
+    let mut it = u8::MAX..;
     assert_eq!(it.next().unwrap(), 255);
-    assert_eq!(it.next().unwrap(), u8::min_value());
+    assert_eq!(it.next().unwrap(), u8::MIN);
 
-    let mut it = i8::max_value()..;
+    let mut it = i8::MAX..;
     assert_eq!(it.next().unwrap(), 127);
-    assert_eq!(it.next().unwrap(), i8::min_value());
+    assert_eq!(it.next().unwrap(), i8::MIN);
 }
diff --git a/src/test/ui/iterators/iter-sum-overflow-debug.rs b/src/test/ui/iterators/iter-sum-overflow-debug.rs
index ee4ab4d24c6..b7667d1bbf6 100644
--- a/src/test/ui/iterators/iter-sum-overflow-debug.rs
+++ b/src/test/ui/iterators/iter-sum-overflow-debug.rs
@@ -6,22 +6,22 @@ use std::panic;
 
 fn main() {
     let r = panic::catch_unwind(|| {
-        [1, i32::max_value()].iter().sum::<i32>();
+        [1, i32::MAX].iter().sum::<i32>();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        [2, i32::max_value()].iter().product::<i32>();
+        [2, i32::MAX].iter().product::<i32>();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        [1, i32::max_value()].iter().cloned().sum::<i32>();
+        [1, i32::MAX].iter().cloned().sum::<i32>();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        [2, i32::max_value()].iter().cloned().product::<i32>();
+        [2, i32::MAX].iter().cloned().product::<i32>();
     });
     assert!(r.is_err());
 }
diff --git a/src/test/ui/iterators/iter-sum-overflow-ndebug.rs b/src/test/ui/iterators/iter-sum-overflow-ndebug.rs
index 61d63d41fb8..69f4744cc2a 100644
--- a/src/test/ui/iterators/iter-sum-overflow-ndebug.rs
+++ b/src/test/ui/iterators/iter-sum-overflow-ndebug.rs
@@ -2,13 +2,13 @@
 // compile-flags: -C debug_assertions=no
 
 fn main() {
-    assert_eq!([1i32, i32::max_value()].iter().sum::<i32>(),
-               1i32.wrapping_add(i32::max_value()));
-    assert_eq!([2i32, i32::max_value()].iter().product::<i32>(),
-               2i32.wrapping_mul(i32::max_value()));
+    assert_eq!([1i32, i32::MAX].iter().sum::<i32>(),
+               1i32.wrapping_add(i32::MAX));
+    assert_eq!([2i32, i32::MAX].iter().product::<i32>(),
+               2i32.wrapping_mul(i32::MAX));
 
-    assert_eq!([1i32, i32::max_value()].iter().cloned().sum::<i32>(),
-               1i32.wrapping_add(i32::max_value()));
-    assert_eq!([2i32, i32::max_value()].iter().cloned().product::<i32>(),
-               2i32.wrapping_mul(i32::max_value()));
+    assert_eq!([1i32, i32::MAX].iter().cloned().sum::<i32>(),
+               1i32.wrapping_add(i32::MAX));
+    assert_eq!([2i32, i32::MAX].iter().cloned().product::<i32>(),
+               2i32.wrapping_mul(i32::MAX));
 }
diff --git a/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs b/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs
index 429f8e0bc96..04ca7f8a315 100644
--- a/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs
+++ b/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs
@@ -6,22 +6,22 @@ use std::panic;
 
 fn main() {
     let r = panic::catch_unwind(|| {
-        [1, i32::max_value()].iter().sum::<i32>();
+        [1, i32::MAX].iter().sum::<i32>();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        [2, i32::max_value()].iter().product::<i32>();
+        [2, i32::MAX].iter().product::<i32>();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        [1, i32::max_value()].iter().cloned().sum::<i32>();
+        [1, i32::MAX].iter().cloned().sum::<i32>();
     });
     assert!(r.is_err());
 
     let r = panic::catch_unwind(|| {
-        [2, i32::max_value()].iter().cloned().product::<i32>();
+        [2, i32::MAX].iter().cloned().product::<i32>();
     });
     assert!(r.is_err());
 }
diff --git a/src/test/ui/iterators/skip-count-overflow.rs b/src/test/ui/iterators/skip-count-overflow.rs
index d8efc948664..64dee3e3c8b 100644
--- a/src/test/ui/iterators/skip-count-overflow.rs
+++ b/src/test/ui/iterators/skip-count-overflow.rs
@@ -3,6 +3,6 @@
 // compile-flags: -C overflow-checks -C opt-level=3
 
 fn main() {
-    let i = (0..usize::max_value()).chain(0..10).skip(usize::max_value());
+    let i = (0..usize::MAX).chain(0..10).skip(usize::MAX);
     assert_eq!(i.count(), 10);
 }
diff --git a/src/test/ui/lexical-scopes.stderr b/src/test/ui/lexical-scopes.stderr
index dce70545170..1e6a35ed479 100644
--- a/src/test/ui/lexical-scopes.stderr
+++ b/src/test/ui/lexical-scopes.stderr
@@ -3,11 +3,6 @@ error[E0574]: expected struct, variant or union type, found type parameter `T`
    |
 LL |     let t = T { i: 0 };
    |             ^ not a struct, variant or union type
-   |
-help: consider importing this struct instead
-   |
-LL | use T;
-   |
 
 error[E0599]: no function or associated item named `f` found for type parameter `Foo` in the current scope
   --> $DIR/lexical-scopes.rs:10:10
diff --git a/src/test/ui/lint/expansion-time-include.rs b/src/test/ui/lint/expansion-time-include.rs
new file mode 100644
index 00000000000..4ea89d5adff
--- /dev/null
+++ b/src/test/ui/lint/expansion-time-include.rs
@@ -0,0 +1,4 @@
+// ignore-test auxiliary file for expansion-time.rs
+
+1
+2
diff --git a/src/test/ui/lint/expansion-time.rs b/src/test/ui/lint/expansion-time.rs
new file mode 100644
index 00000000000..6e420c51f0a
--- /dev/null
+++ b/src/test/ui/lint/expansion-time.rs
@@ -0,0 +1,23 @@
+// check-pass
+
+#[warn(meta_variable_misuse)]
+macro_rules! foo {
+    ( $($i:ident)* ) => { $($i)+ }; //~ WARN meta-variable repeats with different Kleene operator
+}
+
+#[warn(missing_fragment_specifier)]
+macro_rules! m { ($i) => {} } //~ WARN missing fragment specifier
+                              //~| WARN this was previously accepted
+
+#[warn(soft_unstable)]
+mod benches {
+    #[bench] //~ WARN use of unstable library feature 'test'
+             //~| WARN this was previously accepted
+    fn foo() {}
+}
+
+#[warn(incomplete_include)]
+fn main() {
+    // WARN see in the stderr file, the warning points to the included file.
+    include!("expansion-time-include.rs");
+}
diff --git a/src/test/ui/lint/expansion-time.stderr b/src/test/ui/lint/expansion-time.stderr
new file mode 100644
index 00000000000..e6b5cf67e39
--- /dev/null
+++ b/src/test/ui/lint/expansion-time.stderr
@@ -0,0 +1,56 @@
+warning: meta-variable repeats with different Kleene operator
+  --> $DIR/expansion-time.rs:5:29
+   |
+LL |     ( $($i:ident)* ) => { $($i)+ };
+   |                  -          ^^ - conflicting repetition
+   |                  |
+   |                  expected repetition
+   |
+note: the lint level is defined here
+  --> $DIR/expansion-time.rs:3:8
+   |
+LL | #[warn(meta_variable_misuse)]
+   |        ^^^^^^^^^^^^^^^^^^^^
+
+warning: missing fragment specifier
+  --> $DIR/expansion-time.rs:9:19
+   |
+LL | macro_rules! m { ($i) => {} }
+   |                   ^^
+   |
+note: the lint level is defined here
+  --> $DIR/expansion-time.rs:8:8
+   |
+LL | #[warn(missing_fragment_specifier)]
+   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
+   = note: for more information, see issue #40107 <https://github.com/rust-lang/rust/issues/40107>
+
+warning: use of unstable library feature 'test': `bench` is a part of custom test frameworks which are unstable
+  --> $DIR/expansion-time.rs:14:7
+   |
+LL |     #[bench]
+   |       ^^^^^
+   |
+note: the lint level is defined here
+  --> $DIR/expansion-time.rs:12:8
+   |
+LL | #[warn(soft_unstable)]
+   |        ^^^^^^^^^^^^^
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
+   = note: for more information, see issue #64266 <https://github.com/rust-lang/rust/issues/64266>
+
+warning: include macro expected single expression in source
+  --> $DIR/expansion-time-include.rs:4:1
+   |
+LL | 2
+   | ^
+   |
+note: the lint level is defined here
+  --> $DIR/expansion-time.rs:19:8
+   |
+LL | #[warn(incomplete_include)]
+   |        ^^^^^^^^^^^^^^^^^^
+
+warning: 4 warnings emitted
+
diff --git a/src/test/ui/lint/inline-trait-and-foreign-items.stderr b/src/test/ui/lint/inline-trait-and-foreign-items.stderr
index 15aaf8961b7..ae04612a4dd 100644
--- a/src/test/ui/lint/inline-trait-and-foreign-items.stderr
+++ b/src/test/ui/lint/inline-trait-and-foreign-items.stderr
@@ -62,10 +62,10 @@ LL |     type U = impl Trait;
    |     -------------------- not a function or closure
 
 error: could not find defining uses
-  --> $DIR/inline-trait-and-foreign-items.rs:26:5
+  --> $DIR/inline-trait-and-foreign-items.rs:26:14
    |
 LL |     type U = impl Trait;
-   |     ^^^^^^^^^^^^^^^^^^^^
+   |              ^^^^^^^^^^
 
 error: aborting due to 6 previous errors; 2 warnings emitted
 
diff --git a/src/test/ui/lint/lint-ctypes-66202.rs b/src/test/ui/lint/lint-ctypes-66202.rs
new file mode 100644
index 00000000000..ebab41d143e
--- /dev/null
+++ b/src/test/ui/lint/lint-ctypes-66202.rs
@@ -0,0 +1,17 @@
+// check-pass
+
+#![deny(improper_ctypes)]
+
+// This test checks that return types are normalized before being checked for FFI-safety, and that
+// transparent newtype wrappers are FFI-safe if the type being wrapped is FFI-safe.
+
+#[repr(transparent)]
+pub struct W<T>(T);
+
+extern "C" {
+    pub fn bare() -> ();
+    pub fn normalize() -> <() as ToOwned>::Owned;
+    pub fn transparent() -> W<()>;
+}
+
+fn main() {}
diff --git a/src/test/ui/lint/opaque-ty-ffi-unsafe.rs b/src/test/ui/lint/opaque-ty-ffi-unsafe.rs
index 25d5f8ec68a..3cbc084ecae 100644
--- a/src/test/ui/lint/opaque-ty-ffi-unsafe.rs
+++ b/src/test/ui/lint/opaque-ty-ffi-unsafe.rs
@@ -1,5 +1,4 @@
 #![feature(type_alias_impl_trait)]
-
 #![deny(improper_ctypes)]
 
 type A = impl Fn();
@@ -10,7 +9,7 @@ pub fn ret_closure() -> A {
 
 extern "C" {
     pub fn a(_: A);
-    //~^ ERROR `extern` block uses type `A`, which is not FFI-safe
+//~^ ERROR `extern` block uses type `impl std::ops::Fn<()>`, which is not FFI-safe
 }
 
 fn main() {}
diff --git a/src/test/ui/lint/opaque-ty-ffi-unsafe.stderr b/src/test/ui/lint/opaque-ty-ffi-unsafe.stderr
index 712095e3208..06dfb7b8fbe 100644
--- a/src/test/ui/lint/opaque-ty-ffi-unsafe.stderr
+++ b/src/test/ui/lint/opaque-ty-ffi-unsafe.stderr
@@ -1,11 +1,11 @@
-error: `extern` block uses type `A`, which is not FFI-safe
-  --> $DIR/opaque-ty-ffi-unsafe.rs:12:17
+error: `extern` block uses type `impl std::ops::Fn<()>`, which is not FFI-safe
+  --> $DIR/opaque-ty-ffi-unsafe.rs:11:17
    |
 LL |     pub fn a(_: A);
    |                 ^ not FFI-safe
    |
 note: the lint level is defined here
-  --> $DIR/opaque-ty-ffi-unsafe.rs:3:9
+  --> $DIR/opaque-ty-ffi-unsafe.rs:2:9
    |
 LL | #![deny(improper_ctypes)]
    |         ^^^^^^^^^^^^^^^
diff --git a/src/test/ui/match/issue-72896.rs b/src/test/ui/match/issue-72896.rs
new file mode 100644
index 00000000000..3a8b8203731
--- /dev/null
+++ b/src/test/ui/match/issue-72896.rs
@@ -0,0 +1,23 @@
+// run-pass
+trait EnumSetType {
+    type Repr;
+}
+
+enum Enum8 { }
+impl EnumSetType for Enum8 {
+    type Repr = u8;
+}
+
+#[derive(PartialEq, Eq)]
+struct EnumSet<T: EnumSetType> {
+    __enumset_underlying: T::Repr,
+}
+
+const CONST_SET: EnumSet<Enum8> = EnumSet { __enumset_underlying: 3 };
+
+fn main() {
+    match CONST_SET {
+        CONST_SET => { /* ok */ }
+        _ => panic!("match fell through?"),
+    }
+}
diff --git a/src/test/ui/mod/mod_file_disambig.stderr b/src/test/ui/mod/mod_file_disambig.stderr
index 490633a3fb0..2cb99b75142 100644
--- a/src/test/ui/mod/mod_file_disambig.stderr
+++ b/src/test/ui/mod/mod_file_disambig.stderr
@@ -1,4 +1,4 @@
-error[E0584]: file for module `mod_file_disambig_aux` found at both mod_file_disambig_aux.rs and mod_file_disambig_aux/mod.rs
+error[E0761]: file for module `mod_file_disambig_aux` found at both mod_file_disambig_aux.rs and mod_file_disambig_aux/mod.rs
   --> $DIR/mod_file_disambig.rs:1:1
    |
 LL | mod mod_file_disambig_aux;
@@ -14,5 +14,5 @@ LL |     assert_eq!(mod_file_aux::bar(), 10);
 
 error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0433, E0584.
+Some errors have detailed explanations: E0433, E0761.
 For more information about an error, try `rustc --explain E0433`.
diff --git a/src/test/ui/no-implicit-prelude-nested.stderr b/src/test/ui/no-implicit-prelude-nested.stderr
index 8a26366d751..198b630c52c 100644
--- a/src/test/ui/no-implicit-prelude-nested.stderr
+++ b/src/test/ui/no-implicit-prelude-nested.stderr
@@ -15,12 +15,10 @@ error[E0404]: expected trait, found derive macro `Clone`
 LL |         impl Clone for Test {}
    |              ^^^^^ not a trait
    |
-help: consider importing one of these items instead
+help: consider importing this trait instead
    |
 LL |         use std::clone::Clone;
    |
-LL |         use std::prelude::v1::Clone;
-   |
 
 error[E0405]: cannot find trait `Iterator` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:13:14
@@ -28,12 +26,10 @@ error[E0405]: cannot find trait `Iterator` in this scope
 LL |         impl Iterator for Test {}
    |              ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this trait
    |
 LL |         use std::iter::Iterator;
    |
-LL |         use std::prelude::v1::Iterator;
-   |
 
 error[E0405]: cannot find trait `ToString` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:14:14
@@ -41,9 +37,7 @@ error[E0405]: cannot find trait `ToString` in this scope
 LL |         impl ToString for Test {}
    |              ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
-   |
-LL |         use std::prelude::v1::ToString;
+help: consider importing this trait
    |
 LL |         use std::string::ToString;
    |
@@ -60,12 +54,10 @@ error[E0425]: cannot find function `drop` in this scope
 LL |             drop(2)
    |             ^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this function
    |
 LL |         use std::mem::drop;
    |
-LL |         use std::prelude::v1::drop;
-   |
 
 error[E0405]: cannot find trait `Add` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:23:10
@@ -84,12 +76,10 @@ error[E0404]: expected trait, found derive macro `Clone`
 LL |     impl Clone for Test {}
    |          ^^^^^ not a trait
    |
-help: consider importing one of these items instead
+help: consider importing this trait instead
    |
 LL |     use std::clone::Clone;
    |
-LL |     use std::prelude::v1::Clone;
-   |
 
 error[E0405]: cannot find trait `Iterator` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:25:10
@@ -97,12 +87,10 @@ error[E0405]: cannot find trait `Iterator` in this scope
 LL |     impl Iterator for Test {}
    |          ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this trait
    |
 LL |     use std::iter::Iterator;
    |
-LL |     use std::prelude::v1::Iterator;
-   |
 
 error[E0405]: cannot find trait `ToString` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:26:10
@@ -110,9 +98,7 @@ error[E0405]: cannot find trait `ToString` in this scope
 LL |     impl ToString for Test {}
    |          ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
-   |
-LL |     use std::prelude::v1::ToString;
+help: consider importing this trait
    |
 LL |     use std::string::ToString;
    |
@@ -129,12 +115,10 @@ error[E0425]: cannot find function `drop` in this scope
 LL |         drop(2)
    |         ^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this function
    |
 LL |     use std::mem::drop;
    |
-LL |     use std::prelude::v1::drop;
-   |
 
 error[E0405]: cannot find trait `Add` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:38:14
@@ -153,12 +137,10 @@ error[E0404]: expected trait, found derive macro `Clone`
 LL |         impl Clone for Test {}
    |              ^^^^^ not a trait
    |
-help: consider importing one of these items instead
+help: consider importing this trait instead
    |
 LL |         use std::clone::Clone;
    |
-LL |         use std::prelude::v1::Clone;
-   |
 
 error[E0405]: cannot find trait `Iterator` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:40:14
@@ -166,12 +148,10 @@ error[E0405]: cannot find trait `Iterator` in this scope
 LL |         impl Iterator for Test {}
    |              ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this trait
    |
 LL |         use std::iter::Iterator;
    |
-LL |         use std::prelude::v1::Iterator;
-   |
 
 error[E0405]: cannot find trait `ToString` in this scope
   --> $DIR/no-implicit-prelude-nested.rs:41:14
@@ -179,9 +159,7 @@ error[E0405]: cannot find trait `ToString` in this scope
 LL |         impl ToString for Test {}
    |              ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
-   |
-LL |         use std::prelude::v1::ToString;
+help: consider importing this trait
    |
 LL |         use std::string::ToString;
    |
@@ -198,12 +176,10 @@ error[E0425]: cannot find function `drop` in this scope
 LL |             drop(2)
    |             ^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this function
    |
 LL |         use std::mem::drop;
    |
-LL |         use std::prelude::v1::drop;
-   |
 
 error: aborting due to 18 previous errors
 
diff --git a/src/test/ui/no-implicit-prelude.stderr b/src/test/ui/no-implicit-prelude.stderr
index 9cda4f64c79..36a9b65b7d1 100644
--- a/src/test/ui/no-implicit-prelude.stderr
+++ b/src/test/ui/no-implicit-prelude.stderr
@@ -15,12 +15,10 @@ error[E0404]: expected trait, found derive macro `Clone`
 LL | impl Clone for Test {}
    |      ^^^^^ not a trait
    |
-help: consider importing one of these items instead
+help: consider importing this trait instead
    |
 LL | use std::clone::Clone;
    |
-LL | use std::prelude::v1::Clone;
-   |
 
 error[E0405]: cannot find trait `Iterator` in this scope
   --> $DIR/no-implicit-prelude.rs:12:6
@@ -28,12 +26,10 @@ error[E0405]: cannot find trait `Iterator` in this scope
 LL | impl Iterator for Test {}
    |      ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this trait
    |
 LL | use std::iter::Iterator;
    |
-LL | use std::prelude::v1::Iterator;
-   |
 
 error[E0405]: cannot find trait `ToString` in this scope
   --> $DIR/no-implicit-prelude.rs:13:6
@@ -41,9 +37,7 @@ error[E0405]: cannot find trait `ToString` in this scope
 LL | impl ToString for Test {}
    |      ^^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
-   |
-LL | use std::prelude::v1::ToString;
+help: consider importing this trait
    |
 LL | use std::string::ToString;
    |
@@ -60,12 +54,10 @@ error[E0425]: cannot find function `drop` in this scope
 LL |     drop(2)
    |     ^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this function
    |
 LL | use std::mem::drop;
    |
-LL | use std::prelude::v1::drop;
-   |
 
 error: aborting due to 6 previous errors
 
diff --git a/src/test/ui/numbers-arithmetic/i128.rs b/src/test/ui/numbers-arithmetic/i128.rs
index ef558c0aa0c..d61a1ab03b6 100644
--- a/src/test/ui/numbers-arithmetic/i128.rs
+++ b/src/test/ui/numbers-arithmetic/i128.rs
@@ -87,7 +87,7 @@ fn main() {
     assert_eq!((-z).checked_mul(-z), Some(0x734C_C2F2_A521));
     assert_eq!((z).checked_mul(z), Some(0x734C_C2F2_A521));
     assert_eq!((k).checked_mul(k), None);
-    let l: i128 = b(i128::min_value());
+    let l: i128 = b(i128::MIN);
     let o: i128 = b(17);
     assert_eq!(l.checked_sub(b(2)), None);
     assert_eq!(l.checked_add(l), None);
diff --git a/src/test/ui/numbers-arithmetic/int-abs-overflow.rs b/src/test/ui/numbers-arithmetic/int-abs-overflow.rs
index 2bc018445db..10ec3f0c662 100644
--- a/src/test/ui/numbers-arithmetic/int-abs-overflow.rs
+++ b/src/test/ui/numbers-arithmetic/int-abs-overflow.rs
@@ -5,9 +5,9 @@
 use std::thread;
 
 fn main() {
-    assert!(thread::spawn(|| i8::min_value().abs()).join().is_err());
-    assert!(thread::spawn(|| i16::min_value().abs()).join().is_err());
-    assert!(thread::spawn(|| i32::min_value().abs()).join().is_err());
-    assert!(thread::spawn(|| i64::min_value().abs()).join().is_err());
-    assert!(thread::spawn(|| isize::min_value().abs()).join().is_err());
+    assert!(thread::spawn(|| i8::MIN.abs()).join().is_err());
+    assert!(thread::spawn(|| i16::MIN.abs()).join().is_err());
+    assert!(thread::spawn(|| i32::MIN.abs()).join().is_err());
+    assert!(thread::spawn(|| i64::MIN.abs()).join().is_err());
+    assert!(thread::spawn(|| isize::MIN.abs()).join().is_err());
 }
diff --git a/src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs b/src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs
index e9927304f23..101c5d50b20 100644
--- a/src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs
+++ b/src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs
@@ -9,12 +9,12 @@ fn main() {
     macro_rules! overflow_test {
         ($t:ident) => (
             let r = panic::catch_unwind(|| {
-                ($t::max_value()).next_power_of_two()
+                ($t::MAX).next_power_of_two()
             });
             assert!(r.is_err());
 
             let r = panic::catch_unwind(|| {
-                (($t::max_value() >> 1) + 2).next_power_of_two()
+                (($t::MAX >> 1) + 2).next_power_of_two()
             });
             assert!(r.is_err());
         )
diff --git a/src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs b/src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs
index a3b8ff58a73..4785abbc554 100644
--- a/src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs
+++ b/src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs
@@ -5,5 +5,5 @@
 
 fn main() {
     let x = &(0u32 - 1);
-    assert_eq!(*x, u32::max_value())
+    assert_eq!(*x, u32::MAX)
 }
diff --git a/src/test/ui/numbers-arithmetic/u128.rs b/src/test/ui/numbers-arithmetic/u128.rs
index 0b2305c6e8b..d7e28055b21 100644
--- a/src/test/ui/numbers-arithmetic/u128.rs
+++ b/src/test/ui/numbers-arithmetic/u128.rs
@@ -53,14 +53,14 @@ fn main() {
     assert_eq!("10000000000000000000000000000000000000000000000000000000000000000000",
                format!("{:b}", j));
     assert_eq!("340282366920938463463374607431768211455",
-        format!("{}", u128::max_value()));
+        format!("{}", u128::MAX));
     assert_eq!("147573952589676412928", format!("{:?}", j));
     // common traits
     assert_eq!(x, b(x.clone()));
     // overflow checks
     assert_eq!((z).checked_mul(z), Some(0x734C_C2F2_A521));
     assert_eq!((k).checked_mul(k), None);
-    let l: u128 = b(u128::max_value() - 10);
+    let l: u128 = b(u128::MAX - 10);
     let o: u128 = b(17);
     assert_eq!(l.checked_add(b(11)), None);
     assert_eq!(l.checked_sub(l), Some(0));
diff --git a/src/test/ui/numeric/const-scope.stderr b/src/test/ui/numeric/const-scope.stderr
index 6e1990e3a72..d7f18e19b41 100644
--- a/src/test/ui/numeric/const-scope.stderr
+++ b/src/test/ui/numeric/const-scope.stderr
@@ -3,6 +3,11 @@ error[E0308]: mismatched types
    |
 LL | const C: i32 = 1i8;
    |                ^^^ expected `i32`, found `i8`
+   |
+help: change the type of the numeric literal from `i8` to `i32`
+   |
+LL | const C: i32 = 1i32;
+   |                ^^^^
 
 error[E0308]: mismatched types
   --> $DIR/const-scope.rs:2:15
@@ -17,6 +22,11 @@ LL |     let c: i32 = 1i8;
    |            ---   ^^^ expected `i32`, found `i8`
    |            |
    |            expected due to this
+   |
+help: change the type of the numeric literal from `i8` to `i32`
+   |
+LL |     let c: i32 = 1i32;
+   |                  ^^^^
 
 error[E0308]: mismatched types
   --> $DIR/const-scope.rs:6:17
diff --git a/src/test/ui/numeric/numeric-cast-binop.fixed b/src/test/ui/numeric/numeric-cast-binop.fixed
new file mode 100644
index 00000000000..edb085e71d3
--- /dev/null
+++ b/src/test/ui/numeric/numeric-cast-binop.fixed
@@ -0,0 +1,320 @@
+// run-rustfix
+
+// The `try_into` suggestion doesn't include this, but we do suggest it after applying it
+use std::convert::TryInto;
+
+#[allow(unused_must_use)]
+fn main() {
+    let x_usize: usize = 1;
+    let x_u128: u128 = 2;
+    let x_u64: u64 = 3;
+    let x_u32: u32 = 4;
+    let x_u16: u16 = 5;
+    let x_u8: u8 = 6;
+    let x_isize: isize = 7;
+    let x_i64: i64 = 8;
+    let x_i32: i32 = 9;
+    let x_i16: i16 = 10;
+    let x_i8: i8 = 11;
+    let x_i128: i128 = 12;
+
+    /* u<->u */
+    {
+        u16::from(x_u8) > x_u16;
+        //~^ ERROR mismatched types
+        u32::from(x_u8) > x_u32;
+        //~^ ERROR mismatched types
+        u64::from(x_u8) > x_u64;
+        //~^ ERROR mismatched types
+        u128::from(x_u8) > x_u128;
+        //~^ ERROR mismatched types
+        usize::from(x_u8) > x_usize;
+        //~^ ERROR mismatched types
+
+        x_u16 > x_u8.into();
+        //~^ ERROR mismatched types
+        u32::from(x_u16) > x_u32;
+        //~^ ERROR mismatched types
+        u64::from(x_u16) > x_u64;
+        //~^ ERROR mismatched types
+        u128::from(x_u16) > x_u128;
+        //~^ ERROR mismatched types
+        usize::from(x_u16) > x_usize;
+        //~^ ERROR mismatched types
+
+        x_u32 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_u32 > x_u16.into();
+        //~^ ERROR mismatched types
+        u64::from(x_u32) > x_u64;
+        //~^ ERROR mismatched types
+        u128::from(x_u32) > x_u128;
+        //~^ ERROR mismatched types
+        x_u32 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_u64 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_u64 > x_u16.into();
+        //~^ ERROR mismatched types
+        x_u64 > x_u32.into();
+        //~^ ERROR mismatched types
+        u128::from(x_u64) > x_u128;
+        //~^ ERROR mismatched types
+        x_u64 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_u128 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_u128 > x_u16.into();
+        //~^ ERROR mismatched types
+        x_u128 > x_u32.into();
+        //~^ ERROR mismatched types
+        x_u128 > x_u64.into();
+        //~^ ERROR mismatched types
+        x_u128 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_usize > x_u8.into();
+        //~^ ERROR mismatched types
+        x_usize > x_u16.into();
+        //~^ ERROR mismatched types
+        x_usize > x_u32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_u64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+    }
+
+    /* i<->i */
+    {
+        i16::from(x_i8) > x_i16;
+        //~^ ERROR mismatched types
+        i32::from(x_i8) > x_i32;
+        //~^ ERROR mismatched types
+        i64::from(x_i8) > x_i64;
+        //~^ ERROR mismatched types
+        i128::from(x_i8) > x_i128;
+        //~^ ERROR mismatched types
+        isize::from(x_i8) > x_isize;
+        //~^ ERROR mismatched types
+
+        x_i16 > x_i8.into();
+        //~^ ERROR mismatched types
+        i32::from(x_i16) > x_i32;
+        //~^ ERROR mismatched types
+        i64::from(x_i16) > x_i64;
+        //~^ ERROR mismatched types
+        i128::from(x_i16) > x_i128;
+        //~^ ERROR mismatched types
+        isize::from(x_i16) > x_isize;
+        //~^ ERROR mismatched types
+
+        x_i32 > x_i8.into();
+        //~^ ERROR mismatched types
+        x_i32 > x_i16.into();
+        //~^ ERROR mismatched types
+        i64::from(x_i32) > x_i64;
+        //~^ ERROR mismatched types
+        i128::from(x_i32) > x_i128;
+        //~^ ERROR mismatched types
+        x_i32 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_i64 > x_i8.into();
+        //~^ ERROR mismatched types
+        x_i64 > x_i16.into();
+        //~^ ERROR mismatched types
+        x_i64 > x_i32.into();
+        //~^ ERROR mismatched types
+        i128::from(x_i64) > x_i128;
+        //~^ ERROR mismatched types
+        x_i64 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_i128 > x_i8.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_i16.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_i32.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_i64.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_isize > x_i8.into();
+        //~^ ERROR mismatched types
+        x_isize > x_i16.into();
+        //~^ ERROR mismatched types
+        x_isize > x_i32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_isize > x_i64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_isize > x_i128.try_into().unwrap();
+        //~^ ERROR mismatched types
+    }
+
+    /* u<->i */
+    {
+        x_u8 > x_i8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        i16::from(x_u8) > x_i16;
+        //~^ ERROR mismatched types
+        i32::from(x_u8) > x_i32;
+        //~^ ERROR mismatched types
+        i64::from(x_u8) > x_i64;
+        //~^ ERROR mismatched types
+        i128::from(x_u8) > x_i128;
+        //~^ ERROR mismatched types
+        isize::from(x_u8) > x_isize;
+        //~^ ERROR mismatched types
+
+        x_u16 > x_i8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u16 > x_i16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        i32::from(x_u16) > x_i32;
+        //~^ ERROR mismatched types
+        i64::from(x_u16) > x_i64;
+        //~^ ERROR mismatched types
+        i128::from(x_u16) > x_i128;
+        //~^ ERROR mismatched types
+        x_u16 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_u32 > x_i8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u32 > x_i16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u32 > x_i32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        i64::from(x_u32) > x_i64;
+        //~^ ERROR mismatched types
+        i128::from(x_u32) > x_i128;
+        //~^ ERROR mismatched types
+        x_u32 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_u64 > x_i8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u64 > x_i16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u64 > x_i32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u64 > x_i64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        i128::from(x_u64) > x_i128;
+        //~^ ERROR mismatched types
+        x_u64 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_u128 > x_i8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u128 > x_i16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u128 > x_i32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u128 > x_i64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u128 > x_i128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_u128 > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_usize > x_i8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_i16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_i32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_i64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_i128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_usize > x_isize.try_into().unwrap();
+        //~^ ERROR mismatched types
+    }
+
+    /* i<->u */
+    {
+        x_i8 > x_u8.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i8 > x_u16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i8 > x_u32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i8 > x_u64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i8 > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i8 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_i16 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_i16 > x_u16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i16 > x_u32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i16 > x_u64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i16 > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i16 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_i32 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_i32 > x_u16.into();
+        //~^ ERROR mismatched types
+        x_i32 > x_u32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i32 > x_u64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i32 > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i32 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_i64 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_i64 > x_u16.into();
+        //~^ ERROR mismatched types
+        x_i64 > x_u32.into();
+        //~^ ERROR mismatched types
+        x_i64 > x_u64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i64 > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i64 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_i128 > x_u8.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_u16.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_u32.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_u64.into();
+        //~^ ERROR mismatched types
+        x_i128 > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_i128 > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+
+        x_isize > x_u8.into();
+        //~^ ERROR mismatched types
+        x_isize > x_u16.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_isize > x_u32.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_isize > x_u64.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_isize > x_u128.try_into().unwrap();
+        //~^ ERROR mismatched types
+        x_isize > x_usize.try_into().unwrap();
+        //~^ ERROR mismatched types
+    }
+}
diff --git a/src/test/ui/numeric/numeric-cast-binop.rs b/src/test/ui/numeric/numeric-cast-binop.rs
new file mode 100644
index 00000000000..c1ed8de8ad8
--- /dev/null
+++ b/src/test/ui/numeric/numeric-cast-binop.rs
@@ -0,0 +1,320 @@
+// run-rustfix
+
+// The `try_into` suggestion doesn't include this, but we do suggest it after applying it
+use std::convert::TryInto;
+
+#[allow(unused_must_use)]
+fn main() {
+    let x_usize: usize = 1;
+    let x_u128: u128 = 2;
+    let x_u64: u64 = 3;
+    let x_u32: u32 = 4;
+    let x_u16: u16 = 5;
+    let x_u8: u8 = 6;
+    let x_isize: isize = 7;
+    let x_i64: i64 = 8;
+    let x_i32: i32 = 9;
+    let x_i16: i16 = 10;
+    let x_i8: i8 = 11;
+    let x_i128: i128 = 12;
+
+    /* u<->u */
+    {
+        x_u8 > x_u16;
+        //~^ ERROR mismatched types
+        x_u8 > x_u32;
+        //~^ ERROR mismatched types
+        x_u8 > x_u64;
+        //~^ ERROR mismatched types
+        x_u8 > x_u128;
+        //~^ ERROR mismatched types
+        x_u8 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_u16 > x_u8;
+        //~^ ERROR mismatched types
+        x_u16 > x_u32;
+        //~^ ERROR mismatched types
+        x_u16 > x_u64;
+        //~^ ERROR mismatched types
+        x_u16 > x_u128;
+        //~^ ERROR mismatched types
+        x_u16 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_u32 > x_u8;
+        //~^ ERROR mismatched types
+        x_u32 > x_u16;
+        //~^ ERROR mismatched types
+        x_u32 > x_u64;
+        //~^ ERROR mismatched types
+        x_u32 > x_u128;
+        //~^ ERROR mismatched types
+        x_u32 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_u64 > x_u8;
+        //~^ ERROR mismatched types
+        x_u64 > x_u16;
+        //~^ ERROR mismatched types
+        x_u64 > x_u32;
+        //~^ ERROR mismatched types
+        x_u64 > x_u128;
+        //~^ ERROR mismatched types
+        x_u64 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_u128 > x_u8;
+        //~^ ERROR mismatched types
+        x_u128 > x_u16;
+        //~^ ERROR mismatched types
+        x_u128 > x_u32;
+        //~^ ERROR mismatched types
+        x_u128 > x_u64;
+        //~^ ERROR mismatched types
+        x_u128 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_usize > x_u8;
+        //~^ ERROR mismatched types
+        x_usize > x_u16;
+        //~^ ERROR mismatched types
+        x_usize > x_u32;
+        //~^ ERROR mismatched types
+        x_usize > x_u64;
+        //~^ ERROR mismatched types
+        x_usize > x_u128;
+        //~^ ERROR mismatched types
+    }
+
+    /* i<->i */
+    {
+        x_i8 > x_i16;
+        //~^ ERROR mismatched types
+        x_i8 > x_i32;
+        //~^ ERROR mismatched types
+        x_i8 > x_i64;
+        //~^ ERROR mismatched types
+        x_i8 > x_i128;
+        //~^ ERROR mismatched types
+        x_i8 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_i16 > x_i8;
+        //~^ ERROR mismatched types
+        x_i16 > x_i32;
+        //~^ ERROR mismatched types
+        x_i16 > x_i64;
+        //~^ ERROR mismatched types
+        x_i16 > x_i128;
+        //~^ ERROR mismatched types
+        x_i16 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_i32 > x_i8;
+        //~^ ERROR mismatched types
+        x_i32 > x_i16;
+        //~^ ERROR mismatched types
+        x_i32 > x_i64;
+        //~^ ERROR mismatched types
+        x_i32 > x_i128;
+        //~^ ERROR mismatched types
+        x_i32 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_i64 > x_i8;
+        //~^ ERROR mismatched types
+        x_i64 > x_i16;
+        //~^ ERROR mismatched types
+        x_i64 > x_i32;
+        //~^ ERROR mismatched types
+        x_i64 > x_i128;
+        //~^ ERROR mismatched types
+        x_i64 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_i128 > x_i8;
+        //~^ ERROR mismatched types
+        x_i128 > x_i16;
+        //~^ ERROR mismatched types
+        x_i128 > x_i32;
+        //~^ ERROR mismatched types
+        x_i128 > x_i64;
+        //~^ ERROR mismatched types
+        x_i128 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_isize > x_i8;
+        //~^ ERROR mismatched types
+        x_isize > x_i16;
+        //~^ ERROR mismatched types
+        x_isize > x_i32;
+        //~^ ERROR mismatched types
+        x_isize > x_i64;
+        //~^ ERROR mismatched types
+        x_isize > x_i128;
+        //~^ ERROR mismatched types
+    }
+
+    /* u<->i */
+    {
+        x_u8 > x_i8;
+        //~^ ERROR mismatched types
+        x_u8 > x_i16;
+        //~^ ERROR mismatched types
+        x_u8 > x_i32;
+        //~^ ERROR mismatched types
+        x_u8 > x_i64;
+        //~^ ERROR mismatched types
+        x_u8 > x_i128;
+        //~^ ERROR mismatched types
+        x_u8 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_u16 > x_i8;
+        //~^ ERROR mismatched types
+        x_u16 > x_i16;
+        //~^ ERROR mismatched types
+        x_u16 > x_i32;
+        //~^ ERROR mismatched types
+        x_u16 > x_i64;
+        //~^ ERROR mismatched types
+        x_u16 > x_i128;
+        //~^ ERROR mismatched types
+        x_u16 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_u32 > x_i8;
+        //~^ ERROR mismatched types
+        x_u32 > x_i16;
+        //~^ ERROR mismatched types
+        x_u32 > x_i32;
+        //~^ ERROR mismatched types
+        x_u32 > x_i64;
+        //~^ ERROR mismatched types
+        x_u32 > x_i128;
+        //~^ ERROR mismatched types
+        x_u32 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_u64 > x_i8;
+        //~^ ERROR mismatched types
+        x_u64 > x_i16;
+        //~^ ERROR mismatched types
+        x_u64 > x_i32;
+        //~^ ERROR mismatched types
+        x_u64 > x_i64;
+        //~^ ERROR mismatched types
+        x_u64 > x_i128;
+        //~^ ERROR mismatched types
+        x_u64 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_u128 > x_i8;
+        //~^ ERROR mismatched types
+        x_u128 > x_i16;
+        //~^ ERROR mismatched types
+        x_u128 > x_i32;
+        //~^ ERROR mismatched types
+        x_u128 > x_i64;
+        //~^ ERROR mismatched types
+        x_u128 > x_i128;
+        //~^ ERROR mismatched types
+        x_u128 > x_isize;
+        //~^ ERROR mismatched types
+
+        x_usize > x_i8;
+        //~^ ERROR mismatched types
+        x_usize > x_i16;
+        //~^ ERROR mismatched types
+        x_usize > x_i32;
+        //~^ ERROR mismatched types
+        x_usize > x_i64;
+        //~^ ERROR mismatched types
+        x_usize > x_i128;
+        //~^ ERROR mismatched types
+        x_usize > x_isize;
+        //~^ ERROR mismatched types
+    }
+
+    /* i<->u */
+    {
+        x_i8 > x_u8;
+        //~^ ERROR mismatched types
+        x_i8 > x_u16;
+        //~^ ERROR mismatched types
+        x_i8 > x_u32;
+        //~^ ERROR mismatched types
+        x_i8 > x_u64;
+        //~^ ERROR mismatched types
+        x_i8 > x_u128;
+        //~^ ERROR mismatched types
+        x_i8 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_i16 > x_u8;
+        //~^ ERROR mismatched types
+        x_i16 > x_u16;
+        //~^ ERROR mismatched types
+        x_i16 > x_u32;
+        //~^ ERROR mismatched types
+        x_i16 > x_u64;
+        //~^ ERROR mismatched types
+        x_i16 > x_u128;
+        //~^ ERROR mismatched types
+        x_i16 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_i32 > x_u8;
+        //~^ ERROR mismatched types
+        x_i32 > x_u16;
+        //~^ ERROR mismatched types
+        x_i32 > x_u32;
+        //~^ ERROR mismatched types
+        x_i32 > x_u64;
+        //~^ ERROR mismatched types
+        x_i32 > x_u128;
+        //~^ ERROR mismatched types
+        x_i32 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_i64 > x_u8;
+        //~^ ERROR mismatched types
+        x_i64 > x_u16;
+        //~^ ERROR mismatched types
+        x_i64 > x_u32;
+        //~^ ERROR mismatched types
+        x_i64 > x_u64;
+        //~^ ERROR mismatched types
+        x_i64 > x_u128;
+        //~^ ERROR mismatched types
+        x_i64 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_i128 > x_u8;
+        //~^ ERROR mismatched types
+        x_i128 > x_u16;
+        //~^ ERROR mismatched types
+        x_i128 > x_u32;
+        //~^ ERROR mismatched types
+        x_i128 > x_u64;
+        //~^ ERROR mismatched types
+        x_i128 > x_u128;
+        //~^ ERROR mismatched types
+        x_i128 > x_usize;
+        //~^ ERROR mismatched types
+
+        x_isize > x_u8;
+        //~^ ERROR mismatched types
+        x_isize > x_u16;
+        //~^ ERROR mismatched types
+        x_isize > x_u32;
+        //~^ ERROR mismatched types
+        x_isize > x_u64;
+        //~^ ERROR mismatched types
+        x_isize > x_u128;
+        //~^ ERROR mismatched types
+        x_isize > x_usize;
+        //~^ ERROR mismatched types
+    }
+}
diff --git a/src/test/ui/numeric/numeric-cast-binop.stderr b/src/test/ui/numeric/numeric-cast-binop.stderr
new file mode 100644
index 00000000000..47be817b789
--- /dev/null
+++ b/src/test/ui/numeric/numeric-cast-binop.stderr
@@ -0,0 +1,1385 @@
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:23:16
+   |
+LL |         x_u8 > x_u16;
+   |                ^^^^^ expected `u8`, found `u16`
+   |
+help: you can convert `x_u8` from `u8` to `u16`, matching the type of `x_u16`
+   |
+LL |         u16::from(x_u8) > x_u16;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:25:16
+   |
+LL |         x_u8 > x_u32;
+   |                ^^^^^ expected `u8`, found `u32`
+   |
+help: you can convert `x_u8` from `u8` to `u32`, matching the type of `x_u32`
+   |
+LL |         u32::from(x_u8) > x_u32;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:27:16
+   |
+LL |         x_u8 > x_u64;
+   |                ^^^^^ expected `u8`, found `u64`
+   |
+help: you can convert `x_u8` from `u8` to `u64`, matching the type of `x_u64`
+   |
+LL |         u64::from(x_u8) > x_u64;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:29:16
+   |
+LL |         x_u8 > x_u128;
+   |                ^^^^^^ expected `u8`, found `u128`
+   |
+help: you can convert `x_u8` from `u8` to `u128`, matching the type of `x_u128`
+   |
+LL |         u128::from(x_u8) > x_u128;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:31:16
+   |
+LL |         x_u8 > x_usize;
+   |                ^^^^^^^ expected `u8`, found `usize`
+   |
+help: you can convert `x_u8` from `u8` to `usize`, matching the type of `x_usize`
+   |
+LL |         usize::from(x_u8) > x_usize;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:34:17
+   |
+LL |         x_u16 > x_u8;
+   |                 ^^^^
+   |                 |
+   |                 expected `u16`, found `u8`
+   |                 help: you can convert an `u8` to `u16`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:36:17
+   |
+LL |         x_u16 > x_u32;
+   |                 ^^^^^ expected `u16`, found `u32`
+   |
+help: you can convert `x_u16` from `u16` to `u32`, matching the type of `x_u32`
+   |
+LL |         u32::from(x_u16) > x_u32;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:38:17
+   |
+LL |         x_u16 > x_u64;
+   |                 ^^^^^ expected `u16`, found `u64`
+   |
+help: you can convert `x_u16` from `u16` to `u64`, matching the type of `x_u64`
+   |
+LL |         u64::from(x_u16) > x_u64;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:40:17
+   |
+LL |         x_u16 > x_u128;
+   |                 ^^^^^^ expected `u16`, found `u128`
+   |
+help: you can convert `x_u16` from `u16` to `u128`, matching the type of `x_u128`
+   |
+LL |         u128::from(x_u16) > x_u128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:42:17
+   |
+LL |         x_u16 > x_usize;
+   |                 ^^^^^^^ expected `u16`, found `usize`
+   |
+help: you can convert `x_u16` from `u16` to `usize`, matching the type of `x_usize`
+   |
+LL |         usize::from(x_u16) > x_usize;
+   |         ^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:45:17
+   |
+LL |         x_u32 > x_u8;
+   |                 ^^^^
+   |                 |
+   |                 expected `u32`, found `u8`
+   |                 help: you can convert an `u8` to `u32`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:47:17
+   |
+LL |         x_u32 > x_u16;
+   |                 ^^^^^
+   |                 |
+   |                 expected `u32`, found `u16`
+   |                 help: you can convert an `u16` to `u32`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:49:17
+   |
+LL |         x_u32 > x_u64;
+   |                 ^^^^^ expected `u32`, found `u64`
+   |
+help: you can convert `x_u32` from `u32` to `u64`, matching the type of `x_u64`
+   |
+LL |         u64::from(x_u32) > x_u64;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:51:17
+   |
+LL |         x_u32 > x_u128;
+   |                 ^^^^^^ expected `u32`, found `u128`
+   |
+help: you can convert `x_u32` from `u32` to `u128`, matching the type of `x_u128`
+   |
+LL |         u128::from(x_u32) > x_u128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:53:17
+   |
+LL |         x_u32 > x_usize;
+   |                 ^^^^^^^ expected `u32`, found `usize`
+   |
+help: you can convert an `usize` to `u32` and panic if the converted value wouldn't fit
+   |
+LL |         x_u32 > x_usize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:56:17
+   |
+LL |         x_u64 > x_u8;
+   |                 ^^^^
+   |                 |
+   |                 expected `u64`, found `u8`
+   |                 help: you can convert an `u8` to `u64`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:58:17
+   |
+LL |         x_u64 > x_u16;
+   |                 ^^^^^
+   |                 |
+   |                 expected `u64`, found `u16`
+   |                 help: you can convert an `u16` to `u64`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:60:17
+   |
+LL |         x_u64 > x_u32;
+   |                 ^^^^^
+   |                 |
+   |                 expected `u64`, found `u32`
+   |                 help: you can convert an `u32` to `u64`: `x_u32.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:62:17
+   |
+LL |         x_u64 > x_u128;
+   |                 ^^^^^^ expected `u64`, found `u128`
+   |
+help: you can convert `x_u64` from `u64` to `u128`, matching the type of `x_u128`
+   |
+LL |         u128::from(x_u64) > x_u128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:64:17
+   |
+LL |         x_u64 > x_usize;
+   |                 ^^^^^^^ expected `u64`, found `usize`
+   |
+help: you can convert an `usize` to `u64` and panic if the converted value wouldn't fit
+   |
+LL |         x_u64 > x_usize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:67:18
+   |
+LL |         x_u128 > x_u8;
+   |                  ^^^^
+   |                  |
+   |                  expected `u128`, found `u8`
+   |                  help: you can convert an `u8` to `u128`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:69:18
+   |
+LL |         x_u128 > x_u16;
+   |                  ^^^^^
+   |                  |
+   |                  expected `u128`, found `u16`
+   |                  help: you can convert an `u16` to `u128`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:71:18
+   |
+LL |         x_u128 > x_u32;
+   |                  ^^^^^
+   |                  |
+   |                  expected `u128`, found `u32`
+   |                  help: you can convert an `u32` to `u128`: `x_u32.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:73:18
+   |
+LL |         x_u128 > x_u64;
+   |                  ^^^^^
+   |                  |
+   |                  expected `u128`, found `u64`
+   |                  help: you can convert an `u64` to `u128`: `x_u64.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:75:18
+   |
+LL |         x_u128 > x_usize;
+   |                  ^^^^^^^ expected `u128`, found `usize`
+   |
+help: you can convert an `usize` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_usize.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:78:19
+   |
+LL |         x_usize > x_u8;
+   |                   ^^^^
+   |                   |
+   |                   expected `usize`, found `u8`
+   |                   help: you can convert an `u8` to `usize`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:80:19
+   |
+LL |         x_usize > x_u16;
+   |                   ^^^^^
+   |                   |
+   |                   expected `usize`, found `u16`
+   |                   help: you can convert an `u16` to `usize`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:82:19
+   |
+LL |         x_usize > x_u32;
+   |                   ^^^^^ expected `usize`, found `u32`
+   |
+help: you can convert an `u32` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_u32.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:84:19
+   |
+LL |         x_usize > x_u64;
+   |                   ^^^^^ expected `usize`, found `u64`
+   |
+help: you can convert an `u64` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_u64.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:86:19
+   |
+LL |         x_usize > x_u128;
+   |                   ^^^^^^ expected `usize`, found `u128`
+   |
+help: you can convert an `u128` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_u128.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:92:16
+   |
+LL |         x_i8 > x_i16;
+   |                ^^^^^ expected `i8`, found `i16`
+   |
+help: you can convert `x_i8` from `i8` to `i16`, matching the type of `x_i16`
+   |
+LL |         i16::from(x_i8) > x_i16;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:94:16
+   |
+LL |         x_i8 > x_i32;
+   |                ^^^^^ expected `i8`, found `i32`
+   |
+help: you can convert `x_i8` from `i8` to `i32`, matching the type of `x_i32`
+   |
+LL |         i32::from(x_i8) > x_i32;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:96:16
+   |
+LL |         x_i8 > x_i64;
+   |                ^^^^^ expected `i8`, found `i64`
+   |
+help: you can convert `x_i8` from `i8` to `i64`, matching the type of `x_i64`
+   |
+LL |         i64::from(x_i8) > x_i64;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:98:16
+   |
+LL |         x_i8 > x_i128;
+   |                ^^^^^^ expected `i8`, found `i128`
+   |
+help: you can convert `x_i8` from `i8` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_i8) > x_i128;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:100:16
+   |
+LL |         x_i8 > x_isize;
+   |                ^^^^^^^ expected `i8`, found `isize`
+   |
+help: you can convert `x_i8` from `i8` to `isize`, matching the type of `x_isize`
+   |
+LL |         isize::from(x_i8) > x_isize;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:103:17
+   |
+LL |         x_i16 > x_i8;
+   |                 ^^^^
+   |                 |
+   |                 expected `i16`, found `i8`
+   |                 help: you can convert an `i8` to `i16`: `x_i8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:105:17
+   |
+LL |         x_i16 > x_i32;
+   |                 ^^^^^ expected `i16`, found `i32`
+   |
+help: you can convert `x_i16` from `i16` to `i32`, matching the type of `x_i32`
+   |
+LL |         i32::from(x_i16) > x_i32;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:107:17
+   |
+LL |         x_i16 > x_i64;
+   |                 ^^^^^ expected `i16`, found `i64`
+   |
+help: you can convert `x_i16` from `i16` to `i64`, matching the type of `x_i64`
+   |
+LL |         i64::from(x_i16) > x_i64;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:109:17
+   |
+LL |         x_i16 > x_i128;
+   |                 ^^^^^^ expected `i16`, found `i128`
+   |
+help: you can convert `x_i16` from `i16` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_i16) > x_i128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:111:17
+   |
+LL |         x_i16 > x_isize;
+   |                 ^^^^^^^ expected `i16`, found `isize`
+   |
+help: you can convert `x_i16` from `i16` to `isize`, matching the type of `x_isize`
+   |
+LL |         isize::from(x_i16) > x_isize;
+   |         ^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:114:17
+   |
+LL |         x_i32 > x_i8;
+   |                 ^^^^
+   |                 |
+   |                 expected `i32`, found `i8`
+   |                 help: you can convert an `i8` to `i32`: `x_i8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:116:17
+   |
+LL |         x_i32 > x_i16;
+   |                 ^^^^^
+   |                 |
+   |                 expected `i32`, found `i16`
+   |                 help: you can convert an `i16` to `i32`: `x_i16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:118:17
+   |
+LL |         x_i32 > x_i64;
+   |                 ^^^^^ expected `i32`, found `i64`
+   |
+help: you can convert `x_i32` from `i32` to `i64`, matching the type of `x_i64`
+   |
+LL |         i64::from(x_i32) > x_i64;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:120:17
+   |
+LL |         x_i32 > x_i128;
+   |                 ^^^^^^ expected `i32`, found `i128`
+   |
+help: you can convert `x_i32` from `i32` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_i32) > x_i128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:122:17
+   |
+LL |         x_i32 > x_isize;
+   |                 ^^^^^^^ expected `i32`, found `isize`
+   |
+help: you can convert an `isize` to `i32` and panic if the converted value wouldn't fit
+   |
+LL |         x_i32 > x_isize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:125:17
+   |
+LL |         x_i64 > x_i8;
+   |                 ^^^^
+   |                 |
+   |                 expected `i64`, found `i8`
+   |                 help: you can convert an `i8` to `i64`: `x_i8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:127:17
+   |
+LL |         x_i64 > x_i16;
+   |                 ^^^^^
+   |                 |
+   |                 expected `i64`, found `i16`
+   |                 help: you can convert an `i16` to `i64`: `x_i16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:129:17
+   |
+LL |         x_i64 > x_i32;
+   |                 ^^^^^
+   |                 |
+   |                 expected `i64`, found `i32`
+   |                 help: you can convert an `i32` to `i64`: `x_i32.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:131:17
+   |
+LL |         x_i64 > x_i128;
+   |                 ^^^^^^ expected `i64`, found `i128`
+   |
+help: you can convert `x_i64` from `i64` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_i64) > x_i128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:133:17
+   |
+LL |         x_i64 > x_isize;
+   |                 ^^^^^^^ expected `i64`, found `isize`
+   |
+help: you can convert an `isize` to `i64` and panic if the converted value wouldn't fit
+   |
+LL |         x_i64 > x_isize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:136:18
+   |
+LL |         x_i128 > x_i8;
+   |                  ^^^^
+   |                  |
+   |                  expected `i128`, found `i8`
+   |                  help: you can convert an `i8` to `i128`: `x_i8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:138:18
+   |
+LL |         x_i128 > x_i16;
+   |                  ^^^^^
+   |                  |
+   |                  expected `i128`, found `i16`
+   |                  help: you can convert an `i16` to `i128`: `x_i16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:140:18
+   |
+LL |         x_i128 > x_i32;
+   |                  ^^^^^
+   |                  |
+   |                  expected `i128`, found `i32`
+   |                  help: you can convert an `i32` to `i128`: `x_i32.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:142:18
+   |
+LL |         x_i128 > x_i64;
+   |                  ^^^^^
+   |                  |
+   |                  expected `i128`, found `i64`
+   |                  help: you can convert an `i64` to `i128`: `x_i64.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:144:18
+   |
+LL |         x_i128 > x_isize;
+   |                  ^^^^^^^ expected `i128`, found `isize`
+   |
+help: you can convert an `isize` to `i128` and panic if the converted value wouldn't fit
+   |
+LL |         x_i128 > x_isize.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:147:19
+   |
+LL |         x_isize > x_i8;
+   |                   ^^^^
+   |                   |
+   |                   expected `isize`, found `i8`
+   |                   help: you can convert an `i8` to `isize`: `x_i8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:149:19
+   |
+LL |         x_isize > x_i16;
+   |                   ^^^^^
+   |                   |
+   |                   expected `isize`, found `i16`
+   |                   help: you can convert an `i16` to `isize`: `x_i16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:151:19
+   |
+LL |         x_isize > x_i32;
+   |                   ^^^^^ expected `isize`, found `i32`
+   |
+help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_i32.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:153:19
+   |
+LL |         x_isize > x_i64;
+   |                   ^^^^^ expected `isize`, found `i64`
+   |
+help: you can convert an `i64` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_i64.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:155:19
+   |
+LL |         x_isize > x_i128;
+   |                   ^^^^^^ expected `isize`, found `i128`
+   |
+help: you can convert an `i128` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_i128.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:161:16
+   |
+LL |         x_u8 > x_i8;
+   |                ^^^^ expected `u8`, found `i8`
+   |
+help: you can convert an `i8` to `u8` and panic if the converted value wouldn't fit
+   |
+LL |         x_u8 > x_i8.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:163:16
+   |
+LL |         x_u8 > x_i16;
+   |                ^^^^^ expected `u8`, found `i16`
+   |
+help: you can convert `x_u8` from `u8` to `i16`, matching the type of `x_i16`
+   |
+LL |         i16::from(x_u8) > x_i16;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:165:16
+   |
+LL |         x_u8 > x_i32;
+   |                ^^^^^ expected `u8`, found `i32`
+   |
+help: you can convert `x_u8` from `u8` to `i32`, matching the type of `x_i32`
+   |
+LL |         i32::from(x_u8) > x_i32;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:167:16
+   |
+LL |         x_u8 > x_i64;
+   |                ^^^^^ expected `u8`, found `i64`
+   |
+help: you can convert `x_u8` from `u8` to `i64`, matching the type of `x_i64`
+   |
+LL |         i64::from(x_u8) > x_i64;
+   |         ^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:169:16
+   |
+LL |         x_u8 > x_i128;
+   |                ^^^^^^ expected `u8`, found `i128`
+   |
+help: you can convert `x_u8` from `u8` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_u8) > x_i128;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:171:16
+   |
+LL |         x_u8 > x_isize;
+   |                ^^^^^^^ expected `u8`, found `isize`
+   |
+help: you can convert `x_u8` from `u8` to `isize`, matching the type of `x_isize`
+   |
+LL |         isize::from(x_u8) > x_isize;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:174:17
+   |
+LL |         x_u16 > x_i8;
+   |                 ^^^^ expected `u16`, found `i8`
+   |
+help: you can convert an `i8` to `u16` and panic if the converted value wouldn't fit
+   |
+LL |         x_u16 > x_i8.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:176:17
+   |
+LL |         x_u16 > x_i16;
+   |                 ^^^^^ expected `u16`, found `i16`
+   |
+help: you can convert an `i16` to `u16` and panic if the converted value wouldn't fit
+   |
+LL |         x_u16 > x_i16.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:178:17
+   |
+LL |         x_u16 > x_i32;
+   |                 ^^^^^ expected `u16`, found `i32`
+   |
+help: you can convert `x_u16` from `u16` to `i32`, matching the type of `x_i32`
+   |
+LL |         i32::from(x_u16) > x_i32;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:180:17
+   |
+LL |         x_u16 > x_i64;
+   |                 ^^^^^ expected `u16`, found `i64`
+   |
+help: you can convert `x_u16` from `u16` to `i64`, matching the type of `x_i64`
+   |
+LL |         i64::from(x_u16) > x_i64;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:182:17
+   |
+LL |         x_u16 > x_i128;
+   |                 ^^^^^^ expected `u16`, found `i128`
+   |
+help: you can convert `x_u16` from `u16` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_u16) > x_i128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:184:17
+   |
+LL |         x_u16 > x_isize;
+   |                 ^^^^^^^ expected `u16`, found `isize`
+   |
+help: you can convert an `isize` to `u16` and panic if the converted value wouldn't fit
+   |
+LL |         x_u16 > x_isize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:187:17
+   |
+LL |         x_u32 > x_i8;
+   |                 ^^^^ expected `u32`, found `i8`
+   |
+help: you can convert an `i8` to `u32` and panic if the converted value wouldn't fit
+   |
+LL |         x_u32 > x_i8.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:189:17
+   |
+LL |         x_u32 > x_i16;
+   |                 ^^^^^ expected `u32`, found `i16`
+   |
+help: you can convert an `i16` to `u32` and panic if the converted value wouldn't fit
+   |
+LL |         x_u32 > x_i16.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:191:17
+   |
+LL |         x_u32 > x_i32;
+   |                 ^^^^^ expected `u32`, found `i32`
+   |
+help: you can convert an `i32` to `u32` and panic if the converted value wouldn't fit
+   |
+LL |         x_u32 > x_i32.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:193:17
+   |
+LL |         x_u32 > x_i64;
+   |                 ^^^^^ expected `u32`, found `i64`
+   |
+help: you can convert `x_u32` from `u32` to `i64`, matching the type of `x_i64`
+   |
+LL |         i64::from(x_u32) > x_i64;
+   |         ^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:195:17
+   |
+LL |         x_u32 > x_i128;
+   |                 ^^^^^^ expected `u32`, found `i128`
+   |
+help: you can convert `x_u32` from `u32` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_u32) > x_i128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:197:17
+   |
+LL |         x_u32 > x_isize;
+   |                 ^^^^^^^ expected `u32`, found `isize`
+   |
+help: you can convert an `isize` to `u32` and panic if the converted value wouldn't fit
+   |
+LL |         x_u32 > x_isize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:200:17
+   |
+LL |         x_u64 > x_i8;
+   |                 ^^^^ expected `u64`, found `i8`
+   |
+help: you can convert an `i8` to `u64` and panic if the converted value wouldn't fit
+   |
+LL |         x_u64 > x_i8.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:202:17
+   |
+LL |         x_u64 > x_i16;
+   |                 ^^^^^ expected `u64`, found `i16`
+   |
+help: you can convert an `i16` to `u64` and panic if the converted value wouldn't fit
+   |
+LL |         x_u64 > x_i16.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:204:17
+   |
+LL |         x_u64 > x_i32;
+   |                 ^^^^^ expected `u64`, found `i32`
+   |
+help: you can convert an `i32` to `u64` and panic if the converted value wouldn't fit
+   |
+LL |         x_u64 > x_i32.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:206:17
+   |
+LL |         x_u64 > x_i64;
+   |                 ^^^^^ expected `u64`, found `i64`
+   |
+help: you can convert an `i64` to `u64` and panic if the converted value wouldn't fit
+   |
+LL |         x_u64 > x_i64.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:208:17
+   |
+LL |         x_u64 > x_i128;
+   |                 ^^^^^^ expected `u64`, found `i128`
+   |
+help: you can convert `x_u64` from `u64` to `i128`, matching the type of `x_i128`
+   |
+LL |         i128::from(x_u64) > x_i128;
+   |         ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:210:17
+   |
+LL |         x_u64 > x_isize;
+   |                 ^^^^^^^ expected `u64`, found `isize`
+   |
+help: you can convert an `isize` to `u64` and panic if the converted value wouldn't fit
+   |
+LL |         x_u64 > x_isize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:213:18
+   |
+LL |         x_u128 > x_i8;
+   |                  ^^^^ expected `u128`, found `i8`
+   |
+help: you can convert an `i8` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_i8.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:215:18
+   |
+LL |         x_u128 > x_i16;
+   |                  ^^^^^ expected `u128`, found `i16`
+   |
+help: you can convert an `i16` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_i16.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:217:18
+   |
+LL |         x_u128 > x_i32;
+   |                  ^^^^^ expected `u128`, found `i32`
+   |
+help: you can convert an `i32` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_i32.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:219:18
+   |
+LL |         x_u128 > x_i64;
+   |                  ^^^^^ expected `u128`, found `i64`
+   |
+help: you can convert an `i64` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_i64.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:221:18
+   |
+LL |         x_u128 > x_i128;
+   |                  ^^^^^^ expected `u128`, found `i128`
+   |
+help: you can convert an `i128` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_i128.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:223:18
+   |
+LL |         x_u128 > x_isize;
+   |                  ^^^^^^^ expected `u128`, found `isize`
+   |
+help: you can convert an `isize` to `u128` and panic if the converted value wouldn't fit
+   |
+LL |         x_u128 > x_isize.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:226:19
+   |
+LL |         x_usize > x_i8;
+   |                   ^^^^ expected `usize`, found `i8`
+   |
+help: you can convert an `i8` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_i8.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:228:19
+   |
+LL |         x_usize > x_i16;
+   |                   ^^^^^ expected `usize`, found `i16`
+   |
+help: you can convert an `i16` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_i16.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:230:19
+   |
+LL |         x_usize > x_i32;
+   |                   ^^^^^ expected `usize`, found `i32`
+   |
+help: you can convert an `i32` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_i32.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:232:19
+   |
+LL |         x_usize > x_i64;
+   |                   ^^^^^ expected `usize`, found `i64`
+   |
+help: you can convert an `i64` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_i64.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:234:19
+   |
+LL |         x_usize > x_i128;
+   |                   ^^^^^^ expected `usize`, found `i128`
+   |
+help: you can convert an `i128` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_i128.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:236:19
+   |
+LL |         x_usize > x_isize;
+   |                   ^^^^^^^ expected `usize`, found `isize`
+   |
+help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit
+   |
+LL |         x_usize > x_isize.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:242:16
+   |
+LL |         x_i8 > x_u8;
+   |                ^^^^ expected `i8`, found `u8`
+   |
+help: you can convert an `u8` to `i8` and panic if the converted value wouldn't fit
+   |
+LL |         x_i8 > x_u8.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:244:16
+   |
+LL |         x_i8 > x_u16;
+   |                ^^^^^ expected `i8`, found `u16`
+   |
+help: you can convert an `u16` to `i8` and panic if the converted value wouldn't fit
+   |
+LL |         x_i8 > x_u16.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:246:16
+   |
+LL |         x_i8 > x_u32;
+   |                ^^^^^ expected `i8`, found `u32`
+   |
+help: you can convert an `u32` to `i8` and panic if the converted value wouldn't fit
+   |
+LL |         x_i8 > x_u32.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:248:16
+   |
+LL |         x_i8 > x_u64;
+   |                ^^^^^ expected `i8`, found `u64`
+   |
+help: you can convert an `u64` to `i8` and panic if the converted value wouldn't fit
+   |
+LL |         x_i8 > x_u64.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:250:16
+   |
+LL |         x_i8 > x_u128;
+   |                ^^^^^^ expected `i8`, found `u128`
+   |
+help: you can convert an `u128` to `i8` and panic if the converted value wouldn't fit
+   |
+LL |         x_i8 > x_u128.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:252:16
+   |
+LL |         x_i8 > x_usize;
+   |                ^^^^^^^ expected `i8`, found `usize`
+   |
+help: you can convert an `usize` to `i8` and panic if the converted value wouldn't fit
+   |
+LL |         x_i8 > x_usize.try_into().unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:255:17
+   |
+LL |         x_i16 > x_u8;
+   |                 ^^^^
+   |                 |
+   |                 expected `i16`, found `u8`
+   |                 help: you can convert an `u8` to `i16`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:257:17
+   |
+LL |         x_i16 > x_u16;
+   |                 ^^^^^ expected `i16`, found `u16`
+   |
+help: you can convert an `u16` to `i16` and panic if the converted value wouldn't fit
+   |
+LL |         x_i16 > x_u16.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:259:17
+   |
+LL |         x_i16 > x_u32;
+   |                 ^^^^^ expected `i16`, found `u32`
+   |
+help: you can convert an `u32` to `i16` and panic if the converted value wouldn't fit
+   |
+LL |         x_i16 > x_u32.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:261:17
+   |
+LL |         x_i16 > x_u64;
+   |                 ^^^^^ expected `i16`, found `u64`
+   |
+help: you can convert an `u64` to `i16` and panic if the converted value wouldn't fit
+   |
+LL |         x_i16 > x_u64.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:263:17
+   |
+LL |         x_i16 > x_u128;
+   |                 ^^^^^^ expected `i16`, found `u128`
+   |
+help: you can convert an `u128` to `i16` and panic if the converted value wouldn't fit
+   |
+LL |         x_i16 > x_u128.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:265:17
+   |
+LL |         x_i16 > x_usize;
+   |                 ^^^^^^^ expected `i16`, found `usize`
+   |
+help: you can convert an `usize` to `i16` and panic if the converted value wouldn't fit
+   |
+LL |         x_i16 > x_usize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:268:17
+   |
+LL |         x_i32 > x_u8;
+   |                 ^^^^
+   |                 |
+   |                 expected `i32`, found `u8`
+   |                 help: you can convert an `u8` to `i32`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:270:17
+   |
+LL |         x_i32 > x_u16;
+   |                 ^^^^^
+   |                 |
+   |                 expected `i32`, found `u16`
+   |                 help: you can convert an `u16` to `i32`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:272:17
+   |
+LL |         x_i32 > x_u32;
+   |                 ^^^^^ expected `i32`, found `u32`
+   |
+help: you can convert an `u32` to `i32` and panic if the converted value wouldn't fit
+   |
+LL |         x_i32 > x_u32.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:274:17
+   |
+LL |         x_i32 > x_u64;
+   |                 ^^^^^ expected `i32`, found `u64`
+   |
+help: you can convert an `u64` to `i32` and panic if the converted value wouldn't fit
+   |
+LL |         x_i32 > x_u64.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:276:17
+   |
+LL |         x_i32 > x_u128;
+   |                 ^^^^^^ expected `i32`, found `u128`
+   |
+help: you can convert an `u128` to `i32` and panic if the converted value wouldn't fit
+   |
+LL |         x_i32 > x_u128.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:278:17
+   |
+LL |         x_i32 > x_usize;
+   |                 ^^^^^^^ expected `i32`, found `usize`
+   |
+help: you can convert an `usize` to `i32` and panic if the converted value wouldn't fit
+   |
+LL |         x_i32 > x_usize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:281:17
+   |
+LL |         x_i64 > x_u8;
+   |                 ^^^^
+   |                 |
+   |                 expected `i64`, found `u8`
+   |                 help: you can convert an `u8` to `i64`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:283:17
+   |
+LL |         x_i64 > x_u16;
+   |                 ^^^^^
+   |                 |
+   |                 expected `i64`, found `u16`
+   |                 help: you can convert an `u16` to `i64`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:285:17
+   |
+LL |         x_i64 > x_u32;
+   |                 ^^^^^
+   |                 |
+   |                 expected `i64`, found `u32`
+   |                 help: you can convert an `u32` to `i64`: `x_u32.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:287:17
+   |
+LL |         x_i64 > x_u64;
+   |                 ^^^^^ expected `i64`, found `u64`
+   |
+help: you can convert an `u64` to `i64` and panic if the converted value wouldn't fit
+   |
+LL |         x_i64 > x_u64.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:289:17
+   |
+LL |         x_i64 > x_u128;
+   |                 ^^^^^^ expected `i64`, found `u128`
+   |
+help: you can convert an `u128` to `i64` and panic if the converted value wouldn't fit
+   |
+LL |         x_i64 > x_u128.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:291:17
+   |
+LL |         x_i64 > x_usize;
+   |                 ^^^^^^^ expected `i64`, found `usize`
+   |
+help: you can convert an `usize` to `i64` and panic if the converted value wouldn't fit
+   |
+LL |         x_i64 > x_usize.try_into().unwrap();
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:294:18
+   |
+LL |         x_i128 > x_u8;
+   |                  ^^^^
+   |                  |
+   |                  expected `i128`, found `u8`
+   |                  help: you can convert an `u8` to `i128`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:296:18
+   |
+LL |         x_i128 > x_u16;
+   |                  ^^^^^
+   |                  |
+   |                  expected `i128`, found `u16`
+   |                  help: you can convert an `u16` to `i128`: `x_u16.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:298:18
+   |
+LL |         x_i128 > x_u32;
+   |                  ^^^^^
+   |                  |
+   |                  expected `i128`, found `u32`
+   |                  help: you can convert an `u32` to `i128`: `x_u32.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:300:18
+   |
+LL |         x_i128 > x_u64;
+   |                  ^^^^^
+   |                  |
+   |                  expected `i128`, found `u64`
+   |                  help: you can convert an `u64` to `i128`: `x_u64.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:302:18
+   |
+LL |         x_i128 > x_u128;
+   |                  ^^^^^^ expected `i128`, found `u128`
+   |
+help: you can convert an `u128` to `i128` and panic if the converted value wouldn't fit
+   |
+LL |         x_i128 > x_u128.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:304:18
+   |
+LL |         x_i128 > x_usize;
+   |                  ^^^^^^^ expected `i128`, found `usize`
+   |
+help: you can convert an `usize` to `i128` and panic if the converted value wouldn't fit
+   |
+LL |         x_i128 > x_usize.try_into().unwrap();
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:307:19
+   |
+LL |         x_isize > x_u8;
+   |                   ^^^^
+   |                   |
+   |                   expected `isize`, found `u8`
+   |                   help: you can convert an `u8` to `isize`: `x_u8.into()`
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:309:19
+   |
+LL |         x_isize > x_u16;
+   |                   ^^^^^ expected `isize`, found `u16`
+   |
+help: you can convert an `u16` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_u16.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:311:19
+   |
+LL |         x_isize > x_u32;
+   |                   ^^^^^ expected `isize`, found `u32`
+   |
+help: you can convert an `u32` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_u32.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:313:19
+   |
+LL |         x_isize > x_u64;
+   |                   ^^^^^ expected `isize`, found `u64`
+   |
+help: you can convert an `u64` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_u64.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:315:19
+   |
+LL |         x_isize > x_u128;
+   |                   ^^^^^^ expected `isize`, found `u128`
+   |
+help: you can convert an `u128` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_u128.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/numeric-cast-binop.rs:317:19
+   |
+LL |         x_isize > x_usize;
+   |                   ^^^^^^^ expected `isize`, found `usize`
+   |
+help: you can convert an `usize` to `isize` and panic if the converted value wouldn't fit
+   |
+LL |         x_isize > x_usize.try_into().unwrap();
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 132 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs b/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs
index c8bc4a2a8d5..31b3407a46e 100644
--- a/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs
+++ b/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs
@@ -4,15 +4,15 @@
 // We wrap patterns in a tuple because top-level or-patterns were special-cased.
 fn main() {
     match (0u8, 0u8) {
-        //~^ ERROR non-exhaustive patterns: `(2u8..=std::u8::MAX, _)`
+        //~^ ERROR non-exhaustive patterns: `(2u8..=u8::MAX, _)`
         (0 | 1, 2 | 3) => {}
     }
     match ((0u8,),) {
-        //~^ ERROR non-exhaustive patterns: `((4u8..=std::u8::MAX))`
+        //~^ ERROR non-exhaustive patterns: `((4u8..=u8::MAX))`
         ((0 | 1,) | (2 | 3,),) => {}
     }
     match (Some(0u8),) {
-        //~^ ERROR non-exhaustive patterns: `(Some(2u8..=std::u8::MAX))`
+        //~^ ERROR non-exhaustive patterns: `(Some(2u8..=u8::MAX))`
         (None | Some(0 | 1),) => {}
     }
 }
diff --git a/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr b/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr
index b45e947f3ea..653f4978ab3 100644
--- a/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr
+++ b/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr
@@ -1,26 +1,26 @@
-error[E0004]: non-exhaustive patterns: `(2u8..=std::u8::MAX, _)` not covered
+error[E0004]: non-exhaustive patterns: `(2u8..=u8::MAX, _)` not covered
   --> $DIR/exhaustiveness-non-exhaustive.rs:6:11
    |
 LL |     match (0u8, 0u8) {
-   |           ^^^^^^^^^^ pattern `(2u8..=std::u8::MAX, _)` not covered
+   |           ^^^^^^^^^^ pattern `(2u8..=u8::MAX, _)` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `(u8, u8)`
 
-error[E0004]: non-exhaustive patterns: `((4u8..=std::u8::MAX))` not covered
+error[E0004]: non-exhaustive patterns: `((4u8..=u8::MAX))` not covered
   --> $DIR/exhaustiveness-non-exhaustive.rs:10:11
    |
 LL |     match ((0u8,),) {
-   |           ^^^^^^^^^ pattern `((4u8..=std::u8::MAX))` not covered
+   |           ^^^^^^^^^ pattern `((4u8..=u8::MAX))` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `((u8,),)`
 
-error[E0004]: non-exhaustive patterns: `(Some(2u8..=std::u8::MAX))` not covered
+error[E0004]: non-exhaustive patterns: `(Some(2u8..=u8::MAX))` not covered
   --> $DIR/exhaustiveness-non-exhaustive.rs:14:11
    |
 LL |     match (Some(0u8),) {
-   |           ^^^^^^^^^^^^ pattern `(Some(2u8..=std::u8::MAX))` not covered
+   |           ^^^^^^^^^^^^ pattern `(Some(2u8..=u8::MAX))` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `(std::option::Option<u8>,)`
diff --git a/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr b/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr
index 351700a6aa5..2eadef9cb5c 100644
--- a/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr
+++ b/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr
@@ -1,8 +1,8 @@
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=-1i32` and `3i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=-1i32` and `3i32..=i32::MAX` not covered
   --> $DIR/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs:4:9
    |
 LL |     let 0 | (1 | 2) = 0;
-   |         ^^^^^^^^^^^ patterns `std::i32::MIN..=-1i32` and `3i32..=std::i32::MAX` not covered
+   |         ^^^^^^^^^^^ patterns `i32::MIN..=-1i32` and `3i32..=i32::MAX` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
@@ -12,11 +12,11 @@ help: you might want to use `if let` to ignore the variant that isn't matched
 LL |     if let 0 | (1 | 2) = 0 { /* */ }
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error[E0004]: non-exhaustive patterns: `std::i32::MIN..=-1i32` and `3i32..=std::i32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i32::MIN..=-1i32` and `3i32..=i32::MAX` not covered
   --> $DIR/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs:5:11
    |
 LL |     match 0 {
-   |           ^ patterns `std::i32::MIN..=-1i32` and `3i32..=std::i32::MAX` not covered
+   |           ^ patterns `i32::MIN..=-1i32` and `3i32..=i32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
diff --git a/src/test/ui/parser/issue-8537.stderr b/src/test/ui/parser/issue-8537.stderr
index a0793d94653..e33adb239d7 100644
--- a/src/test/ui/parser/issue-8537.stderr
+++ b/src/test/ui/parser/issue-8537.stderr
@@ -4,7 +4,7 @@ error[E0703]: invalid ABI: found `invalid-ab_isize`
 LL |   "invalid-ab_isize"
    |   ^^^^^^^^^^^^^^^^^^ invalid ABI
    |
-   = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, efiapi, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
+   = help: valid ABIs: Rust, C, cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, efiapi, avr-interrupt, avr-non-blocking-interrupt, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/lex-bad-char-literals-4.stderr b/src/test/ui/parser/lex-bad-char-literals-4.stderr
index 8f8f806f6cf..fec4421c48a 100644
--- a/src/test/ui/parser/lex-bad-char-literals-4.stderr
+++ b/src/test/ui/parser/lex-bad-char-literals-4.stderr
@@ -1,4 +1,4 @@
-error: unterminated character literal
+error[E0762]: unterminated character literal
   --> $DIR/lex-bad-char-literals-4.rs:4:5
    |
 LL |     '●
@@ -6,3 +6,4 @@ LL |     '●
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0762`.
diff --git a/src/test/ui/parser/lex-bad-char-literals-7.stderr b/src/test/ui/parser/lex-bad-char-literals-7.stderr
index ee9aa869352..70ee8087b51 100644
--- a/src/test/ui/parser/lex-bad-char-literals-7.stderr
+++ b/src/test/ui/parser/lex-bad-char-literals-7.stderr
@@ -10,7 +10,7 @@ error: empty unicode escape (must have at least 1 hex digit)
 LL |     let _: char = '\u{}';
    |                    ^^^^
 
-error: unterminated character literal
+error[E0762]: unterminated character literal
   --> $DIR/lex-bad-char-literals-7.rs:11:13
    |
 LL |     let _ = ' hello // here's a comment
@@ -18,3 +18,4 @@ LL |     let _ = ' hello // here's a comment
 
 error: aborting due to 3 previous errors
 
+For more information about this error, try `rustc --explain E0762`.
diff --git a/src/test/ui/pattern/usefulness/exhaustive_integer_patterns.stderr b/src/test/ui/pattern/usefulness/exhaustive_integer_patterns.stderr
index edc5ece558a..6427a30b8f2 100644
--- a/src/test/ui/pattern/usefulness/exhaustive_integer_patterns.stderr
+++ b/src/test/ui/pattern/usefulness/exhaustive_integer_patterns.stderr
@@ -10,11 +10,11 @@ note: the lint level is defined here
 LL | #![deny(unreachable_patterns)]
    |         ^^^^^^^^^^^^^^^^^^^^
 
-error[E0004]: non-exhaustive patterns: `128u8..=std::u8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `128u8..=u8::MAX` not covered
   --> $DIR/exhaustive_integer_patterns.rs:28:11
    |
 LL |     match x {
-   |           ^ pattern `128u8..=std::u8::MAX` not covered
+   |           ^ pattern `128u8..=u8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
@@ -34,20 +34,20 @@ error: unreachable pattern
 LL |         -2..=20 => {}
    |         ^^^^^^^
 
-error[E0004]: non-exhaustive patterns: `std::i8::MIN..=-8i8`, `-6i8`, `121i8..=124i8` and 1 more not covered
+error[E0004]: non-exhaustive patterns: `i8::MIN..=-8i8`, `-6i8`, `121i8..=124i8` and 1 more not covered
   --> $DIR/exhaustive_integer_patterns.rs:41:11
    |
 LL |     match x {
-   |           ^ patterns `std::i8::MIN..=-8i8`, `-6i8`, `121i8..=124i8` and 1 more not covered
+   |           ^ patterns `i8::MIN..=-8i8`, `-6i8`, `121i8..=124i8` and 1 more not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
 
-error[E0004]: non-exhaustive patterns: `std::i8::MIN` not covered
+error[E0004]: non-exhaustive patterns: `i8::MIN` not covered
   --> $DIR/exhaustive_integer_patterns.rs:83:11
    |
 LL |     match 0i8 {
-   |           ^^^ pattern `std::i8::MIN` not covered
+   |           ^^^ pattern `i8::MIN` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i8`
@@ -61,20 +61,20 @@ LL |     match 0i16 {
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i16`
 
-error[E0004]: non-exhaustive patterns: `128u8..=std::u8::MAX` not covered
+error[E0004]: non-exhaustive patterns: `128u8..=u8::MAX` not covered
   --> $DIR/exhaustive_integer_patterns.rs:109:11
    |
 LL |     match 0u8 {
-   |           ^^^ pattern `128u8..=std::u8::MAX` not covered
+   |           ^^^ pattern `128u8..=u8::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u8`
 
-error[E0004]: non-exhaustive patterns: `(0u8, Some(_))` and `(2u8..=std::u8::MAX, Some(_))` not covered
+error[E0004]: non-exhaustive patterns: `(0u8, Some(_))` and `(2u8..=u8::MAX, Some(_))` not covered
   --> $DIR/exhaustive_integer_patterns.rs:121:11
    |
 LL |     match (0u8, Some(())) {
-   |           ^^^^^^^^^^^^^^^ patterns `(0u8, Some(_))` and `(2u8..=std::u8::MAX, Some(_))` not covered
+   |           ^^^^^^^^^^^^^^^ patterns `(0u8, Some(_))` and `(2u8..=u8::MAX, Some(_))` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `(u8, std::option::Option<()>)`
@@ -102,20 +102,20 @@ note: the lint level is defined here
 LL | #![deny(overlapping_patterns)]
    |         ^^^^^^^^^^^^^^^^^^^^
 
-error[E0004]: non-exhaustive patterns: `std::u128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `u128::MAX` not covered
   --> $DIR/exhaustive_integer_patterns.rs:146:11
    |
 LL |     match 0u128 {
-   |           ^^^^^ pattern `std::u128::MAX` not covered
+   |           ^^^^^ pattern `u128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
 
-error[E0004]: non-exhaustive patterns: `5u128..=std::u128::MAX` not covered
+error[E0004]: non-exhaustive patterns: `5u128..=u128::MAX` not covered
   --> $DIR/exhaustive_integer_patterns.rs:150:11
    |
 LL |     match 0u128 {
-   |           ^^^^^ pattern `5u128..=std::u128::MAX` not covered
+   |           ^^^^^ pattern `5u128..=u128::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `u128`
diff --git a/src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr b/src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr
index 323449eebc5..0e12b89de1b 100644
--- a/src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr
+++ b/src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr
@@ -1,8 +1,8 @@
-error[E0004]: non-exhaustive patterns: `&[0u8..=64u8, _, _, _]` and `&[66u8..=std::u8::MAX, _, _, _]` not covered
+error[E0004]: non-exhaustive patterns: `&[0u8..=64u8, _, _, _]` and `&[66u8..=u8::MAX, _, _, _]` not covered
   --> $DIR/match-byte-array-patterns-2.rs:4:11
    |
 LL |     match buf {
-   |           ^^^ patterns `&[0u8..=64u8, _, _, _]` and `&[66u8..=std::u8::MAX, _, _, _]` not covered
+   |           ^^^ patterns `&[0u8..=64u8, _, _, _]` and `&[66u8..=u8::MAX, _, _, _]` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `&[u8; 4]`
diff --git a/src/test/ui/pattern/usefulness/match-non-exhaustive.stderr b/src/test/ui/pattern/usefulness/match-non-exhaustive.stderr
index 84cfe1da315..c6a9329f9e8 100644
--- a/src/test/ui/pattern/usefulness/match-non-exhaustive.stderr
+++ b/src/test/ui/pattern/usefulness/match-non-exhaustive.stderr
@@ -1,8 +1,8 @@
-error[E0004]: non-exhaustive patterns: `std::i32::MIN..=0i32` and `2i32..=std::i32::MAX` not covered
+error[E0004]: non-exhaustive patterns: `i32::MIN..=0i32` and `2i32..=i32::MAX` not covered
   --> $DIR/match-non-exhaustive.rs:2:11
    |
 LL |     match 0 { 1 => () }
-   |           ^ patterns `std::i32::MIN..=0i32` and `2i32..=std::i32::MAX` not covered
+   |           ^ patterns `i32::MIN..=0i32` and `2i32..=i32::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `i32`
diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-match.rs b/src/test/ui/pattern/usefulness/non-exhaustive-match.rs
index 9947989dc12..9177345bc6f 100644
--- a/src/test/ui/pattern/usefulness/non-exhaustive-match.rs
+++ b/src/test/ui/pattern/usefulness/non-exhaustive-match.rs
@@ -11,8 +11,8 @@ fn main() {
     match Some(10) { //~ ERROR non-exhaustive patterns: `Some(_)` not covered
       None => {}
     }
-    match (2, 3, 4) { //~ ERROR non-exhaustive patterns: `(_, _, std::i32::MIN..=3i32)`
-                      //  and `(_, _, 5i32..=std::i32::MAX)` not covered
+    match (2, 3, 4) { //~ ERROR non-exhaustive patterns: `(_, _, i32::MIN..=3i32)`
+                      //  and `(_, _, 5i32..=i32::MAX)` not covered
       (_, _, 4) => {}
     }
     match (T::A, T::A) { //~ ERROR non-exhaustive patterns: `(A, A)` not covered
diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-match.stderr b/src/test/ui/pattern/usefulness/non-exhaustive-match.stderr
index 436a293b6ce..3cdbd8a3433 100644
--- a/src/test/ui/pattern/usefulness/non-exhaustive-match.stderr
+++ b/src/test/ui/pattern/usefulness/non-exhaustive-match.stderr
@@ -36,11 +36,11 @@ LL |     Some(#[stable(feature = "rust1", since = "1.0.0")] T),
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `std::option::Option<i32>`
 
-error[E0004]: non-exhaustive patterns: `(_, _, std::i32::MIN..=3i32)` and `(_, _, 5i32..=std::i32::MAX)` not covered
+error[E0004]: non-exhaustive patterns: `(_, _, i32::MIN..=3i32)` and `(_, _, 5i32..=i32::MAX)` not covered
   --> $DIR/non-exhaustive-match.rs:14:11
    |
 LL |     match (2, 3, 4) {
-   |           ^^^^^^^^^ patterns `(_, _, std::i32::MIN..=3i32)` and `(_, _, 5i32..=std::i32::MAX)` not covered
+   |           ^^^^^^^^^ patterns `(_, _, i32::MIN..=3i32)` and `(_, _, 5i32..=i32::MAX)` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `(i32, i32, i32)`
diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs b/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs
index d4afe17ca74..3ef2ead32cb 100644
--- a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs
+++ b/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs
@@ -5,5 +5,5 @@ fn func((1, (Some(1), 2..=3)): (isize, (Option<isize>, isize))) { }
 
 fn main() {
     let (1, (Some(1), 2..=3)) = (1, (None, 2));
-    //~^ ERROR refutable pattern in local binding: `(std::i32::MIN..=0i32, _)` and `(2i32..=std::i32::MAX, _)` not covered
+    //~^ ERROR refutable pattern in local binding: `(i32::MIN..=0i32, _)` and `(2i32..=i32::MAX, _)` not covered
 }
diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr b/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr
index f5895c01599..ac729ae9f7c 100644
--- a/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr
+++ b/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr
@@ -6,11 +6,11 @@ LL | fn func((1, (Some(1), 2..=3)): (isize, (Option<isize>, isize))) { }
    |
    = note: the matched value is of type `(isize, (std::option::Option<isize>, isize))`
 
-error[E0005]: refutable pattern in local binding: `(std::i32::MIN..=0i32, _)` and `(2i32..=std::i32::MAX, _)` not covered
+error[E0005]: refutable pattern in local binding: `(i32::MIN..=0i32, _)` and `(2i32..=i32::MAX, _)` not covered
   --> $DIR/refutable-pattern-errors.rs:7:9
    |
 LL |     let (1, (Some(1), 2..=3)) = (1, (None, 2));
-   |         ^^^^^^^^^^^^^^^^^^^^^ patterns `(std::i32::MIN..=0i32, _)` and `(2i32..=std::i32::MAX, _)` not covered
+   |         ^^^^^^^^^^^^^^^^^^^^^ patterns `(i32::MIN..=0i32, _)` and `(2i32..=i32::MAX, _)` not covered
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
diff --git a/src/test/ui/precise_pointer_size_matching.stderr b/src/test/ui/precise_pointer_size_matching.stderr
index 91ea323f07b..7b9e30f40fb 100644
--- a/src/test/ui/precise_pointer_size_matching.stderr
+++ b/src/test/ui/precise_pointer_size_matching.stderr
@@ -1,17 +1,17 @@
-error[E0004]: non-exhaustive patterns: `std::isize::MIN..=-6isize` and `21isize..=std::isize::MAX` not covered
+error[E0004]: non-exhaustive patterns: `isize::MIN..=-6isize` and `21isize..=isize::MAX` not covered
   --> $DIR/precise_pointer_size_matching.rs:24:11
    |
 LL |     match 0isize {
-   |           ^^^^^^ patterns `std::isize::MIN..=-6isize` and `21isize..=std::isize::MAX` not covered
+   |           ^^^^^^ patterns `isize::MIN..=-6isize` and `21isize..=isize::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `isize`
 
-error[E0004]: non-exhaustive patterns: `0usize` and `21usize..=std::usize::MAX` not covered
+error[E0004]: non-exhaustive patterns: `0usize` and `21usize..=usize::MAX` not covered
   --> $DIR/precise_pointer_size_matching.rs:29:11
    |
 LL |     match 0usize {
-   |           ^^^^^^ patterns `0usize` and `21usize..=std::usize::MAX` not covered
+   |           ^^^^^^ patterns `0usize` and `21usize..=usize::MAX` not covered
    |
    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
    = note: the matched value is of type `usize`
diff --git a/src/test/ui/privacy/private-in-public-assoc-ty.rs b/src/test/ui/privacy/private-in-public-assoc-ty.rs
index 62faae1f399..cd7c37cb04b 100644
--- a/src/test/ui/privacy/private-in-public-assoc-ty.rs
+++ b/src/test/ui/privacy/private-in-public-assoc-ty.rs
@@ -9,7 +9,9 @@ mod m {
     trait PrivTr {}
     impl PrivTr for Priv {}
     pub trait PubTrAux1<T> {}
-    pub trait PubTrAux2 { type A; }
+    pub trait PubTrAux2 {
+        type A;
+    }
     impl<T> PubTrAux1<T> for u8 {}
     impl PubTrAux2 for u8 {
         type A = Priv;
@@ -41,8 +43,9 @@ mod m {
 
         type Exist = impl PrivTr;
         //~^ ERROR private trait `m::PrivTr` in public interface
-        //~| ERROR private trait `m::PrivTr` in public interface
-        fn infer_exist() -> Self::Exist { Priv }
+        fn infer_exist() -> Self::Exist {
+            Priv
+        }
     }
 }
 
diff --git a/src/test/ui/privacy/private-in-public-assoc-ty.stderr b/src/test/ui/privacy/private-in-public-assoc-ty.stderr
index dd2ea7481f3..1a3ca3f16ed 100644
--- a/src/test/ui/privacy/private-in-public-assoc-ty.stderr
+++ b/src/test/ui/privacy/private-in-public-assoc-ty.stderr
@@ -1,5 +1,5 @@
 error[E0446]: private type `m::Priv` in public interface
-  --> $DIR/private-in-public-assoc-ty.rs:15:9
+  --> $DIR/private-in-public-assoc-ty.rs:17:9
    |
 LL |     struct Priv;
    |     - `m::Priv` declared as private
@@ -8,7 +8,7 @@ LL |         type A = Priv;
    |         ^^^^^^^^^^^^^^ can't leak private type
 
 warning: private trait `m::PrivTr` in public interface (error E0445)
-  --> $DIR/private-in-public-assoc-ty.rs:21:5
+  --> $DIR/private-in-public-assoc-ty.rs:23:5
    |
 LL | /     pub trait PubTr {
 LL | |
@@ -24,7 +24,7 @@ LL | |     }
    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
 
 warning: private type `m::Priv` in public interface (error E0446)
-  --> $DIR/private-in-public-assoc-ty.rs:21:5
+  --> $DIR/private-in-public-assoc-ty.rs:23:5
    |
 LL | /     pub trait PubTr {
 LL | |
@@ -39,7 +39,7 @@ LL | |     }
    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
 
 warning: private type `m::Priv` in public interface (error E0446)
-  --> $DIR/private-in-public-assoc-ty.rs:21:5
+  --> $DIR/private-in-public-assoc-ty.rs:23:5
    |
 LL | /     pub trait PubTr {
 LL | |
@@ -54,7 +54,7 @@ LL | |     }
    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
 
 error[E0446]: private type `m::Priv` in public interface
-  --> $DIR/private-in-public-assoc-ty.rs:32:9
+  --> $DIR/private-in-public-assoc-ty.rs:34:9
    |
 LL |     struct Priv;
    |     - `m::Priv` declared as private
@@ -63,7 +63,7 @@ LL |         type Alias4 = Priv;
    |         ^^^^^^^^^^^^^^^^^^^ can't leak private type
 
 error[E0446]: private type `m::Priv` in public interface
-  --> $DIR/private-in-public-assoc-ty.rs:39:9
+  --> $DIR/private-in-public-assoc-ty.rs:41:9
    |
 LL |     struct Priv;
    |     - `m::Priv` declared as private
@@ -72,7 +72,7 @@ LL |         type Alias1 = Priv;
    |         ^^^^^^^^^^^^^^^^^^^ can't leak private type
 
 error[E0445]: private trait `m::PrivTr` in public interface
-  --> $DIR/private-in-public-assoc-ty.rs:42:9
+  --> $DIR/private-in-public-assoc-ty.rs:44:9
    |
 LL |     trait PrivTr {}
    |     - `m::PrivTr` declared as private
@@ -80,16 +80,7 @@ LL |     trait PrivTr {}
 LL |         type Exist = impl PrivTr;
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private trait
 
-error[E0445]: private trait `m::PrivTr` in public interface
-  --> $DIR/private-in-public-assoc-ty.rs:42:9
-   |
-LL |     trait PrivTr {}
-   |     - `m::PrivTr` declared as private
-...
-LL |         type Exist = impl PrivTr;
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private trait
-
-error: aborting due to 5 previous errors; 3 warnings emitted
+error: aborting due to 4 previous errors; 3 warnings emitted
 
 Some errors have detailed explanations: E0445, E0446.
 For more information about an error, try `rustc --explain E0445`.
diff --git a/src/test/ui/proc-macro/debug/dump-debug-span-debug.rs b/src/test/ui/proc-macro/debug/dump-debug-span-debug.rs
new file mode 100644
index 00000000000..fd34eb974c0
--- /dev/null
+++ b/src/test/ui/proc-macro/debug/dump-debug-span-debug.rs
@@ -0,0 +1,41 @@
+// run-pass
+// aux-build:macro-dump-debug.rs
+// compile-flags: -Z span-debug
+
+extern crate macro_dump_debug;
+use macro_dump_debug::dump_debug;
+
+dump_debug! {
+    ident   // ident
+    r#ident // raw ident
+    ,       // alone punct
+    ==>     // joint punct
+    ()      // empty group
+    [_]     // nonempty group
+
+    // unsuffixed literals
+    0
+    1.0
+    "S"
+    b"B"
+    r"R"
+    r##"R"##
+    br"BR"
+    br##"BR"##
+    'C'
+    b'B'
+
+    // suffixed literals
+    0q
+    1.0q
+    "S"q
+    b"B"q
+    r"R"q
+    r##"R"##q
+    br"BR"q
+    br##"BR"##q
+    'C'q
+    b'B'q
+}
+
+fn main() {}
diff --git a/src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr b/src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr
new file mode 100644
index 00000000000..2c05bdbc492
--- /dev/null
+++ b/src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr
@@ -0,0 +1,166 @@
+TokenStream [Ident { ident: "ident", span: $DIR/dump-debug-span-debug.rs:9:5: 9:10 (#0) }, Ident { ident: "r#ident", span: $DIR/dump-debug-span-debug.rs:10:5: 10:12 (#0) }, Punct { ch: ',', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:11:5: 11:6 (#0) }, Punct { ch: '=', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:12:5: 12:7 (#0) }, Punct { ch: '=', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:12:5: 12:7 (#0) }, Punct { ch: '>', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:12:7: 12:8 (#0) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/dump-debug-span-debug.rs:13:5: 13:7 (#0) }, Group { delimiter: Bracket, stream: TokenStream [Ident { ident: "_", span: $DIR/dump-debug-span-debug.rs:14:6: 14:7 (#0) }], span: $DIR/dump-debug-span-debug.rs:14:5: 14:8 (#0) }, Literal { kind: Integer, symbol: "0", suffix: None, span: $DIR/dump-debug-span-debug.rs:17:5: 17:6 (#0) }, Literal { kind: Float, symbol: "1.0", suffix: None, span: $DIR/dump-debug-span-debug.rs:18:5: 18:8 (#0) }, Literal { kind: Str, symbol: "S", suffix: None, span: $DIR/dump-debug-span-debug.rs:19:5: 19:8 (#0) }, Literal { kind: ByteStr, symbol: "B", suffix: None, span: $DIR/dump-debug-span-debug.rs:20:5: 20:9 (#0) }, Literal { kind: StrRaw(0), symbol: "R", suffix: None, span: $DIR/dump-debug-span-debug.rs:21:5: 21:9 (#0) }, Literal { kind: StrRaw(2), symbol: "R", suffix: None, span: $DIR/dump-debug-span-debug.rs:22:5: 22:13 (#0) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: None, span: $DIR/dump-debug-span-debug.rs:23:5: 23:11 (#0) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: None, span: $DIR/dump-debug-span-debug.rs:24:5: 24:15 (#0) }, Literal { kind: Char, symbol: "C", suffix: None, span: $DIR/dump-debug-span-debug.rs:25:5: 25:8 (#0) }, Literal { kind: Byte, symbol: "B", suffix: None, span: $DIR/dump-debug-span-debug.rs:26:5: 26:9 (#0) }, Literal { kind: Integer, symbol: "0", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:29:5: 29:7 (#0) }, Literal { kind: Float, symbol: "1.0", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:30:5: 30:9 (#0) }, Literal { kind: Str, symbol: "S", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:31:5: 31:9 (#0) }, Literal { kind: ByteStr, symbol: "B", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:32:5: 32:10 (#0) }, Literal { kind: StrRaw(0), symbol: "R", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:33:5: 33:10 (#0) }, Literal { kind: StrRaw(2), symbol: "R", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:34:5: 34:14 (#0) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:35:5: 35:12 (#0) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:36:5: 36:16 (#0) }, Literal { kind: Char, symbol: "C", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:37:5: 37:9 (#0) }, Literal { kind: Byte, symbol: "B", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:38:5: 38:10 (#0) }]
+TokenStream [
+    Ident {
+        ident: "ident",
+        span: $DIR/dump-debug-span-debug.rs:9:5: 9:10 (#0),
+    },
+    Ident {
+        ident: "r#ident",
+        span: $DIR/dump-debug-span-debug.rs:10:5: 10:12 (#0),
+    },
+    Punct {
+        ch: ',',
+        spacing: Alone,
+        span: $DIR/dump-debug-span-debug.rs:11:5: 11:6 (#0),
+    },
+    Punct {
+        ch: '=',
+        spacing: Joint,
+        span: $DIR/dump-debug-span-debug.rs:12:5: 12:7 (#0),
+    },
+    Punct {
+        ch: '=',
+        spacing: Joint,
+        span: $DIR/dump-debug-span-debug.rs:12:5: 12:7 (#0),
+    },
+    Punct {
+        ch: '>',
+        spacing: Alone,
+        span: $DIR/dump-debug-span-debug.rs:12:7: 12:8 (#0),
+    },
+    Group {
+        delimiter: Parenthesis,
+        stream: TokenStream [],
+        span: $DIR/dump-debug-span-debug.rs:13:5: 13:7 (#0),
+    },
+    Group {
+        delimiter: Bracket,
+        stream: TokenStream [
+            Ident {
+                ident: "_",
+                span: $DIR/dump-debug-span-debug.rs:14:6: 14:7 (#0),
+            },
+        ],
+        span: $DIR/dump-debug-span-debug.rs:14:5: 14:8 (#0),
+    },
+    Literal {
+        kind: Integer,
+        symbol: "0",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:17:5: 17:6 (#0),
+    },
+    Literal {
+        kind: Float,
+        symbol: "1.0",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:18:5: 18:8 (#0),
+    },
+    Literal {
+        kind: Str,
+        symbol: "S",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:19:5: 19:8 (#0),
+    },
+    Literal {
+        kind: ByteStr,
+        symbol: "B",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:20:5: 20:9 (#0),
+    },
+    Literal {
+        kind: StrRaw(0),
+        symbol: "R",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:21:5: 21:9 (#0),
+    },
+    Literal {
+        kind: StrRaw(2),
+        symbol: "R",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:22:5: 22:13 (#0),
+    },
+    Literal {
+        kind: ByteStrRaw(0),
+        symbol: "BR",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:23:5: 23:11 (#0),
+    },
+    Literal {
+        kind: ByteStrRaw(2),
+        symbol: "BR",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:24:5: 24:15 (#0),
+    },
+    Literal {
+        kind: Char,
+        symbol: "C",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:25:5: 25:8 (#0),
+    },
+    Literal {
+        kind: Byte,
+        symbol: "B",
+        suffix: None,
+        span: $DIR/dump-debug-span-debug.rs:26:5: 26:9 (#0),
+    },
+    Literal {
+        kind: Integer,
+        symbol: "0",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:29:5: 29:7 (#0),
+    },
+    Literal {
+        kind: Float,
+        symbol: "1.0",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:30:5: 30:9 (#0),
+    },
+    Literal {
+        kind: Str,
+        symbol: "S",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:31:5: 31:9 (#0),
+    },
+    Literal {
+        kind: ByteStr,
+        symbol: "B",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:32:5: 32:10 (#0),
+    },
+    Literal {
+        kind: StrRaw(0),
+        symbol: "R",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:33:5: 33:10 (#0),
+    },
+    Literal {
+        kind: StrRaw(2),
+        symbol: "R",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:34:5: 34:14 (#0),
+    },
+    Literal {
+        kind: ByteStrRaw(0),
+        symbol: "BR",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:35:5: 35:12 (#0),
+    },
+    Literal {
+        kind: ByteStrRaw(2),
+        symbol: "BR",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:36:5: 36:16 (#0),
+    },
+    Literal {
+        kind: Char,
+        symbol: "C",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:37:5: 37:9 (#0),
+    },
+    Literal {
+        kind: Byte,
+        symbol: "B",
+        suffix: Some("q"),
+        span: $DIR/dump-debug-span-debug.rs:38:5: 38:10 (#0),
+    },
+]
diff --git a/src/test/ui/proc-macro/empty-where-clause.rs b/src/test/ui/proc-macro/empty-where-clause.rs
new file mode 100644
index 00000000000..719555c092a
--- /dev/null
+++ b/src/test/ui/proc-macro/empty-where-clause.rs
@@ -0,0 +1,18 @@
+// aux-build:test-macros.rs
+
+extern crate test_macros;
+use test_macros::recollect_attr;
+
+#[recollect_attr]
+struct FieldStruct where {
+    field: MissingType1 //~ ERROR cannot find
+}
+
+#[recollect_attr]
+struct TupleStruct(MissingType2) where; //~ ERROR cannot find
+
+enum MyEnum where {
+    Variant(MissingType3) //~ ERROR cannot find
+}
+
+fn main() {}
diff --git a/src/test/ui/proc-macro/empty-where-clause.stderr b/src/test/ui/proc-macro/empty-where-clause.stderr
new file mode 100644
index 00000000000..192a2b30f0d
--- /dev/null
+++ b/src/test/ui/proc-macro/empty-where-clause.stderr
@@ -0,0 +1,21 @@
+error[E0412]: cannot find type `MissingType1` in this scope
+  --> $DIR/empty-where-clause.rs:8:12
+   |
+LL |     field: MissingType1
+   |            ^^^^^^^^^^^^ not found in this scope
+
+error[E0412]: cannot find type `MissingType2` in this scope
+  --> $DIR/empty-where-clause.rs:12:20
+   |
+LL | struct TupleStruct(MissingType2) where;
+   |                    ^^^^^^^^^^^^ not found in this scope
+
+error[E0412]: cannot find type `MissingType3` in this scope
+  --> $DIR/empty-where-clause.rs:15:13
+   |
+LL |     Variant(MissingType3)
+   |             ^^^^^^^^^^^^ not found in this scope
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0412`.
diff --git a/src/test/ui/proc-macro/mixed-site-span.stderr b/src/test/ui/proc-macro/mixed-site-span.stderr
index 2b851a76f6a..6244ffc47a6 100644
--- a/src/test/ui/proc-macro/mixed-site-span.stderr
+++ b/src/test/ui/proc-macro/mixed-site-span.stderr
@@ -27,10 +27,6 @@ LL | pass_dollar_crate!();
    | ^^^^^^^^^^^^^^^^^^^^^ not found in `$crate`
    |
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-help: consider importing this struct
-   |
-LL | use ItemUse;
-   |
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/recursion/recursive-enum.stderr b/src/test/ui/recursion/recursive-enum.stderr
index e4674b57a6d..ab4709d8e70 100644
--- a/src/test/ui/recursion/recursive-enum.stderr
+++ b/src/test/ui/recursion/recursive-enum.stderr
@@ -6,7 +6,10 @@ LL | enum List<T> { Cons(T, List<T>), Nil }
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `List` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `List` representable
+   |
+LL | enum List<T> { Cons(T, Box<List<T>>), Nil }
+   |                        ^^^^       ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/recursion/recursive-static-definition.stderr b/src/test/ui/recursion/recursive-static-definition.stderr
index b724c261a7c..093606e100c 100644
--- a/src/test/ui/recursion/recursive-static-definition.stderr
+++ b/src/test/ui/recursion/recursive-static-definition.stderr
@@ -1,8 +1,8 @@
 error[E0391]: cycle detected when const-evaluating `FOO`
-  --> $DIR/recursive-static-definition.rs:1:23
+  --> $DIR/recursive-static-definition.rs:1:1
    |
 LL | pub static FOO: u32 = FOO;
-   |                       ^^^
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
 note: ...which requires const-evaluating `FOO`...
   --> $DIR/recursive-static-definition.rs:1:1
diff --git a/src/test/ui/repeat_count.rs b/src/test/ui/repeat_count.rs
index aca7af144a9..7e30491f0bd 100644
--- a/src/test/ui/repeat_count.rs
+++ b/src/test/ui/repeat_count.rs
@@ -22,6 +22,9 @@ fn main() {
     let f = [0_usize; -1_isize];
     //~^ ERROR mismatched types
     //~| expected `usize`, found `isize`
+    let f = [0; 4u8];
+    //~^ ERROR mismatched types
+    //~| expected `usize`, found `u8`
     struct G {
         g: (),
     }
diff --git a/src/test/ui/repeat_count.stderr b/src/test/ui/repeat_count.stderr
index 4a2d1d9f921..6a081e23d9d 100644
--- a/src/test/ui/repeat_count.stderr
+++ b/src/test/ui/repeat_count.stderr
@@ -29,7 +29,7 @@ LL |     let e = [0; "foo"];
    |                 ^^^^^ expected `usize`, found `&str`
 
 error[E0308]: mismatched types
-  --> $DIR/repeat_count.rs:28:17
+  --> $DIR/repeat_count.rs:31:17
    |
 LL |     let g = [0; G { g: () }];
    |                 ^^^^^^^^^^^ expected `usize`, found struct `main::G`
@@ -39,24 +39,25 @@ error[E0308]: mismatched types
    |
 LL |     let f = [0; -4_isize];
    |                 ^^^^^^^^ expected `usize`, found `isize`
-   |
-help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit
-   |
-LL |     let f = [0; (-4_isize).try_into().unwrap()];
-   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0308]: mismatched types
   --> $DIR/repeat_count.rs:22:23
    |
 LL |     let f = [0_usize; -1_isize];
    |                       ^^^^^^^^ expected `usize`, found `isize`
+
+error[E0308]: mismatched types
+  --> $DIR/repeat_count.rs:25:17
+   |
+LL |     let f = [0; 4u8];
+   |                 ^^^ expected `usize`, found `u8`
    |
-help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit
+help: change the type of the numeric literal from `u8` to `usize`
    |
-LL |     let f = [0_usize; (-1_isize).try_into().unwrap()];
-   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL |     let f = [0; 4usize];
+   |                 ^^^^^^
 
-error: aborting due to 8 previous errors
+error: aborting due to 9 previous errors
 
 Some errors have detailed explanations: E0308, E0435.
 For more information about an error, try `rustc --explain E0308`.
diff --git a/src/test/ui/resolve/issue-2356.stderr b/src/test/ui/resolve/issue-2356.stderr
index 329543114a6..b687f0b0af0 100644
--- a/src/test/ui/resolve/issue-2356.stderr
+++ b/src/test/ui/resolve/issue-2356.stderr
@@ -14,7 +14,16 @@ error[E0425]: cannot find function `default` in this scope
   --> $DIR/issue-2356.rs:31:5
    |
 LL |     default();
-   |     ^^^^^^^ help: try: `Self::default`
+   |     ^^^^^^^
+   |
+help: try
+   |
+LL |     Self::default();
+   |     ^^^^^^^^^^^^^
+help: consider importing this function
+   |
+LL | use std::default::default;
+   |
 
 error[E0425]: cannot find value `whiskers` in this scope
   --> $DIR/issue-2356.rs:39:5
diff --git a/src/test/ui/resolve/use_suggestion.stderr b/src/test/ui/resolve/use_suggestion.stderr
index 2fd3d5dccd2..72dda940729 100644
--- a/src/test/ui/resolve/use_suggestion.stderr
+++ b/src/test/ui/resolve/use_suggestion.stderr
@@ -10,12 +10,10 @@ error[E0433]: failed to resolve: use of undeclared type or module `HashMap`
 LL |     let x1 = HashMap::new();
    |              ^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this struct
    |
 LL | use std::collections::HashMap;
    |
-LL | use std::collections::hash_map::HashMap;
-   |
 
 error[E0412]: cannot find type `HashMap` in this scope
   --> $DIR/use_suggestion.rs:5:13
@@ -23,12 +21,10 @@ error[E0412]: cannot find type `HashMap` in this scope
 LL |     let y1: HashMap;
    |             ^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this struct
    |
 LL | use std::collections::HashMap;
    |
-LL | use std::collections::hash_map::HashMap;
-   |
 
 error[E0412]: cannot find type `GooMap` in this scope
   --> $DIR/use_suggestion.rs:6:13
diff --git a/src/test/ui/resolve/use_suggestion_placement.stderr b/src/test/ui/resolve/use_suggestion_placement.stderr
index 9c337f515ad..3f91760fe21 100644
--- a/src/test/ui/resolve/use_suggestion_placement.stderr
+++ b/src/test/ui/resolve/use_suggestion_placement.stderr
@@ -26,12 +26,10 @@ error[E0412]: cannot find type `HashMap` in this scope
 LL |     type Dict<K, V> = HashMap<K, V>;
    |                       ^^^^^^^ not found in this scope
    |
-help: consider importing one of these items
+help: consider importing this struct
    |
 LL | use std::collections::HashMap;
    |
-LL | use std::collections::hash_map::HashMap;
-   |
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/rfc-2091-track-caller/call-chain.rs b/src/test/ui/rfc-2091-track-caller/call-chain.rs
new file mode 100644
index 00000000000..3f1c8f7abe8
--- /dev/null
+++ b/src/test/ui/rfc-2091-track-caller/call-chain.rs
@@ -0,0 +1,28 @@
+// run-pass
+
+#![feature(track_caller)]
+
+use std::panic::Location;
+
+struct Foo;
+
+impl Foo {
+    #[track_caller]
+    fn check_loc(&self, line: u32, col: u32) -> &Self {
+        let loc = Location::caller();
+        assert_eq!(loc.file(), file!(), "file mismatch");
+        assert_eq!(loc.line(), line, "line mismatch");
+        assert_eq!(loc.column(), col, "column mismatch");
+        self
+    }
+}
+
+fn main() {
+    // Tests that when `Location::caller` is used in a method chain,
+    // it points to the start of the correct call (the first character after the dot)
+    // instead of to the very first expression in the chain
+    let foo = Foo;
+    foo.
+        check_loc(line!(), 9).check_loc(line!(), 31)
+        .check_loc(line!(), 10);
+}
diff --git a/src/test/ui/save-analysis/issue-68621.stderr b/src/test/ui/save-analysis/issue-68621.stderr
index 2c5bbd7782b..3af6d0a3e07 100644
--- a/src/test/ui/save-analysis/issue-68621.stderr
+++ b/src/test/ui/save-analysis/issue-68621.stderr
@@ -1,8 +1,8 @@
 error: could not find defining uses
-  --> $DIR/issue-68621.rs:14:5
+  --> $DIR/issue-68621.rs:14:19
    |
 LL |     type Future = impl Trait;
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                   ^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/save-analysis/issue-73020.rs b/src/test/ui/save-analysis/issue-73020.rs
new file mode 100644
index 00000000000..87ce0933681
--- /dev/null
+++ b/src/test/ui/save-analysis/issue-73020.rs
@@ -0,0 +1,5 @@
+// compile-flags: -Zsave-analysis
+use {self}; //~ ERROR E0431
+
+fn main () {
+}
diff --git a/src/test/ui/save-analysis/issue-73020.stderr b/src/test/ui/save-analysis/issue-73020.stderr
new file mode 100644
index 00000000000..5bb3aae9997
--- /dev/null
+++ b/src/test/ui/save-analysis/issue-73020.stderr
@@ -0,0 +1,9 @@
+error[E0431]: `self` import can only appear in an import list with a non-empty prefix
+  --> $DIR/issue-73020.rs:2:6
+   |
+LL | use {self};
+   |      ^^^^ can only appear in an import list with a non-empty prefix
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0431`.
diff --git a/src/test/ui/save-analysis/issue-73022.rs b/src/test/ui/save-analysis/issue-73022.rs
new file mode 100644
index 00000000000..9ad89a319ba
--- /dev/null
+++ b/src/test/ui/save-analysis/issue-73022.rs
@@ -0,0 +1,13 @@
+// build-pass
+// compile-flags: -Zsave-analysis
+enum Enum2 {
+    Variant8 { _field: bool },
+}
+
+impl Enum2 {
+    fn new_variant8() -> Enum2 {
+        Self::Variant8 { _field: true }
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/simd/simd-intrinsic-generic-arithmetic-saturating.rs b/src/test/ui/simd/simd-intrinsic-generic-arithmetic-saturating.rs
index e664ecadda2..b7b3ec99781 100644
--- a/src/test/ui/simd/simd-intrinsic-generic-arithmetic-saturating.rs
+++ b/src/test/ui/simd/simd-intrinsic-generic-arithmetic-saturating.rs
@@ -20,7 +20,7 @@ extern "platform-intrinsic" {
 fn main() {
     // unsigned
     {
-        const M: u32 = u32::max_value();
+        const M: u32 = u32::MAX;
 
         let a = u32x4(1, 2, 3, 4);
         let b = u32x4(2, 4, 6, 8);
@@ -48,8 +48,8 @@ fn main() {
 
     // signed
     {
-        const MIN: i32 = i32::min_value();
-        const MAX: i32 = i32::max_value();
+        const MIN: i32 = i32::MIN;
+        const MAX: i32 = i32::MAX;
 
         let a = i32x4(1, 2, 3, 4);
         let b = i32x4(2, 4, 6, 8);
diff --git a/src/test/ui/simd/simd-intrinsic-generic-bitmask.rs b/src/test/ui/simd/simd-intrinsic-generic-bitmask.rs
index b28f742a92e..a323bd9e82b 100644
--- a/src/test/ui/simd/simd-intrinsic-generic-bitmask.rs
+++ b/src/test/ui/simd/simd-intrinsic-generic-bitmask.rs
@@ -39,7 +39,7 @@ fn main() {
     let e = 0b_1101;
 
     // Check usize / isize
-    let msize: Tx4<usize> = Tx4(usize::max_value(), 0, usize::max_value(), usize::max_value());
+    let msize: Tx4<usize> = Tx4(usize::MAX, 0, usize::MAX, usize::MAX);
 
     unsafe {
         let r: u8 = simd_bitmask(z);
diff --git a/src/test/ui/simd/simd-intrinsic-generic-reduction.rs b/src/test/ui/simd/simd-intrinsic-generic-reduction.rs
index 4195444a73f..8b5afeac0bc 100644
--- a/src/test/ui/simd/simd-intrinsic-generic-reduction.rs
+++ b/src/test/ui/simd/simd-intrinsic-generic-reduction.rs
@@ -100,7 +100,7 @@ fn main() {
         let r: u32 = simd_reduce_max(x);
         assert_eq!(r, 4_u32);
 
-        let t = u32::max_value();
+        let t = u32::MAX;
         let x = u32x4(t, t, t, t);
         let r: u32 = simd_reduce_and(x);
         assert_eq!(r, t);
diff --git a/src/test/ui/sized-cycle-note.stderr b/src/test/ui/sized-cycle-note.stderr
index 95bdc349426..45062c2ea6c 100644
--- a/src/test/ui/sized-cycle-note.stderr
+++ b/src/test/ui/sized-cycle-note.stderr
@@ -2,21 +2,27 @@ error[E0072]: recursive type `Baz` has infinite size
   --> $DIR/sized-cycle-note.rs:9:1
    |
 LL | struct Baz { q: Option<Foo> }
-   | ^^^^^^^^^^   -------------- recursive without indirection
+   | ^^^^^^^^^^      ----------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Baz` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Baz` representable
+   |
+LL | struct Baz { q: Box<Option<Foo>> }
+   |                 ^^^^           ^
 
 error[E0072]: recursive type `Foo` has infinite size
   --> $DIR/sized-cycle-note.rs:11:1
    |
 LL | struct Foo { q: Option<Baz> }
-   | ^^^^^^^^^^   -------------- recursive without indirection
+   | ^^^^^^^^^^      ----------- recursive without indirection
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL | struct Foo { q: Box<Option<Baz>> }
+   |                 ^^^^           ^
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/span/E0072.stderr b/src/test/ui/span/E0072.stderr
index d4a5e7400d2..06493f05142 100644
--- a/src/test/ui/span/E0072.stderr
+++ b/src/test/ui/span/E0072.stderr
@@ -5,9 +5,12 @@ LL | struct ListNode {
    | ^^^^^^^^^^^^^^^ recursive type has infinite size
 LL |     head: u8,
 LL |     tail: Option<ListNode>,
-   |     ---------------------- recursive without indirection
+   |           ---------------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ListNode` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ListNode` representable
+   |
+LL |     tail: Box<Option<ListNode>>,
+   |           ^^^^                ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/span/multiline-span-E0072.stderr b/src/test/ui/span/multiline-span-E0072.stderr
index dd322fe833b..55128347f74 100644
--- a/src/test/ui/span/multiline-span-E0072.stderr
+++ b/src/test/ui/span/multiline-span-E0072.stderr
@@ -6,11 +6,14 @@ LL | | ListNode
 LL | | {
 LL | |     head: u8,
 LL | |     tail: Option<ListNode>,
-   | |     ---------------------- recursive without indirection
+   | |           ---------------- recursive without indirection
 LL | | }
    | |_^ recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ListNode` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ListNode` representable
+   |
+LL |     tail: Box<Option<ListNode>>,
+   |           ^^^^                ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/span/recursive-type-field.stderr b/src/test/ui/span/recursive-type-field.stderr
index d240872647e..fb1d98b58df 100644
--- a/src/test/ui/span/recursive-type-field.stderr
+++ b/src/test/ui/span/recursive-type-field.stderr
@@ -4,9 +4,12 @@ error[E0072]: recursive type `Foo` has infinite size
 LL | struct Foo<'a> {
    | ^^^^^^^^^^^^^^ recursive type has infinite size
 LL |     bar: Bar<'a>,
-   |     ------------ recursive without indirection
+   |          ------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
+   |
+LL |     bar: Box<Bar<'a>>,
+   |          ^^^^       ^
 
 error[E0072]: recursive type `Bar` has infinite size
   --> $DIR/recursive-type-field.rs:8:1
@@ -14,18 +17,18 @@ error[E0072]: recursive type `Bar` has infinite size
 LL | struct Bar<'a> {
    | ^^^^^^^^^^^^^^ recursive type has infinite size
 LL |     y: (Foo<'a>, Foo<'a>),
-   |     --------------------- recursive without indirection
+   |        ------------------ recursive without indirection
 LL |     z: Option<Bar<'a>>,
-   |     ------------------ recursive without indirection
+   |        --------------- recursive without indirection
 ...
 LL |     d: [Bar<'a>; 1],
-   |     --------------- recursive without indirection
+   |        ------------ recursive without indirection
 LL |     e: Foo<'a>,
-   |     ---------- recursive without indirection
+   |        ------- recursive without indirection
 LL |     x: Bar<'a>,
-   |     ---------- recursive without indirection
+   |        ------- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
+   = help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs b/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs
index 2a11871db8e..21fb8d4a2e6 100644
--- a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs
+++ b/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs
@@ -1,6 +1,6 @@
 fn main() {
     let A = 3;
-    //~^ ERROR refutable pattern in local binding: `std::i32::MIN..=1i32` and
+    //~^ ERROR refutable pattern in local binding: `i32::MIN..=1i32` and
     //~| interpreted as a constant pattern, not a new variable
     //~| HELP introduce a variable instead
     //~| SUGGESTION a_var
diff --git a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr b/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr
index 1512eac7667..7a6269da07f 100644
--- a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr
+++ b/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr
@@ -1,4 +1,4 @@
-error[E0005]: refutable pattern in local binding: `std::i32::MIN..=1i32` and `3i32..=std::i32::MAX` not covered
+error[E0005]: refutable pattern in local binding: `i32::MIN..=1i32` and `3i32..=i32::MAX` not covered
   --> $DIR/const-pat-non-exaustive-let-new-var.rs:2:9
    |
 LL |     let A = 3;
diff --git a/src/test/ui/symbol-names/basic.legacy.stderr b/src/test/ui/symbol-names/basic.legacy.stderr
index 895ff5ae54f..dec57e06ea2 100644
--- a/src/test/ui/symbol-names/basic.legacy.stderr
+++ b/src/test/ui/symbol-names/basic.legacy.stderr
@@ -1,10 +1,10 @@
-error: symbol-name(_ZN5basic4main17h81759b0695851718E)
+error: symbol-name(_ZN5basic4main17h4272b3de5e868f5aE)
   --> $DIR/basic.rs:8:1
    |
 LL | #[rustc_symbol_name]
    | ^^^^^^^^^^^^^^^^^^^^
 
-error: demangling(basic::main::h81759b0695851718)
+error: demangling(basic::main::h4272b3de5e868f5a)
   --> $DIR/basic.rs:8:1
    |
 LL | #[rustc_symbol_name]
diff --git a/src/test/ui/symbol-names/impl1.legacy.stderr b/src/test/ui/symbol-names/impl1.legacy.stderr
index 33cacaf2128..52ee3452a48 100644
--- a/src/test/ui/symbol-names/impl1.legacy.stderr
+++ b/src/test/ui/symbol-names/impl1.legacy.stderr
@@ -1,10 +1,10 @@
-error: symbol-name(_ZN5impl13foo3Foo3bar17h92cf46db76791039E)
+error: symbol-name(_ZN5impl13foo3Foo3bar17ha318160f105e638cE)
   --> $DIR/impl1.rs:16:9
    |
 LL |         #[rustc_symbol_name]
    |         ^^^^^^^^^^^^^^^^^^^^
 
-error: demangling(impl1::foo::Foo::bar::h92cf46db76791039)
+error: demangling(impl1::foo::Foo::bar::ha318160f105e638c)
   --> $DIR/impl1.rs:16:9
    |
 LL |         #[rustc_symbol_name]
@@ -22,13 +22,13 @@ error: def-path(foo::Foo::bar)
 LL |         #[rustc_def_path]
    |         ^^^^^^^^^^^^^^^^^
 
-error: symbol-name(_ZN5impl13bar33_$LT$impl$u20$impl1..foo..Foo$GT$3baz17h90c4a800b1aa0df0E)
+error: symbol-name(_ZN5impl13bar33_$LT$impl$u20$impl1..foo..Foo$GT$3baz17h6c2dbab6e66f9fa3E)
   --> $DIR/impl1.rs:34:9
    |
 LL |         #[rustc_symbol_name]
    |         ^^^^^^^^^^^^^^^^^^^^
 
-error: demangling(impl1::bar::<impl impl1::foo::Foo>::baz::h90c4a800b1aa0df0)
+error: demangling(impl1::bar::<impl impl1::foo::Foo>::baz::h6c2dbab6e66f9fa3)
   --> $DIR/impl1.rs:34:9
    |
 LL |         #[rustc_symbol_name]
diff --git a/src/test/ui/symbol-names/impl1.rs b/src/test/ui/symbol-names/impl1.rs
index cdcf89e4e61..380d20d0b12 100644
--- a/src/test/ui/symbol-names/impl1.rs
+++ b/src/test/ui/symbol-names/impl1.rs
@@ -3,8 +3,8 @@
 // revisions: legacy v0
 //[legacy]compile-flags: -Z symbol-mangling-version=legacy
     //[v0]compile-flags: -Z symbol-mangling-version=v0
-//[legacy]normalize-stderr-32bit: "h5ef5dfc14aeecbfc" -> "SYMBOL_HASH"
-//[legacy]normalize-stderr-64bit: "h9e54d216f70fcbc5" -> "SYMBOL_HASH"
+//[legacy]normalize-stderr-32bit: "hee444285569b39c2" -> "SYMBOL_HASH"
+//[legacy]normalize-stderr-64bit: "h310ea0259fc3d32d" -> "SYMBOL_HASH"
 
 #![feature(optin_builtin_traits, rustc_attrs)]
 #![allow(dead_code)]
diff --git a/src/test/ui/symbol-names/issue-60925.legacy.stderr b/src/test/ui/symbol-names/issue-60925.legacy.stderr
index 0e3a34adbc7..f5699052795 100644
--- a/src/test/ui/symbol-names/issue-60925.legacy.stderr
+++ b/src/test/ui/symbol-names/issue-60925.legacy.stderr
@@ -1,10 +1,10 @@
-error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17hc86312d25b60f6eeE)
+error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17h79d9aaa05f4b26d6E)
   --> $DIR/issue-60925.rs:22:9
    |
 LL |         #[rustc_symbol_name]
    |         ^^^^^^^^^^^^^^^^^^^^
 
-error: demangling(issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo::hc86312d25b60f6ee)
+error: demangling(issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo::h79d9aaa05f4b26d6)
   --> $DIR/issue-60925.rs:22:9
    |
 LL |         #[rustc_symbol_name]
diff --git a/src/test/ui/type-alias-impl-trait/bound_reduction2.stderr b/src/test/ui/type-alias-impl-trait/bound_reduction2.stderr
index b871f79aa1d..9ebf63468e7 100644
--- a/src/test/ui/type-alias-impl-trait/bound_reduction2.stderr
+++ b/src/test/ui/type-alias-impl-trait/bound_reduction2.stderr
@@ -1,8 +1,8 @@
 error[E0277]: the trait bound `T: TraitWithAssoc` is not satisfied
-  --> $DIR/bound_reduction2.rs:10:1
+  --> $DIR/bound_reduction2.rs:10:15
    |
 LL | type Foo<V> = impl Trait<V>;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `TraitWithAssoc` is not implemented for `T`
+   |               ^^^^^^^^^^^^^ the trait `TraitWithAssoc` is not implemented for `T`
    |
 help: consider further restricting this bound
    |
diff --git a/src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr b/src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr
index ae0fee4333b..21c2e8a9db6 100644
--- a/src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr
+++ b/src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr
@@ -1,8 +1,8 @@
 error: could not find defining uses
-  --> $DIR/declared_but_never_defined.rs:6:1
+  --> $DIR/declared_but_never_defined.rs:6:12
    |
 LL | type Bar = impl std::fmt::Debug;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |            ^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr b/src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr
index 0642407aba3..c0cb94b15d0 100644
--- a/src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr
+++ b/src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr
@@ -1,8 +1,8 @@
 error: could not find defining uses
-  --> $DIR/declared_but_not_defined_in_scope.rs:7:5
+  --> $DIR/declared_but_not_defined_in_scope.rs:7:20
    |
 LL |     pub type Boo = impl ::std::fmt::Debug;
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                    ^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.nll.stderr b/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.nll.stderr
index 9549074d4bf..76654d7a718 100644
--- a/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.nll.stderr
+++ b/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.nll.stderr
@@ -13,10 +13,10 @@ LL |     let z: i32 = x;
    |            expected due to this
 ...
 LL | type WrongGeneric<T> = impl 'static;
-   | ------------------------------------ the found opaque type
+   |                        ------------ the found opaque type
    |
    = note:     expected type `i32`
-           found opaque type `WrongGeneric::<&{integer}>`
+           found opaque type `impl Sized`
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr b/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr
index e2540e424cb..18d8daa05e6 100644
--- a/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr
+++ b/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr
@@ -13,16 +13,16 @@ LL |     let z: i32 = x;
    |            expected due to this
 ...
 LL | type WrongGeneric<T> = impl 'static;
-   | ------------------------------------ the found opaque type
+   |                        ------------ the found opaque type
    |
    = note:     expected type `i32`
-           found opaque type `WrongGeneric::<&{integer}>`
+           found opaque type `impl Sized`
 
 error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/generic_type_does_not_live_long_enough.rs:9:1
+  --> $DIR/generic_type_does_not_live_long_enough.rs:9:24
    |
 LL | type WrongGeneric<T> = impl 'static;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
+   |                        ^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
 ...
 LL | fn wrong_generic<T>(t: T) -> WrongGeneric<T> {
    |                  - help: consider adding an explicit lifetime bound...: `T: 'static`
diff --git a/src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr b/src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr
index f7a04263259..911f592f73f 100644
--- a/src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr
+++ b/src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr
@@ -5,10 +5,10 @@ LL | type Underconstrained<T: Trait> = impl 'static;
    |                                   ^^^^^^^^^^^^
 
 error[E0277]: the trait bound `T: Trait` is not satisfied
-  --> $DIR/generic_underconstrained.rs:6:1
+  --> $DIR/generic_underconstrained.rs:6:35
    |
 LL | type Underconstrained<T: Trait> = impl 'static;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait` is not implemented for `T`
+   |                                   ^^^^^^^^^^^^ the trait `Trait` is not implemented for `T`
    |
    = note: the return type of a function must have a statically known size
 help: consider restricting type parameter `T`
diff --git a/src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr b/src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr
index ad160abcbd5..247d68ef2a1 100644
--- a/src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr
+++ b/src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr
@@ -11,10 +11,10 @@ LL | type Underconstrained2<T: std::fmt::Debug> = impl 'static;
    |                                              ^^^^^^^^^^^^
 
 error[E0277]: `U` doesn't implement `std::fmt::Debug`
-  --> $DIR/generic_underconstrained2.rs:5:1
+  --> $DIR/generic_underconstrained2.rs:5:45
    |
 LL | type Underconstrained<T: std::fmt::Debug> = impl 'static;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `U` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
+   |                                             ^^^^^^^^^^^^ `U` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
 ...
 LL |     5u32
    |     ---- this returned value is of type `u32`
@@ -27,10 +27,10 @@ LL | fn underconstrained<U: std::fmt::Debug>(_: U) -> Underconstrained<U> {
    |                      ^^^^^^^^^^^^^^^^^
 
 error[E0277]: `V` doesn't implement `std::fmt::Debug`
-  --> $DIR/generic_underconstrained2.rs:14:1
+  --> $DIR/generic_underconstrained2.rs:14:46
    |
 LL | type Underconstrained2<T: std::fmt::Debug> = impl 'static;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `V` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
+   |                                              ^^^^^^^^^^^^ `V` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
 ...
 LL |     5u32
    |     ---- this returned value is of type `u32`
diff --git a/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs b/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs
new file mode 100644
index 00000000000..bc6543a9229
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs
@@ -0,0 +1,18 @@
+// Ensure that we don't ICE if associated type impl trait is used in an impl
+// with an unconstrained type parameter.
+
+#![feature(type_alias_impl_trait)]
+
+trait X {
+    type I;
+    fn f() -> Self::I;
+}
+
+impl<T> X for () {
+    type I = impl Sized;
+    //~^ ERROR could not find defining uses
+    fn f() -> Self::I {}
+    //~^ ERROR type annotations needed
+}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr b/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr
new file mode 100644
index 00000000000..e8b677113db
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr
@@ -0,0 +1,15 @@
+error[E0282]: type annotations needed
+  --> $DIR/impl-with-unconstrained-param.rs:14:23
+   |
+LL |     fn f() -> Self::I {}
+   |                       ^^ cannot infer type for type parameter `T`
+
+error: could not find defining uses
+  --> $DIR/impl-with-unconstrained-param.rs:12:14
+   |
+LL |     type I = impl Sized;
+   |              ^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0282`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs b/src/test/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs
new file mode 100644
index 00000000000..3a7a5da075f
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs
@@ -0,0 +1,24 @@
+// Regression test for #57188
+
+// check-pass
+
+#![feature(type_alias_impl_trait)]
+
+struct Baz<'a> {
+    source: &'a str,
+}
+
+trait Foo<'a> {
+    type T: Iterator<Item = Baz<'a>> + 'a;
+    fn foo(source: &'a str) -> Self::T;
+}
+
+struct Bar;
+impl<'a> Foo<'a> for Bar {
+    type T = impl Iterator<Item = Baz<'a>> + 'a;
+    fn foo(source: &'a str) -> Self::T {
+        std::iter::once(Baz { source })
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.stderr b/src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.stderr
index f648b7bfc99..cc121ac89fb 100644
--- a/src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.stderr
@@ -1,8 +1,8 @@
 error[E0631]: type mismatch in closure arguments
-  --> $DIR/issue-57611-trait-alias.rs:17:5
+  --> $DIR/issue-57611-trait-alias.rs:17:16
    |
 LL |     type Bar = impl Baz<Self, Self>;
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected signature of `for<'r> fn(&'r X) -> _`
+   |                ^^^^^^^^^^^^^^^^^^^^ expected signature of `for<'r> fn(&'r X) -> _`
 ...
 LL |         |x| x
    |         ----- found signature of `fn(_) -> _`
@@ -10,10 +10,10 @@ LL |         |x| x
    = note: the return type of a function must have a statically known size
 
 error[E0271]: type mismatch resolving `for<'r> <[closure@$DIR/issue-57611-trait-alias.rs:21:9: 21:14] as std::ops::FnOnce<(&'r X,)>>::Output == &'r X`
-  --> $DIR/issue-57611-trait-alias.rs:17:5
+  --> $DIR/issue-57611-trait-alias.rs:17:16
    |
 LL |     type Bar = impl Baz<Self, Self>;
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bound lifetime parameter, found concrete lifetime
+   |                ^^^^^^^^^^^^^^^^^^^^ expected bound lifetime parameter, found concrete lifetime
    |
    = note: the return type of a function must have a statically known size
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.stderr b/src/test/ui/type-alias-impl-trait/issue-60371.stderr
index 2796c77baa1..bf2d612fcdb 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60371.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-60371.stderr
@@ -8,20 +8,20 @@ LL |     type Item = impl Bug;
    = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
 
 error[E0277]: the trait bound `(): Bug` is not satisfied
-  --> $DIR/issue-60371.rs:8:5
+  --> $DIR/issue-60371.rs:8:17
    |
 LL |     type Item = impl Bug;
-   |     ^^^^^^^^^^^^^^^^^^^^^ the trait `Bug` is not implemented for `()`
+   |                 ^^^^^^^^ the trait `Bug` is not implemented for `()`
    |
    = help: the following implementations were found:
              <&() as Bug>
    = note: the return type of a function must have a statically known size
 
 error: could not find defining uses
-  --> $DIR/issue-60371.rs:8:5
+  --> $DIR/issue-60371.rs:8:17
    |
 LL |     type Item = impl Bug;
-   |     ^^^^^^^^^^^^^^^^^^^^^
+   |                 ^^^^^^^^
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-60564.rs b/src/test/ui/type-alias-impl-trait/issue-60564.rs
index 4eb7f7836d8..78def0d1136 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60564.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-60564.rs
@@ -17,11 +17,8 @@ where
 {
     type BitsIter = IterBitsIter<T, E, u8>;
     fn iter_bits(self, n: u8) -> Self::BitsIter {
-    //~^ ERROR non-defining opaque type use in defining scope
-    //~| ERROR non-defining opaque type use in defining scope
-        (0u8..n)
-            .rev()
-            .map(move |shift| ((self >> T::from(shift)) & T::from(1)).try_into().unwrap())
+        //~^ ERROR non-defining opaque type use in defining scope
+        (0u8..n).rev().map(move |shift| ((self >> T::from(shift)) & T::from(1)).try_into().unwrap())
     }
 }
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-60564.stderr b/src/test/ui/type-alias-impl-trait/issue-60564.stderr
index 55984609437..66fa862ef9d 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60564.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-60564.stderr
@@ -4,23 +4,11 @@ error: non-defining opaque type use in defining scope
 LL |     fn iter_bits(self, n: u8) -> Self::BitsIter {
    |                                  ^^^^^^^^^^^^^^
    |
-note: used non-generic type `_` for generic parameter
-  --> $DIR/issue-60564.rs:8:22
-   |
-LL | type IterBitsIter<T, E, I> = impl std::iter::Iterator<Item = I>;
-   |                      ^
-
-error: non-defining opaque type use in defining scope
-  --> $DIR/issue-60564.rs:19:34
-   |
-LL |     fn iter_bits(self, n: u8) -> Self::BitsIter {
-   |                                  ^^^^^^^^^^^^^^
-   |
 note: used non-generic type `u8` for generic parameter
   --> $DIR/issue-60564.rs:8:25
    |
 LL | type IterBitsIter<T, E, I> = impl std::iter::Iterator<Item = I>;
    |                         ^
 
-error: aborting due to 2 previous errors
+error: aborting due to previous error
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs b/src/test/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs
new file mode 100644
index 00000000000..36779a0ce89
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs
@@ -0,0 +1,38 @@
+// Regression test for #62988
+
+// check-pass
+
+#![feature(type_alias_impl_trait)]
+
+trait MyTrait {
+    type AssocType: Send;
+    fn ret(&self) -> Self::AssocType;
+}
+
+impl MyTrait for () {
+    type AssocType = impl Send;
+    fn ret(&self) -> Self::AssocType {
+        ()
+    }
+}
+
+impl<'a> MyTrait for &'a () {
+    type AssocType = impl Send;
+    fn ret(&self) -> Self::AssocType {
+        ()
+    }
+}
+
+trait MyLifetimeTrait<'a> {
+    type AssocType: Send + 'a;
+    fn ret(&self) -> Self::AssocType;
+}
+
+impl<'a> MyLifetimeTrait<'a> for &'a () {
+    type AssocType = impl Send + 'a;
+    fn ret(&self) -> Self::AssocType {
+        *self
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-63279.stderr b/src/test/ui/type-alias-impl-trait/issue-63279.stderr
index bef4d01093c..d07f64c3312 100644
--- a/src/test/ui/type-alias-impl-trait/issue-63279.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-63279.stderr
@@ -1,10 +1,10 @@
 error[E0271]: type mismatch resolving `<[closure@$DIR/issue-63279.rs:8:5: 8:28] as std::ops::FnOnce<()>>::Output == ()`
-  --> $DIR/issue-63279.rs:5:1
+  --> $DIR/issue-63279.rs:5:16
    |
 LL | type Closure = impl FnOnce();
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected opaque type, found `()`
+   |                ^^^^^^^^^^^^^ expected opaque type, found `()`
    |
-   = note: expected opaque type `Closure`
+   = note: expected opaque type `impl std::ops::FnOnce<()>`
                 found unit type `()`
    = note: the return type of a function must have a statically known size
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs b/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs
new file mode 100644
index 00000000000..6732902c09a
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs
@@ -0,0 +1,22 @@
+// Regression test for #69136
+
+#![feature(type_alias_impl_trait)]
+
+trait SomeTrait {}
+
+impl SomeTrait for () {}
+
+trait WithAssoc<A> {
+    type AssocType;
+}
+
+impl<T> WithAssoc<T> for () {
+    type AssocType = ();
+}
+
+type Return<A> = impl WithAssoc<A, AssocType = impl SomeTrait + 'a>;
+//~^ ERROR use of undeclared lifetime name `'a`
+
+fn my_fun() -> Return<()> {}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr b/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr
new file mode 100644
index 00000000000..fe45e39d938
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr
@@ -0,0 +1,11 @@
+error[E0261]: use of undeclared lifetime name `'a`
+  --> $DIR/issue-69136-inner-lifetime-resolve-error.rs:17:65
+   |
+LL | type Return<A> = impl WithAssoc<A, AssocType = impl SomeTrait + 'a>;
+   |             -                                                   ^^ undeclared lifetime
+   |             |
+   |             help: consider introducing lifetime `'a` here: `'a,`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0261`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs b/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs
new file mode 100644
index 00000000000..a6916eda8b0
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs
@@ -0,0 +1,23 @@
+// Test-pass variant of #69136
+
+// check-pass
+
+#![feature(type_alias_impl_trait)]
+
+trait SomeTrait {}
+
+impl SomeTrait for () {}
+
+trait WithAssoc {
+    type AssocType;
+}
+
+impl WithAssoc for () {
+    type AssocType = ();
+}
+
+type Return<'a> = impl WithAssoc<AssocType = impl Sized + 'a>;
+
+fn my_fun<'a>() -> Return<'a> {}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.stderr b/src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.stderr
index 70c99c944d6..4fbbf347528 100644
--- a/src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.stderr
+++ b/src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.stderr
@@ -2,7 +2,7 @@ error[E0308]: mismatched types
   --> $DIR/never_reveal_concrete_type.rs:13:27
    |
 LL | type NoReveal = impl std::fmt::Debug;
-   | ------------------------------------- the found opaque type
+   |                 -------------------- the found opaque type
 ...
 LL |     let _: &'static str = x;
    |            ------------   ^ expected `&str`, found opaque type
@@ -10,9 +10,9 @@ LL |     let _: &'static str = x;
    |            expected due to this
    |
    = note: expected reference `&'static str`
-            found opaque type `NoReveal`
+            found opaque type `impl std::fmt::Debug`
 
-error[E0605]: non-primitive cast: `NoReveal` as `&'static str`
+error[E0605]: non-primitive cast: `impl std::fmt::Debug` as `&'static str`
   --> $DIR/never_reveal_concrete_type.rs:14:13
    |
 LL |     let _ = x as &'static str;
diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr
index 444e6e8214f..61025e84692 100644
--- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr
+++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr
@@ -1,8 +1,8 @@
 error: could not find defining uses
-  --> $DIR/no_inferrable_concrete_type.rs:6:1
+  --> $DIR/no_inferrable_concrete_type.rs:6:12
    |
 LL | type Foo = impl Copy;
-   | ^^^^^^^^^^^^^^^^^^^^^
+   |            ^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr b/src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr
index 375c0bc7fe2..d237cc6238a 100644
--- a/src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr
+++ b/src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr
@@ -2,7 +2,7 @@ error[E0308]: mismatched types
   --> $DIR/no_revealing_outside_defining_module.rs:15:19
    |
 LL |     pub type Boo = impl ::std::fmt::Debug;
-   |     -------------------------------------- the found opaque type
+   |                    ---------------------- the found opaque type
 ...
 LL |     let _: &str = bomp();
    |            ----   ^^^^^^ expected `&str`, found opaque type
@@ -10,20 +10,20 @@ LL |     let _: &str = bomp();
    |            expected due to this
    |
    = note: expected reference `&str`
-            found opaque type `Boo`
+            found opaque type `impl std::fmt::Debug`
 
 error[E0308]: mismatched types
   --> $DIR/no_revealing_outside_defining_module.rs:19:5
    |
 LL |     pub type Boo = impl ::std::fmt::Debug;
-   |     -------------------------------------- the expected opaque type
+   |                    ---------------------- the expected opaque type
 ...
 LL | fn bomp() -> boo::Boo {
-   |              -------- expected `Boo` because of return type
+   |              -------- expected `impl std::fmt::Debug` because of return type
 LL |     ""
    |     ^^ expected opaque type, found `&str`
    |
-   = note: expected opaque type `Boo`
+   = note: expected opaque type `impl std::fmt::Debug`
                 found reference `&'static str`
 
 error: aborting due to 2 previous errors
diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr
index 02ab3399ea6..726f4ea6e00 100644
--- a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr
+++ b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr
@@ -1,8 +1,8 @@
 error: could not find defining uses
-  --> $DIR/type-alias-impl-trait-with-cycle-error.rs:3:1
+  --> $DIR/type-alias-impl-trait-with-cycle-error.rs:3:12
    |
 LL | type Foo = impl Fn() -> Foo;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |            ^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr
index e9abb795886..3947cc4d270 100644
--- a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr
+++ b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr
@@ -1,8 +1,8 @@
 error: could not find defining uses
-  --> $DIR/type-alias-impl-trait-with-cycle-error2.rs:7:1
+  --> $DIR/type-alias-impl-trait-with-cycle-error2.rs:7:12
    |
 LL | type Foo = impl Bar<Foo, Item = Foo>;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs b/src/test/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs
new file mode 100644
index 00000000000..fd954801dc0
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+#![feature(type_alias_impl_trait)]
+
+use std::iter::{once, Chain};
+
+type I<A> = Chain<A, impl Iterator<Item = &'static str>>;
+fn test2<A: Iterator<Item = &'static str>>(x: A) -> I<A> {
+    x.chain(once("5"))
+}
+
+fn main() {
+    assert_eq!(vec!["1", "3", "5"], test2(["1", "3"].iter().cloned()).collect::<Vec<_>>());
+}
diff --git a/src/test/ui/type/type-recursive.stderr b/src/test/ui/type/type-recursive.stderr
index 72bf372e561..d6d32cc5d6f 100644
--- a/src/test/ui/type/type-recursive.stderr
+++ b/src/test/ui/type/type-recursive.stderr
@@ -5,9 +5,12 @@ LL | struct T1 {
    | ^^^^^^^^^ recursive type has infinite size
 LL |     foo: isize,
 LL |     foolish: T1
-   |     ----------- recursive without indirection
+   |              -- recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `T1` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T1` representable
+   |
+LL |     foolish: Box<T1>
+   |              ^^^^  ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/union/union-nonrepresentable.stderr b/src/test/ui/union/union-nonrepresentable.stderr
index 746c1033ea3..c54d04de12c 100644
--- a/src/test/ui/union/union-nonrepresentable.stderr
+++ b/src/test/ui/union/union-nonrepresentable.stderr
@@ -5,9 +5,12 @@ LL | union U {
    | ^^^^^^^ recursive type has infinite size
 LL |     a: u8,
 LL |     b: U,
-   |     ---- recursive without indirection
+   |        - recursive without indirection
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `U` representable
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `U` representable
+   |
+LL |     b: Box<U>,
+   |        ^^^^ ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/unterminated-comment.rs b/src/test/ui/unterminated-comment.rs
new file mode 100644
index 00000000000..1cfdfb1fb45
--- /dev/null
+++ b/src/test/ui/unterminated-comment.rs
@@ -0,0 +1 @@
+/* //~ ERROR E0758
diff --git a/src/test/ui/unterminated-comment.stderr b/src/test/ui/unterminated-comment.stderr
new file mode 100644
index 00000000000..c513fafeeb3
--- /dev/null
+++ b/src/test/ui/unterminated-comment.stderr
@@ -0,0 +1,9 @@
+error[E0758]: unterminated block comment
+  --> $DIR/unterminated-comment.rs:1:1
+   |
+LL | /*
+   | ^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0758`.
diff --git a/src/test/ui/unterminated-doc-comment.rs b/src/test/ui/unterminated-doc-comment.rs
new file mode 100644
index 00000000000..82546fe73da
--- /dev/null
+++ b/src/test/ui/unterminated-doc-comment.rs
@@ -0,0 +1 @@
+/*! //~ ERROR E0758
diff --git a/src/test/ui/unterminated-doc-comment.stderr b/src/test/ui/unterminated-doc-comment.stderr
new file mode 100644
index 00000000000..2d5e537973e
--- /dev/null
+++ b/src/test/ui/unterminated-doc-comment.stderr
@@ -0,0 +1,9 @@
+error[E0758]: unterminated block doc-comment
+  --> $DIR/unterminated-doc-comment.rs:1:1
+   |
+LL | /*!
+   | ^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0758`.
diff --git a/src/test/ui/variance/variance-associated-types2.nll.stderr b/src/test/ui/variance/variance-associated-types2.nll.stderr
new file mode 100644
index 00000000000..27d1e184416
--- /dev/null
+++ b/src/test/ui/variance/variance-associated-types2.nll.stderr
@@ -0,0 +1,12 @@
+error: lifetime may not live long enough
+  --> $DIR/variance-associated-types2.rs:13:12
+   |
+LL | fn take<'a>(_: &'a u32) {
+   |         -- lifetime `'a` defined here
+LL |     let _: Box<dyn Foo<Bar = &'a u32>> = make();
+   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static`
+   |
+   = help: consider replacing `'a` with `'static`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/variance/variance-associated-types2.rs b/src/test/ui/variance/variance-associated-types2.rs
new file mode 100644
index 00000000000..6a095fce7ab
--- /dev/null
+++ b/src/test/ui/variance/variance-associated-types2.rs
@@ -0,0 +1,17 @@
+// Test that dyn Foo<Bar = T> is invariant with respect to T.
+// Failure to enforce invariance here can be weaponized, see #71550 for details.
+
+trait Foo {
+    type Bar;
+}
+
+fn make() -> Box<dyn Foo<Bar = &'static u32>> {
+    panic!()
+}
+
+fn take<'a>(_: &'a u32) {
+    let _: Box<dyn Foo<Bar = &'a u32>> = make();
+    //~^ ERROR mismatched types [E0308]
+}
+
+fn main() {}
diff --git a/src/test/ui/variance/variance-associated-types2.stderr b/src/test/ui/variance/variance-associated-types2.stderr
new file mode 100644
index 00000000000..52cdd6493b0
--- /dev/null
+++ b/src/test/ui/variance/variance-associated-types2.stderr
@@ -0,0 +1,18 @@
+error[E0308]: mismatched types
+  --> $DIR/variance-associated-types2.rs:13:42
+   |
+LL |     let _: Box<dyn Foo<Bar = &'a u32>> = make();
+   |                                          ^^^^^^ lifetime mismatch
+   |
+   = note: expected trait object `dyn Foo<Bar = &'a u32>`
+              found trait object `dyn Foo<Bar = &'static u32>`
+note: the lifetime `'a` as defined on the function body at 12:9...
+  --> $DIR/variance-associated-types2.rs:12:9
+   |
+LL | fn take<'a>(_: &'a u32) {
+   |         ^^
+   = note: ...does not necessarily outlive the static lifetime
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/write-to-static-mut-in-static.stderr b/src/test/ui/write-to-static-mut-in-static.stderr
index 6c2bd13d433..50dfce3448c 100644
--- a/src/test/ui/write-to-static-mut-in-static.stderr
+++ b/src/test/ui/write-to-static-mut-in-static.stderr
@@ -5,10 +5,10 @@ LL | pub static mut B: () = unsafe { A = 1; };
    |                                 ^^^^^ modifying a static's initial value from another static's initializer
 
 error[E0391]: cycle detected when const-evaluating `C`
-  --> $DIR/write-to-static-mut-in-static.rs:5:34
+  --> $DIR/write-to-static-mut-in-static.rs:5:1
    |
 LL | pub static mut C: u32 = unsafe { C = 1; 0 };
-   |                                  ^^^^^
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
 note: ...which requires const-evaluating `C`...
   --> $DIR/write-to-static-mut-in-static.rs:5:1