diff options
| author | lcnr <rust@lcnr.de> | 2024-07-09 09:10:19 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2024-07-09 09:10:19 +0200 |
| commit | 7097dbc50c086b652c37374cfbed6a40bf30efaf (patch) | |
| tree | 531554ce3d1498741a4ae705f5d20204451dd0dd | |
| parent | 9af6fee87de71729efca7dbb61c0931180895424 (diff) | |
| download | rust-7097dbc50c086b652c37374cfbed6a40bf30efaf.tar.gz rust-7097dbc50c086b652c37374cfbed6a40bf30efaf.zip | |
exhaustively destructure external constraints
| -rw-r--r-- | compiler/rustc_next_trait_solver/src/solve/mod.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/compiler/rustc_next_trait_solver/src/solve/mod.rs b/compiler/rustc_next_trait_solver/src/solve/mod.rs index 24055d6cd83..c65c5851e9b 100644 --- a/compiler/rustc_next_trait_solver/src/solve/mod.rs +++ b/compiler/rustc_next_trait_solver/src/solve/mod.rs @@ -48,12 +48,20 @@ enum GoalEvaluationKind { Nested, } +// FIXME(trait-system-refactor-initiative#117): we don't detect whether a response +// ended up pulling down any universes. fn has_no_inference_or_external_constraints<I: Interner>( response: ty::Canonical<I, Response<I>>, ) -> bool { - response.value.external_constraints.region_constraints.is_empty() - && response.value.var_values.is_identity() - && response.value.external_constraints.opaque_types.is_empty() + let ExternalConstraintsData { + ref region_constraints, + ref opaque_types, + ref normalization_nested_goals, + } = *response.value.external_constraints; + response.value.var_values.is_identity() + && region_constraints.is_empty() + && opaque_types.is_empty() + && normalization_nested_goals.is_empty() } impl<'a, D, I> EvalCtxt<'a, D> |
