2020-03-29 16:41:09 +02:00
|
|
|
use rustc_middle::ty::TyCtxt;
|
2018-03-11 10:29:22 +08:00
|
|
|
|
2020-02-22 11:44:18 +01:00
|
|
|
use super::TraitEngine;
|
2020-03-03 11:25:03 -05:00
|
|
|
use super::{ChalkFulfillmentContext, FulfillmentContext};
|
2018-03-11 10:29:22 +08:00
|
|
|
|
2018-06-27 16:04:32 -04:00
|
|
|
pub trait TraitEngineExt<'tcx> {
|
2020-02-22 11:44:18 +01:00
|
|
|
fn new(tcx: TyCtxt<'tcx>) -> Box<Self>;
|
2018-03-11 10:29:22 +08:00
|
|
|
}
|
2018-06-27 16:04:32 -04:00
|
|
|
|
2020-02-22 11:44:18 +01:00
|
|
|
impl<'tcx> TraitEngineExt<'tcx> for dyn TraitEngine<'tcx> {
|
2020-03-03 11:25:03 -05:00
|
|
|
fn new(tcx: TyCtxt<'tcx>) -> Box<Self> {
|
|
|
|
if tcx.sess.opts.debugging_opts.chalk {
|
|
|
|
Box::new(ChalkFulfillmentContext::new())
|
|
|
|
} else {
|
|
|
|
Box::new(FulfillmentContext::new())
|
|
|
|
}
|
2018-06-27 16:04:32 -04:00
|
|
|
}
|
|
|
|
}
|