rust/tests/ui/type-alias-impl-trait
bors 9d6d5d4894 Auto merge of #116751 - Nadrieril:lint-overlap-per-column, r=davidtwco
Lint overlapping ranges as a separate pass

This reworks the [`overlapping_range_endpoints`](https://doc.rust-lang.org/beta/nightly-rustc/rustc_lint_defs/builtin/static.OVERLAPPING_RANGE_ENDPOINTS.html) lint. My motivations are:

- It was annoying to have this lint entangled with the exhaustiveness algorithm, especially wrt librarification;
- This makes the lint behave consistently.

Here's the consistency story. Take the following matches:
```rust
match (0u8, true) {
    (0..=10, true) => {}
    (10..20, true) => {}
    (10..20, false) => {}
    _ => {}
}
match (true, 0u8) {
    (true, 0..=10) => {}
    (true, 10..20) => {}
    (false, 10..20) => {}
    _ => {}
}
```
There are two semantically consistent options: option 1 we lint all overlaps between the ranges, option 2 we only lint the overlaps that could actually occur (i.e. the ones with `true`). Option 1 is what this PR does. Option 2 is possible but would require the exhaustiveness algorithm to track more things for the sake of the lint. The status quo is that we're inconsistent between the two.

Option 1 generates more false postives, but I prefer it from a maintainer's perspective. I do think the difference is minimal; cases where the difference is observable seem rare.

This PR adds a separate pass, so this will have a perf impact. Let's see how bad, it looked ok locally.
2023-10-27 14:10:42 +00:00
..
auxiliary
argument-types.rs
assoc-projection-ice.rs
assoc-type-const.rs
assoc-type-lifetime-unconstrained.rs
assoc-type-lifetime-unconstrained.stderr
assoc-type-lifetime.rs
associated-type-alias-impl-trait.rs
associated-type-impl-trait-lifetime.rs
auto-trait-leakage2.rs
auto-trait-leakage2.stderr
auto-trait-leakage3.rs Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
auto-trait-leakage3.stderr Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
auto-trait-leakage.rs
bound_reduction2.rs
bound_reduction2.stderr
bound_reduction.rs
bounds-are-checked3.rs
bounds-are-checked3.stderr
bounds-are-checked-2.rs
bounds-are-checked-2.stderr
bounds-are-checked.rs
bounds-are-checked.stderr
bounds.rs
broken_mir.rs
closure_args2.rs
closure_args.rs
closure_parent_substs.rs s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
closure_wf_outlives.rs
closure_wf_outlives.stderr
closures_in_branches.rs
closures_in_branches.stderr
coherence_cross_crate.rs
coherence_cross_crate.stderr
coherence_different_hidden_ty.rs
coherence_different_hidden_ty.stderr
coherence_generalization.rs
coherence.rs
coherence.stderr
collect_hidden_types.rs
constrain_inputs_unsound.rs
constrain_inputs_unsound.stderr
constrain_inputs.rs
constrain_inputs.stderr
cross_crate_ice2.rs
cross_crate_ice.rs
cross_inference_pattern_bug_no_type.rs
cross_inference_pattern_bug.rs
cross_inference_rpit.rs
cross_inference.rs
debug-ty-with-weak.rs
declared_but_never_defined.rs
declared_but_never_defined.stderr
declared_but_not_defined_in_scope.rs
declared_but_not_defined_in_scope.stderr
defined-by-user-annotation.rs
defining-use-submodule.rs
destructure_tait-ice-113594.rs
destructure_tait-layout_of-ice-113594.rs
destructuring.rs
different_defining_uses_never_type2.rs
different_defining_uses_never_type3.rs
different_defining_uses_never_type3.stderr
different_defining_uses_never_type-2.rs
different_defining_uses_never_type-2.stderr
different_defining_uses_never_type-3.rs
different_defining_uses_never_type-3.stderr
different_defining_uses_never_type.rs
different_defining_uses_never_type.stderr
different_defining_uses.rs
different_defining_uses.stderr
different_lifetimes_defining_uses.rs
different_lifetimes_defining_uses.stderr
drop-shim-relates-opaque-issue-114375.rs
escaping-bound-var.rs
escaping-bound-var.stderr
fallback.rs
fallback.stderr
field-types.rs
future.rs
future.stderr
generic_different_defining_uses.rs
generic_different_defining_uses.stderr
generic_duplicate_lifetime_param.rs
generic_duplicate_lifetime_param.stderr
generic_duplicate_param_use2.rs
generic_duplicate_param_use2.stderr
generic_duplicate_param_use3.rs
generic_duplicate_param_use3.stderr
generic_duplicate_param_use4.rs
generic_duplicate_param_use4.stderr
generic_duplicate_param_use5.rs
generic_duplicate_param_use5.stderr
generic_duplicate_param_use6.rs
generic_duplicate_param_use6.stderr
generic_duplicate_param_use7.rs
generic_duplicate_param_use8.rs
generic_duplicate_param_use8.stderr
generic_duplicate_param_use9.rs
generic_duplicate_param_use9.stderr
generic_duplicate_param_use10.rs
generic_duplicate_param_use.rs
generic_duplicate_param_use.stderr
generic_lifetime_param.rs
generic_nondefining_use.rs
generic_nondefining_use.stderr
generic_not_used.rs
generic_not_used.stderr
generic_type_does_not_live_long_enough.rs
generic_type_does_not_live_long_enough.stderr
generic_underconstrained2.rs Work around the fact that check_mod_type_wf may spuriously return ErrorGuaranteed, even if that error is only emitted by check_modwitem_types 2023-10-25 12:04:54 +00:00
generic_underconstrained2.stderr Work around the fact that check_mod_type_wf may spuriously return ErrorGuaranteed, even if that error is only emitted by check_modwitem_types 2023-10-25 12:04:54 +00:00
generic_underconstrained.rs Work around the fact that check_mod_type_wf may spuriously return ErrorGuaranteed, even if that error is only emitted by check_modwitem_types 2023-10-25 12:04:54 +00:00
generic_underconstrained.stderr Work around the fact that check_mod_type_wf may spuriously return ErrorGuaranteed, even if that error is only emitted by check_modwitem_types 2023-10-25 12:04:54 +00:00
hidden_behind_projection_behind_struct_field.rs
hidden_behind_projection_behind_struct_field.stderr
hidden_behind_struct_field2.rs
hidden_behind_struct_field.rs
hidden_type_mismatch.rs
hidden_type_mismatch.stderr
higher_kinded_params2.rs
higher_kinded_params2.stderr
higher_kinded_params3.rs
higher_kinded_params3.stderr
higher_kinded_params.rs
impl_for_weak_alias.rs
impl_for_weak_alias.stderr
impl_trait_for_generic_tait.rs
impl_trait_for_same_tait.rs
impl_trait_for_same_tait.stderr Make things work by using the new solver 2023-10-23 23:35:27 +00:00
impl_trait_for_tait_bound2.rs
impl_trait_for_tait_bound2.stderr
impl_trait_for_tait_bound.rs
impl_trait_for_tait_bound.stderr
impl_trait_for_tait.rs
impl-trait-in-type-alias-with-bad-substs.rs
impl-trait-in-type-alias-with-bad-substs.stderr
impl-with-unconstrained-param.rs
impl-with-unconstrained-param.stderr
implied_bounds2.rs
implied_bounds3.rs
implied_bounds_closure.rs
implied_bounds_closure.stderr
implied_bounds_from_types.rs
implied_bounds_from_types.stderr
implied_bounds.rs
implied_bounds.stderr
implied_lifetime_wf_check3.rs
implied_lifetime_wf_check3.stderr
implied_lifetime_wf_check4_static.rs
implied_lifetime_wf_check4_static.stderr
implied_lifetime_wf_check.rs
imply_bounds_from_bounds_param.rs
imply_bounds_from_bounds_param.stderr
imply_bounds_from_bounds.rs
incoherent-assoc-imp-trait.rs
incoherent-assoc-imp-trait.stderr
incomplete-inference.rs
incomplete-inference.stderr
indirect-recursion-issue-112047.rs
indirect-recursion-issue-112047.stderr
inference-cycle.rs Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
inference-cycle.stderr Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
invalid_impl_trait_in_assoc_ty.rs
invalid_impl_trait_in_assoc_ty.stderr
issue-52843-closure-constrain.rs
issue-52843-closure-constrain.stderr
issue-52843.rs
issue-52843.stderr
issue-53092-2.rs
issue-53092-2.stderr
issue-53092.rs
issue-53092.stderr
issue-53096.rs
issue-53096.stderr
issue-53398-cyclic-types.rs
issue-53598.rs
issue-53598.stderr
issue-53678-coroutine-and-const-fn.rs Rename lots of files that had generator in their name 2023-10-20 21:14:02 +00:00
issue-55099-lifetime-inference.rs
issue-57188-associate-impl-capture.rs
issue-57611-trait-alias.rs
issue-57700.rs
issue-57700.stderr
issue-57807-associated-type.rs
issue-57961.rs
issue-57961.stderr
issue-58662-coroutine-with-lifetime.rs Rename lots of files that had generator in their name 2023-10-20 21:14:02 +00:00
issue-58662-simplified.rs s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
issue-58887.rs
issue-58951-2.rs
issue-58951.rs
issue-60371.rs
issue-60371.stderr
issue-60407.rs
issue-60407.stderr
issue-60564-working.rs
issue-60564.rs
issue-60564.stderr
issue-60662.rs
issue-60662.stdout
issue-62000-associate-impl-trait-lifetimes.rs
issue-63263-closure-return.rs
issue-63279.rs
issue-63279.stderr
issue-63355.rs
issue-63677-type-alias-coherence.rs
issue-65384.rs
issue-65384.stderr
issue-65679-inst-opaque-ty-from-val-twice.rs
issue-65918.rs
issue-66580-closure-coherence.rs
issue-67844-nested-opaque.rs
issue-68368-non-defining-use-2.rs
issue-68368-non-defining-use-2.stderr
issue-68368-non-defining-use.rs
issue-68368-non-defining-use.stderr
issue-69136-inner-lifetime-resolve-error.rs
issue-69136-inner-lifetime-resolve-error.stderr
issue-69136-inner-lifetime-resolve-ok.rs
issue-69323.rs
issue-70121.rs
issue-70121.stderr
issue-72793.rs
issue-74244.rs
issue-74244.stderr
issue-74280.rs
issue-74280.stderr
issue-74761-2.rs
issue-74761-2.stderr
issue-74761.rs
issue-74761.stderr
issue-76202-trait-impl-for-tait.rs
issue-77179.rs
issue-77179.stderr
issue-78450.rs
issue-84660-trait-impl-for-tait.rs
issue-84660-unsoundness.rs
issue-84660-unsoundness.stderr
issue-87455-static-lifetime-ice.rs
issue-89686.rs
issue-89686.stderr
issue-89952.rs
issue-90400-1.rs
issue-90400-1.stderr
issue-90400-2.rs
issue-90400-2.stderr
issue-93411.rs
issue-94429.rs Rename Gen to Coro in tests 2023-10-20 21:14:02 +00:00
issue-94429.stderr Rename lots of files that had generator in their name 2023-10-20 21:14:02 +00:00
issue-96572-unconstrained-mismatch.rs
issue-96572-unconstrained-mismatch.stderr
issue-96572-unconstrained.rs Handle ty::Opaque correctly 2023-10-27 05:16:26 +02:00
issue-98604.rs
issue-98604.stderr
issue-98608.rs
issue-98608.stderr
issue-101750.rs
issue-104817.rs
issue-104817.stock.stderr
issue-109054.rs
issue-109054.stderr
match-unification.rs
missing_lifetime_bound.rs
missing_lifetime_bound.stderr
multi-error.rs
multi-error.stderr
multiple_definitions.rs
multiple-def-uses-in-one-fn2.rs
multiple-def-uses-in-one-fn2.stderr
multiple-def-uses-in-one-fn3.rs
multiple-def-uses-in-one-fn3.stderr
multiple-def-uses-in-one-fn-infer.rs
multiple-def-uses-in-one-fn-infer.stderr
multiple-def-uses-in-one-fn-lifetimes.rs
multiple-def-uses-in-one-fn-lifetimes.stderr
multiple-def-uses-in-one-fn-pass.rs
multiple-def-uses-in-one-fn.rs
multiple-def-uses-in-one-fn.stderr
mututally-recursive-overflow.rs
mututally-recursive-overflow.stderr
nested_in_closure.rs
nested_type_alias_impl_trait.rs
nested_type_alias_impl_trait.stderr
nested-impl-trait-in-tait.rs
nested-impl-trait-in-tait.stderr
nested-rpit-with-lifetimes.rs
nested-tait-hrtb.rs
nested-tait-hrtb.stderr
nested-tait-inference2.rs
nested-tait-inference2.stderr
nested-tait-inference3.rs
nested-tait-inference3.stderr
nested-tait-inference.rs
nested-tait-inference.stderr
nested.rs
nested.stderr
never_reveal_concrete_type.rs
no_inferrable_concrete_type.rs
no_inferrable_concrete_type.stderr
no_revealing_outside_defining_module.rs
no_revealing_outside_defining_module.stderr
non-defining-method.rs
non-defining-method.stderr
normalize-alias-type.rs
normalize-hidden-types.current.stderr
normalize-hidden-types.rs
not_a_defining_use.rs
not_a_defining_use.stderr
not_well_formed.fixed
not_well_formed.rs
not_well_formed.stderr
not-matching-trait-refs-isnt-defining.rs
not-matching-trait-refs-isnt-defining.stderr
obligation_ice.rs
outlives-bound-var.rs
privacy.rs
privacy.stderr
recursive-fn-tait.rs
recursive-fn-tait.stderr
recursive-tait-conflicting-defn-2.rs
recursive-tait-conflicting-defn-2.stderr
recursive-tait-conflicting-defn.rs
recursive-tait-conflicting-defn.stderr
reveal_local.rs Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
reveal_local.stderr Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
rpit_tait_equality_in_canonical_query_2.rs
rpit_tait_equality_in_canonical_query.current.stderr
rpit_tait_equality_in_canonical_query.rs
self_implication.rs
self-referential-2.rs
self-referential-2.stderr
self-referential-3.rs
self-referential-3.stderr
self-referential-4.rs
self-referential-4.stderr
self-referential.rs
self-referential.stderr
static-const-types.rs
structural-match-no-leak.rs
structural-match-no-leak.stderr
structural-match.rs
structural-match.stderr
tait-normalize.rs
type_of_a_let.rs
type_of_a_let.stderr
type-alias-impl-trait2.rs
type-alias-impl-trait-assoc-dyn.rs
type-alias-impl-trait-assoc-impl-trait.rs
type-alias-impl-trait-const.rs
type-alias-impl-trait-fn-type.rs
type-alias-impl-trait-fn-type.stderr
type-alias-impl-trait-fns.rs
type-alias-impl-trait-sized.rs
type-alias-impl-trait-struct.rs
type-alias-impl-trait-tuple.rs
type-alias-impl-trait-unconstrained-lifetime.rs
type-alias-impl-trait-unconstrained-lifetime.stderr
type-alias-impl-trait-with-cycle-error2.rs
type-alias-impl-trait-with-cycle-error2.stderr
type-alias-impl-trait-with-cycle-error.rs
type-alias-impl-trait-with-cycle-error.stderr
type-alias-impl-trait-with-no-traits.rs
type-alias-impl-trait-with-no-traits.stderr
type-alias-impl-trait.rs
type-alias-nested-impl-trait.rs
unbounded_opaque_type.rs
unconstrained-impl-param.rs
unconstrained-impl-param.stderr
under-binder.rs
under-binder.stderr
underconstrained_generic.rs
underconstrained_generic.stderr
underconstrained_lifetime.rs
underconstrained_lifetime.stderr
unnameable_type.rs
unnameable_type.stderr
unused_generic_param.rs
variance.rs
variance.stderr
weird-return-types.rs
wf_check_closures.rs
wf_check_closures.stderr
wf-check-fn-def.rs
wf-check-fn-def.stderr
wf-check-fn-ptrs.rs
wf-check-rpit-lifetimes.rs
wf-in-associated-type.fail.stderr
wf-in-associated-type.rs
wf-nested.fail.stderr
wf-nested.pass_sound.stderr
wf-nested.rs