From 7ec8269d0aead891c25a20b4e4c4cc5d73eccf79 Mon Sep 17 00:00:00 2001 From: scalexm Date: Sat, 13 Oct 2018 16:29:21 +0200 Subject: [PATCH] Implement `InferenceTable::add_clauses` --- src/librustc_traits/chalk_context.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/librustc_traits/chalk_context.rs b/src/librustc_traits/chalk_context.rs index 2fd8aa0c3af3..371fa46f3701 100644 --- a/src/librustc_traits/chalk_context.rs +++ b/src/librustc_traits/chalk_context.rs @@ -22,7 +22,7 @@ use rustc::traits::{ ExClauseLift, Goal, GoalKind, - ProgramClause, + Clause, QuantifierKind, Environment, InEnvironment, @@ -100,9 +100,9 @@ impl context::Context for ChalkArenas<'tcx> { type Parameter = Kind<'tcx>; - type ProgramClause = ProgramClause<'tcx>; + type ProgramClause = Clause<'tcx>; - type ProgramClauses = Vec>; + type ProgramClauses = Vec>; type UnificationResult = InferOk<'tcx, ()>; @@ -272,10 +272,14 @@ impl context::InferenceTable, ChalkArenas<'tcx>> fn add_clauses( &mut self, - _env: &Environment<'tcx>, - _clauses: Vec>, + env: &Environment<'tcx>, + clauses: Vec>, ) -> Environment<'tcx> { - panic!("FIXME no method to add clauses to Environment yet") + Environment { + clauses: self.infcx.tcx.mk_clauses( + env.clauses.iter().cloned().chain(clauses.into_iter()) + ) + } } } @@ -287,7 +291,7 @@ impl context::ResolventOps, ChalkArenas<'tcx>> _environment: &Environment<'tcx>, _goal: &DomainGoal<'tcx>, _subst: &CanonicalVarValues<'tcx>, - _clause: &ProgramClause<'tcx>, + _clause: &Clause<'tcx>, ) -> chalk_engine::fallible::Fallible>> { panic!() } @@ -328,7 +332,7 @@ impl context::UnificationOps, ChalkArenas<'tcx>> &self, _environment: &Environment<'tcx>, goal: &DomainGoal<'tcx>, - ) -> Vec> { + ) -> Vec> { use rustc::traits::WhereClause::*; match goal {