@@ -78,24 +78,23 @@ pub enum Obligation {
78
78
79
79
/// Check using Chalk whether trait is implemented for given parameters including `Self` type.
80
80
pub ( crate ) fn implements_query (
81
- _db : & impl HirDatabase ,
82
- _krate : Crate ,
83
- _trait_ref : Canonical < TraitRef > ,
81
+ db : & impl HirDatabase ,
82
+ krate : Crate ,
83
+ trait_ref : Canonical < TraitRef > ,
84
84
) -> Option < Solution > {
85
- return None ;
86
- // let _p = profile("implements_query");
87
- // let goal: chalk_ir::Goal = trait_ref.value.to_chalk(db).cast();
88
- // debug!("goal: {:?}", goal);
89
- // let env = chalk_ir::Environment::new();
90
- // let in_env = chalk_ir::InEnvironment::new(&env, goal);
91
- // let parameter = chalk_ir::ParameterKind::Ty(chalk_ir::UniverseIndex::ROOT);
92
- // let canonical =
93
- // chalk_ir::Canonical { value: in_env, binders: vec![parameter; trait_ref.num_vars] };
94
- // // We currently don't deal with universes (I think / hope they're not yet
95
- // // relevant for our use cases?)
96
- // let u_canonical = chalk_ir::UCanonical { canonical, universes: 1 };
97
- // let solution = solve(db, krate, &u_canonical);
98
- // solution.map(|solution| solution_from_chalk(db, solution))
85
+ let _p = profile ( "implements_query" ) ;
86
+ let goal: chalk_ir:: Goal = trait_ref. value . to_chalk ( db) . cast ( ) ;
87
+ debug ! ( "goal: {:?}" , goal) ;
88
+ let env = chalk_ir:: Environment :: new ( ) ;
89
+ let in_env = chalk_ir:: InEnvironment :: new ( & env, goal) ;
90
+ let parameter = chalk_ir:: ParameterKind :: Ty ( chalk_ir:: UniverseIndex :: ROOT ) ;
91
+ let canonical =
92
+ chalk_ir:: Canonical { value : in_env, binders : vec ! [ parameter; trait_ref. num_vars] } ;
93
+ // We currently don't deal with universes (I think / hope they're not yet
94
+ // relevant for our use cases?)
95
+ let u_canonical = chalk_ir:: UCanonical { canonical, universes : 1 } ;
96
+ let solution = solve ( db, krate, & u_canonical) ;
97
+ solution. map ( |solution| solution_from_chalk ( db, solution) )
99
98
}
100
99
101
100
fn solution_from_chalk ( db : & impl HirDatabase , solution : chalk_solve:: Solution ) -> Solution {
0 commit comments