diff --git a/tests/ui/type-param-constraints.rs b/tests/ui/auto-traits/auto-traits-type-parameter similarity index 100% rename from tests/ui/type-param-constraints.rs rename to tests/ui/auto-traits/auto-traits-type-parameter diff --git a/tests/ui/unevaluated_fixed_size_array_len.rs b/tests/ui/consts/const-eval-array-len-in-impl.rs similarity index 100% rename from tests/ui/unevaluated_fixed_size_array_len.rs rename to tests/ui/consts/const-eval-array-len-in-impl.rs diff --git a/tests/ui/unevaluated_fixed_size_array_len.stderr b/tests/ui/consts/const-eval-array-len-in-impl.stderr similarity index 100% rename from tests/ui/unevaluated_fixed_size_array_len.stderr rename to tests/ui/consts/const-eval-array-len-in-impl.stderr diff --git a/tests/ui/typestate-multi-decl.rs b/tests/ui/destructuring-assignment/let-binding-tuple-destructuring.rs similarity index 100% rename from tests/ui/typestate-multi-decl.rs rename to tests/ui/destructuring-assignment/let-binding-tuple-destructuring.rs diff --git a/tests/ui/type-id-higher-rank-2.rs b/tests/ui/lifetimes/any-lifetime-escape-higher-rank.rs similarity index 100% rename from tests/ui/type-id-higher-rank-2.rs rename to tests/ui/lifetimes/any-lifetime-escape-higher-rank.rs diff --git a/tests/ui/type_length_limit.rs b/tests/ui/limits/type-length-limit-enforcement.rs similarity index 100% rename from tests/ui/type_length_limit.rs rename to tests/ui/limits/type-length-limit-enforcement.rs diff --git a/tests/ui/type_length_limit.stderr b/tests/ui/limits/type-length-limit-enforcement.stderr similarity index 100% rename from tests/ui/type_length_limit.stderr rename to tests/ui/limits/type-length-limit-enforcement.stderr diff --git a/tests/ui/underscore-ident-matcher.rs b/tests/ui/macros/macro-fragment-ident-underscore-error.rs similarity index 100% rename from tests/ui/underscore-ident-matcher.rs rename to tests/ui/macros/macro-fragment-ident-underscore-error.rs diff --git a/tests/ui/underscore-ident-matcher.stderr b/tests/ui/macros/macro-fragment-ident-underscore-error.stderr similarity index 100% rename from tests/ui/underscore-ident-matcher.stderr rename to tests/ui/macros/macro-fragment-ident-underscore-error.stderr diff --git a/tests/ui/type-namespace.rs b/tests/ui/namespace/struct-type-and-function-name-coexistence.rs similarity index 100% rename from tests/ui/type-namespace.rs rename to tests/ui/namespace/struct-type-and-function-name-coexistence.rs diff --git a/tests/ui/underscore-method-after-integer.rs b/tests/ui/parser/integer-literal-method-call-underscore.rs similarity index 100% rename from tests/ui/underscore-method-after-integer.rs rename to tests/ui/parser/integer-literal-method-call-underscore.rs diff --git a/tests/ui/type-use-i1-versus-i8.rs b/tests/ui/ptr_ops/ptr-write-bool-representation.rs similarity index 100% rename from tests/ui/type-use-i1-versus-i8.rs rename to tests/ui/ptr_ops/ptr-write-bool-representation.rs diff --git a/tests/ui/type-ptr.rs b/tests/ui/ptr_ops/raw-pointer-type-basic.rs similarity index 100% rename from tests/ui/type-ptr.rs rename to tests/ui/ptr_ops/raw-pointer-type-basic.rs diff --git a/tests/ui/try-operator-hygiene.rs b/tests/ui/try-trait/try-operator-expansion-hygiene.rs similarity index 100% rename from tests/ui/try-operator-hygiene.rs rename to tests/ui/try-trait/try-operator-expansion-hygiene.rs diff --git a/tests/ui/try-operator.rs b/tests/ui/try-trait/try-operator-various-contexts.rs similarity index 100% rename from tests/ui/try-operator.rs rename to tests/ui/try-trait/try-operator-various-contexts.rs diff --git a/tests/ui/unconstrained-ref.rs b/tests/ui/type-inference/type-inference-none-in-generic-ref.rs similarity index 100% rename from tests/ui/unconstrained-ref.rs rename to tests/ui/type-inference/type-inference-none-in-generic-ref.rs diff --git a/tests/ui/unconstrained-ref.stderr b/tests/ui/type-inference/type-inference-none-in-generic-ref.stderr similarity index 100% rename from tests/ui/unconstrained-ref.stderr rename to tests/ui/type-inference/type-inference-none-in-generic-ref.stderr diff --git a/tests/ui/unconstrained-none.rs b/tests/ui/type-inference/type-inference-unconstrained-none.rs similarity index 100% rename from tests/ui/unconstrained-none.rs rename to tests/ui/type-inference/type-inference-unconstrained-none.rs diff --git a/tests/ui/unconstrained-none.stderr b/tests/ui/type-inference/type-inference-unconstrained-none.stderr similarity index 100% rename from tests/ui/unconstrained-none.stderr rename to tests/ui/type-inference/type-inference-unconstrained-none.stderr diff --git a/tests/ui/tydesc-name.rs b/tests/ui/type/type-name-basic.rs similarity index 100% rename from tests/ui/tydesc-name.rs rename to tests/ui/type/type-name-basic.rs diff --git a/tests/ui/typeid-intrinsic.rs b/tests/ui/type/typeid-consistency-comprehensive.rs similarity index 100% rename from tests/ui/typeid-intrinsic.rs rename to tests/ui/type/typeid-consistency-comprehensive.rs diff --git a/tests/ui/underscore-lifetimes.rs b/tests/ui/underscore-lifetime/basic-underscore-lifetime-elision.rs similarity index 100% rename from tests/ui/underscore-lifetimes.rs rename to tests/ui/underscore-lifetime/basic-underscore-lifetime-elision.rs