-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Commit 46a82f7
committed
next_trait_solver: merge trivial builtin impls
Some of the host effect predicates end up with
`TraitGoalProvenVia::ParamEnv` combined with
`CandidateSource::BuiltinImpl` and are discarded as a consequence.
This commit special-cases `BuiltinImplSource::Trivial` to avoid this -
that might not be precisely the correct fix but it is unclear what that
would be.
Without this, the following tests fail:
- tests/ui/associated-type-bounds/cant-see-copy-bound-from-child-rigid.rs#next
- tests/ui/associated-types/defaults-suitability.rs#next
- tests/ui/associated-types/defaults-unsound-62211-1.rs#next
- tests/ui/associated-types/defaults-unsound-62211-2.rs#next
- tests/ui/associated-types/imply-relevant-nested-item-bounds.rs#next
- tests/ui/associated-types/imply-relevant-nested-item-bounds-2.rs#next
- tests/ui/associated-types/issue-63593.rs#next
- tests/ui/associated-types/issue-54108.rs#next
- tests/ui/async-await/async-closures/constrained-but-no-upvars-yet.rs#next
- tests/ui/async-await/async-closures/is-not-fn.rs#next
- tests/ui/async-await/async-closures/is-fn.rs#next
- tests/ui/async-await/async-closures/once.rs#next
- tests/ui/async-await/async-closures/signature-inference-from-two-part-bound.rs#next
- tests/ui/async-await/async-fn/higher-ranked-async-fn.rs#next
- tests/ui/async-await/async-fn/project.rs#next
- tests/ui/async-await/return-type-notation/normalizing-self-auto-trait-issue-109924.rs#next
- tests/ui/async-await/send-bound-async-closure.rs#next
- tests/ui/borrowck/implied-bound-from-impl-header.rs#next
- tests/ui/borrowck/implied-bound-from-normalized-arg.rs#next
- tests/ui/borrowck/issue-103095.rs#next
- tests/ui/closures/deduce-signature/deduce-from-opaque-type-after-norm.rs#next
- tests/ui/closures/deduce-signature/infer-higher-ranked-signature.rs#next
- tests/ui/closures/deduce-signature/infer-signature-from-impl.rs#next
- tests/ui/closures/deduce-signature/obligation-with-leaking-placeholders.rs#next
- tests/ui/closures/deduce-signature/supertrait-signature-inference-issue-23012.rs#next
- tests/ui/closures/supertrait-hint-references-assoc-ty.rs#next
- tests/ui/coherence/coherence-overlap-negate-use-feature-gate.rs
- tests/ui/coherence/occurs-check/opaques.rs#next
- tests/ui/coherence/occurs-check/associated-type.rs#next
- tests/ui/coherence/orphan-check-alias.rs#next
- tests/ui/coherence/orphan-check-projections-nested.rs#next
- tests/ui/coherence/orphan-check-projections-not-covering-ambiguity.rs#next
- tests/ui/coherence/orphan-check-projections-not-covering.rs#next
- tests/ui/coroutine/gen_block_iterate.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/as_expression.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/does_not_acccept_args.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/nested.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/simple.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/stacked.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/type_mismatch.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.rs#next
- tests/ui/diagnostic_namespace/do_not_recommend/with_lifetime.rs#next
- tests/ui/generic-associated-types/ambig-hr-projection-issue-93340.rs#next
- tests/ui/generic-associated-types/assume-gat-normalization-for-nested-goals.rs#next
- tests/ui/generic-associated-types/issue-74816.rs#next
- tests/ui/generic-associated-types/issue-74824.rs#next
- tests/ui/generic-associated-types/issue-91883.rs#next
- tests/ui/generic-associated-types/rigid-hr-projection-issue-93340.rs#next
- tests/ui/generic-const-items/const-trait-impl.rs
- tests/ui/higher-ranked/builtin-closure-like-bounds.rs#next
- tests/ui/higher-ranked/closure-bound-codegen-ice.rs#next
- tests/ui/higher-ranked/leak-check/candidate-from-env-universe-err-1.rs#next
- tests/ui/higher-ranked/leak-check/candidate-from-env-universe-err-2.rs#next
- tests/ui/higher-ranked/leak-check/candidate-from-env-universe-err-project.rs#next
- tests/ui/higher-ranked/leak-check/leak-check-in-selection-2.rs#next
- tests/ui/higher-ranked/leak-check/leak-check-in-selection-3.rs#next
- tests/ui/higher-ranked/leak-check/leak-check-in-selection-4-hr-nested.rs#next
- tests/ui/higher-ranked/leak-check/leak-check-in-selection-5-ambig.rs#next
- tests/ui/higher-ranked/leak-check/leak-check-in-selection-6-ambig-unify.rs#next
- tests/ui/higher-ranked/trait-bounds/future.rs#next
- tests/ui/higher-ranked/trait-bounds/rigid-equate-projections-in-higher-ranked-fn-signature.rs#next
- tests/ui/higher-ranked/trait-bounds/normalize-under-binder/norm-before-method-resolution-opaque-type.rs#next
- tests/ui/impl-trait/auto-trait-selection-freeze.rs#next
- tests/ui/impl-trait/auto-trait-selection.rs#next
- tests/ui/impl-trait/call_method_on_inherent_impl.rs#next
- tests/ui/impl-trait/call_method_ambiguous.rs#next
- tests/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs#next
- tests/ui/impl-trait/hidden-type-is-opaque-2.rs#next
- tests/ui/impl-trait/in-trait/alias-bounds-when-not-wf.rs
- tests/ui/impl-trait/in-trait/default-body-with-rpit.rs#next
- tests/ui/impl-trait/in-trait/dyn-compatibility-sized.rs#next
- tests/ui/impl-trait/in-trait/false-positive-predicate-entailment-error.rs#next
- tests/ui/impl-trait/in-trait/refine-normalize.rs#next
- tests/ui/impl-trait/issue-103181-1.rs#next
- tests/ui/impl-trait/method-resolution2.rs#next
- tests/ui/impl-trait/recursive-bound-eval.rs#next
- tests/ui/impl-trait/unsized_coercion.rs#next
- tests/ui/issues/issue-15734.rs#next
- tests/ui/methods/fulfillment-disqualifies-method.rs#next
- tests/ui/methods/leak-check-disquality.rs#next
- tests/ui/nll/check-normalized-sig-for-wf.rs#next
- tests/ui/panics/abort-on-panic.rs#next
- tests/ui/specialization/source-impl-requires-constraining-predicates.rs#next
- tests/ui/specialization/source-impl-requires-constraining-predicates-ambig.rs#next
- tests/ui/specialization/specialization-default-items-drop-coherence.rs#next
- tests/ui/traits/const-traits/assoc-type-const-bound-usage-0.rs#next
- tests/ui/traits/const-traits/assoc-type-const-bound-usage-fail-2.rs#next
- tests/ui/traits/const-traits/assoc-type-const-bound-usage-fail.rs#next
- tests/ui/traits/const-traits/assoc-type.rs#next
- tests/ui/traits/const-traits/call-const-in-tilde-const.rs
- tests/ui/traits/const-traits/call-generic-method-dup-bound.rs
- tests/ui/traits/const-traits/call-generic-method-nonconst.rs
- tests/ui/traits/const-traits/const-bound-in-host.rs
- tests/ui/traits/const-traits/const-bound-on-not-const-associated-fn.rs
- tests/ui/traits/const-traits/const-cond-for-rpitit.rs
- tests/ui/traits/const-traits/const-drop-fail.rs#new_precise
- tests/ui/traits/const-traits/const-drop-fail.rs#new_stock
- tests/ui/traits/const-traits/const-drop.rs#precise
- tests/ui/traits/const-traits/const-drop.rs#stock
- tests/ui/traits/const-traits/const-in-closure.rs
- tests/ui/traits/const-traits/const-opaque.rs#no
- tests/ui/traits/const-traits/const-impl-trait.rs
- tests/ui/traits/const-traits/const-opaque.rs#yes
- tests/ui/traits/const-traits/dont-ice-on-const-pred-for-bounds.rs
- tests/ui/traits/const-traits/infer-fallback.rs
- tests/ui/traits/const-traits/issue-92230-wf-super-trait-env.rs
- tests/ui/traits/const-traits/item-bound-entailment-fails.rs
- tests/ui/traits/const-traits/item-bound-entailment.rs
- tests/ui/traits/const-traits/minicore-drop-without-feature-gate.rs#no
- tests/ui/traits/const-traits/minicore-deref-fail.rs
- tests/ui/traits/const-traits/minicore-const-fn-early-bound.rs
- tests/ui/traits/const-traits/minicore-drop-fail.rs
- tests/ui/traits/const-traits/minicore-drop-without-feature-gate.rs#yes
- tests/ui/traits/const-traits/minicore-fn-fail.rs
- tests/ui/traits/const-traits/minicore-works.rs
- tests/ui/traits/const-traits/predicate-entailment-passes.rs
- tests/ui/traits/const-traits/predicate-entailment-fails.rs
- tests/ui/traits/const-traits/super-traits-fail-2.rs#nn
- tests/ui/traits/const-traits/super-traits-fail-2.rs#ny
- tests/ui/traits/const-traits/staged-api.rs
- tests/ui/traits/const-traits/super-traits-fail-3.rs#nnn
- tests/ui/traits/const-traits/super-traits-fail-2.rs#yn
- tests/ui/traits/const-traits/super-traits-fail-2.rs#yy
- tests/ui/traits/const-traits/super-traits-fail-3.rs#nny
- tests/ui/traits/const-traits/super-traits-fail-3.rs#nyy
- tests/ui/traits/const-traits/super-traits-fail-3.rs#nyn
- tests/ui/traits/const-traits/super-traits-fail-3.rs#yyy
- tests/ui/traits/const-traits/super-traits-fail-3.rs#ynn
- tests/ui/traits/const-traits/super-traits-fail-3.rs#yyn
- tests/ui/traits/const-traits/super-traits-fail-3.rs#yny
- tests/ui/traits/const-traits/super-traits.rs
- tests/ui/traits/const-traits/tilde-const-assoc-fn-in-trait-impl.rs
- tests/ui/traits/const-traits/tilde-const-inherent-assoc-const-fn.rs
- tests/ui/traits/const-traits/tilde-const-in-struct-args.rs
- tests/ui/traits/const-traits/trait-where-clause-self-referential.rs
- tests/ui/traits/const-traits/trait-where-clause-const.rs
- tests/ui/traits/const-traits/unsatisfied-const-trait-bound.rs
- tests/ui/traits/negative-bounds/opaque-type-unsatisfied-bound.rs
- tests/ui/traits/negative-impls/negative-impl-normalizes-to.rs#next
- tests/ui/traits/next-solver/alias-bound-preference.rs#next
- tests/ui/traits/next-solver/alias-relate/alias_eq_cant_be_furthur_normalized.rs
- tests/ui/traits/next-solver/alias-eq-in-canonical-response.rs
- tests/ui/traits/next-solver/alias-bound-unsound.rs
- tests/ui/traits/next-solver/alias-relate/alias_eq_simple.rs
- tests/ui/traits/next-solver/alias-relate/opaque-hidden-ty-is-rigid-alias.rs
- tests/ui/traits/next-solver/alias-sub.rs
- tests/ui/traits/next-solver/alias-relate/deeply-nested-no-hang.rs
- tests/ui/traits/next-solver/assembly/ambig-projection-self-is-ambig.rs
- tests/ui/traits/next-solver/assembly/assemble-normalizing-self-ty-impl-ambiguity.rs
- tests/ui/traits/next-solver/assembly/candidates-equal-modulo-norm-1.rs
- tests/ui/traits/next-solver/async.rs#fail
- tests/ui/traits/next-solver/assembly/candidates-equal-modulo-norm-2.rs
- tests/ui/traits/next-solver/async.rs#pass
- tests/ui/traits/next-solver/assembly/param-env-alias-bound-conflict.rs
- tests/ui/traits/next-solver/auto-with-drop_tracking_mir.rs#pass
- tests/ui/traits/next-solver/assembly/runaway-impl-candidate-selection.rs
- tests/ui/traits/next-solver/auto-with-drop_tracking_mir.rs#fail
- tests/ui/traits/next-solver/canonical/effect-var.rs
- tests/ui/traits/next-solver/canonical/int-var-eq-in-response.rs
- tests/ui/traits/next-solver/builtin-fn-must-return-sized.rs
- tests/ui/traits/next-solver/closure-inference-guidance.rs
- tests/ui/traits/next-solver/closure-signature-inference-2.rs
- tests/ui/traits/next-solver/closure-signature-inference-hr-ambig-alias-naming-self.rs#next
- tests/ui/traits/next-solver/coerce-ambig-alias-to-rigid-alias.rs
- tests/ui/traits/next-solver/coherence/trait_ref_is_knowable-norm-overflow.rs
- tests/ui/traits/next-solver/coherence/trait_ref_is_knowable-normalization-1.rs
- tests/ui/traits/next-solver/coherence/trait_ref_is_knowable-normalization-3.rs
- tests/ui/traits/next-solver/coherence/trait_ref_is_knowable-normalization-2.rs
- tests/ui/traits/next-solver/const-param-placeholder.rs#pass
- tests/ui/traits/next-solver/const-param-placeholder.rs#fail
- tests/ui/traits/next-solver/constrain-alias-goals-in-unsize.rs
- tests/ui/traits/next-solver/coroutine.rs#pass
- tests/ui/traits/next-solver/coroutine.rs#fail
- tests/ui/traits/next-solver/cycles/coinduction/fixpoint-exponential-growth.rs
- tests/ui/traits/next-solver/cycles/double-cycle-inductive-coinductive.rs
- tests/ui/traits/next-solver/cycles/inductive-cycle-but-err.rs
- tests/ui/traits/next-solver/cycles/inductive-cycle-but-ok.rs
- tests/ui/traits/next-solver/cycles/inductive-fixpoint-hang.rs
- tests/ui/traits/next-solver/cycles/leak-check-coinductive-cycle.rs
- tests/ui/traits/next-solver/cycles/inductive-not-on-stack.rs
- tests/ui/traits/next-solver/cycles/mixed-cycles-1.rs
- tests/ui/traits/next-solver/cycles/mixed-cycles-2.rs
- tests/ui/traits/next-solver/cycles/provisional-cache-impacts-behavior.rs
- tests/ui/traits/next-solver/cycles/provisional-result-done.rs
- tests/ui/traits/next-solver/cycles/cycle-modulo-ambig-aliases.rs
- tests/ui/traits/next-solver/destruct.rs
- tests/ui/traits/next-solver/diagnostics/alias_relate_error_uses_structurally_normalize.rs
- tests/ui/traits/next-solver/diagnostics/deeply-normalize-type-expectation.rs
- tests/ui/traits/next-solver/diagnostics/coerce-in-may-coerce.rs
- tests/ui/traits/next-solver/diagnostics/point-at-failing-nested.rs
- tests/ui/traits/next-solver/diagnostics/projection-trait-ref.rs
- tests/ui/traits/next-solver/diagnostics/dont-pick-fnptr-bound-as-leaf.rs#next
- tests/ui/traits/next-solver/dont-loop-fulfill-on-region-constraints.rs
- tests/ui/traits/next-solver/elaborate-item-bounds.rs
- tests/ui/traits/next-solver/dont-normalize-proj-with-error.rs
- tests/ui/traits/next-solver/dyn-incompatibility.rs
- tests/ui/traits/next-solver/fn-trait-closure.rs
- tests/ui/traits/next-solver/fn-trait.rs
- tests/ui/traits/next-solver/generalize/bivariant-alias.rs#next
- tests/ui/traits/next-solver/generalize/equating-projection-cyclically.rs
- tests/ui/traits/next-solver/generalize/hr-alias-non-hr-alias-self-ty-1.rs#next
- tests/ui/traits/next-solver/generalize/hr-alias-universe-lowering-ambiguity.rs
- tests/ui/traits/next-solver/generalize/occurs-check-nested-alias.rs#next
- tests/ui/traits/next-solver/generalize/instantiate-canonical-occurs-check-failure.rs
- tests/ui/traits/next-solver/generalize/hr-alias-non-hr-alias-self-ty-2.rs#next
- tests/ui/traits/next-solver/higher-ranked-dyn-bounds.rs
- tests/ui/traits/next-solver/issue-118950-root-region.rs
- tests/ui/traits/next-solver/iter-filter-projection.rs
- tests/ui/traits/next-solver/lazy-nested-obligations-2.rs
- tests/ui/traits/next-solver/lazy-nested-obligations-3.rs
- tests/ui/traits/next-solver/nested-obligations-with-bound-vars-gat.rs
- tests/ui/traits/next-solver/nested-alias-bound.rs
- tests/ui/traits/next-solver/method/path_lookup_wf_constraints.rs
- tests/ui/traits/next-solver/non-wf-ret.rs
- tests/ui/traits/next-solver/normalization-shadowing/alias-bound-shadowed-by-env.rs
- tests/ui/traits/next-solver/normalization-shadowing/discard-impls-shadowed-by-env-1.rs
- tests/ui/traits/next-solver/normalization-shadowing/discard-impls-shadowed-by-env-3.rs
- tests/ui/traits/next-solver/normalization-shadowing/discard-impls-shadowed-by-env-2.rs#next
- tests/ui/traits/next-solver/normalization-shadowing/param-env-impl-conflict.rs
- tests/ui/traits/next-solver/normalization-shadowing/normalizes_to_ignores_unnormalizable_candidate.rs
- tests/ui/traits/next-solver/normalization-shadowing/param-candidate-shadows-project.rs
- tests/ui/traits/next-solver/normalize-in-implied_outlives_bounds.rs
- tests/ui/traits/next-solver/normalize/normalize-param-env-3.rs
- tests/ui/traits/next-solver/normalize/normalize-param-env-1.rs
- tests/ui/traits/next-solver/normalize/normalize-async-closure-in-trait.rs
- tests/ui/traits/next-solver/normalize/normalize-param-env-2.rs
- tests/ui/traits/next-solver/normalize/normalize-param-env-4.rs#next
- tests/ui/traits/next-solver/normalize/normalize-rcvr-for-inherent.rs
- tests/ui/traits/next-solver/normalize/normalize-path-for-method.rs
- tests/ui/traits/next-solver/normalize/normalize-region-obligations.rs#hrtb
- tests/ui/traits/next-solver/normalize/normalize-region-obligations.rs#normalize_obligation
- tests/ui/traits/next-solver/normalize/normalize-region-obligations.rs#normalize_param_env
- tests/ui/traits/next-solver/normalize/normalize-type-outlives-in-param-env.rs
- tests/ui/traits/next-solver/normalize/ambig-goal-infer-in-type-oulives.rs
- tests/ui/traits/next-solver/normalize/param-env-trait-candidate-2.rs
- tests/ui/traits/next-solver/normalize/two-projection-param-candidates-are-ambiguous.rs
- tests/ui/traits/next-solver/opaques/dont-remap-tait-substs.rs
- tests/ui/traits/next-solver/opaques/select-alias-bound-as-param.rs
- tests/ui/traits/next-solver/opportunistic-region-resolve.rs
- tests/ui/traits/next-solver/opaques/no-define-in-wf-check.rs#next
- tests/ui/traits/next-solver/overflow/exponential-trait-goals.rs
- tests/ui/traits/next-solver/normalize/param-env-trait-candidate-1.rs
- tests/ui/traits/next-solver/overflow/global-cache.rs
- tests/ui/traits/next-solver/overflow/nalgebra-hang.rs#next
- tests/ui/traits/next-solver/overflow/recursive-self-normalization.rs
- tests/ui/traits/next-solver/overflow/recursive-self-normalization-2.rs
- tests/ui/traits/next-solver/pointee.rs
- tests/ui/traits/next-solver/pointer-like.rs
- tests/ui/traits/next-solver/prefer-candidate-no-constraints.rs
- tests/ui/traits/next-solver/prefer-param-env-on-ambiguity.rs
- tests/ui/traits/next-solver/projection-discr-kind.rs
- tests/ui/traits/next-solver/specialization-unconstrained.rs
- tests/ui/traits/next-solver/specialization-transmute.rs
- tests/ui/traits/next-solver/typeck/guide-ctors.rs
- tests/ui/traits/next-solver/try-example.rs
- tests/ui/traits/next-solver/typeck/normalize-in-upvar-collection.rs
- tests/ui/traits/next-solver/typeck/resolve-before-checking-builtin-ptr.rs
- tests/ui/traits/next-solver/typeck/resolve-before-checking-never.rs
- tests/ui/traits/next-solver/typeck/structurally-resolve-in-probe_adt.rs
- tests/ui/traits/next-solver/typeck/resolve-expectations.rs
- tests/ui/traits/next-solver/winnow-specializing-impls.rs
- tests/ui/traits/non_lifetime_binders/unifying-placeholders-in-query-response.rs#next
- tests/ui/traits/normalize-supertrait.rs#next
- tests/ui/traits/pointee-normalize-equate.rs#next
- tests/ui/traits/reservation-impl/non-lattice-ok.rs#next
- tests/ui/traits/trait-upcasting/impossible-method-modulo-binders-2.rs#next
- tests/ui/traits/trait-upcasting/impossible-method-modulo-binders.rs#next
- tests/ui/traits/trait-upcasting/normalization.rs#next
- tests/ui/traits/trait-upcasting/prefer-lower-candidates.rs#next
- tests/ui/traits/winnowing/global-non-global-env-1.rs#next
- tests/ui/traits/winnowing/global-non-global-env-3.rs#next
- tests/ui/traits/winnowing/global-non-global-env-2.rs#next
- tests/ui/traits/winnowing/global-non-global-env-4.rs#next
- tests/ui/transmutability/primitives/bool.rs#next
- tests/ui/transmutability/primitives/unit.rs#next
- tests/ui/type-alias-impl-trait/assoc-type-const.rs#next
- tests/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs#next
- tests/ui/type-alias-impl-trait/issue-78450.rs#next
- tests/ui/type-alias-impl-trait/issue-84660-unsoundness.rs#next
- tests/ui/type-alias-impl-trait/method_resolution3.rs#next
- tests/ui/type-alias-impl-trait/method_resolution4.rs#next
- tests/ui/type-alias-impl-trait/nested_inference_failure.rs#next
- tests/ui/type-alias-impl-trait/normalize-hidden-types.rs#next
- tests/ui/type-alias-impl-trait/rpit_tait_equality_in_canonical_query.rs#next
- tests/ui/typeck/bad-index-due-to-nested.rs#next
- tests/ui/typeck/issue-116864.rs
- tests/ui/unsized/issue-75899.rs#next
- tests/ui/transmutability/primitives/numbers.rs#next
- tests/ui/wf/wf-in-where-clause-static.rs#next1 parent 1070d2d commit 46a82f7Copy full SHA for 46a82f7
File tree
Expand file treeCollapse file tree
1 file changed
+4
-1
lines changedFilter options
- compiler/rustc_next_trait_solver/src/solve/assembly
Expand file treeCollapse file tree
1 file changed
+4
-1
lines changedcompiler/rustc_next_trait_solver/src/solve/assembly/mod.rs
Copy file name to clipboardExpand all lines: compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs+4-1Lines changed: 4 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
819 | 819 |
| |
820 | 820 |
| |
821 | 821 |
| |
822 |
| - | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
823 | 826 |
| |
824 | 827 |
| |
825 | 828 |
| |
|
0 commit comments