aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty/traits.rs')
-rw-r--r--crates/ra_hir/src/ty/traits.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/crates/ra_hir/src/ty/traits.rs b/crates/ra_hir/src/ty/traits.rs
index 2817c9e71..0769e6e17 100644
--- a/crates/ra_hir/src/ty/traits.rs
+++ b/crates/ra_hir/src/ty/traits.rs
@@ -27,7 +27,7 @@ struct ChalkContext<'a, DB> {
27 krate: Crate, 27 krate: Crate,
28} 28}
29 29
30pub(crate) fn solver_query(_db: &impl HirDatabase, _krate: Crate) -> Arc<Mutex<Solver>> { 30pub(crate) fn trait_solver_query(_db: &impl HirDatabase, _krate: Crate) -> Arc<Mutex<Solver>> {
31 // krate parameter is just so we cache a unique solver per crate 31 // krate parameter is just so we cache a unique solver per crate
32 let solver_choice = chalk_solve::SolverChoice::SLG { max_size: CHALK_SOLVER_MAX_SIZE }; 32 let solver_choice = chalk_solve::SolverChoice::SLG { max_size: CHALK_SOLVER_MAX_SIZE };
33 debug!("Creating new solver for crate {:?}", _krate); 33 debug!("Creating new solver for crate {:?}", _krate);
@@ -60,9 +60,9 @@ fn solve(
60 goal: &chalk_ir::UCanonical<chalk_ir::InEnvironment<chalk_ir::Goal>>, 60 goal: &chalk_ir::UCanonical<chalk_ir::InEnvironment<chalk_ir::Goal>>,
61) -> Option<chalk_solve::Solution> { 61) -> Option<chalk_solve::Solution> {
62 let context = ChalkContext { db, krate }; 62 let context = ChalkContext { db, krate };
63 let solver = db.solver(krate); 63 let solver = db.trait_solver(krate);
64 debug!("solve goal: {:?}", goal); 64 debug!("solve goal: {:?}", goal);
65 let solution = solver.lock().solve_with_fuel(&context, goal, Some(1000)); 65 let solution = solver.lock().solve(&context, goal);
66 debug!("solve({:?}) => {:?}", goal, solution); 66 debug!("solve({:?}) => {:?}", goal, solution);
67 solution 67 solution
68} 68}
@@ -73,19 +73,19 @@ fn solve(
73/// ``` 73/// ```
74/// we assume that `T: Default`. 74/// we assume that `T: Default`.
75#[derive(Clone, Debug, PartialEq, Eq, Hash)] 75#[derive(Clone, Debug, PartialEq, Eq, Hash)]
76pub struct Environment { 76pub struct TraitEnvironment {
77 pub predicates: Vec<GenericPredicate>, 77 pub predicates: Vec<GenericPredicate>,
78} 78}
79 79
80/// Something (usually a goal), along with an environment. 80/// Something (usually a goal), along with an environment.
81#[derive(Clone, Debug, PartialEq, Eq, Hash)] 81#[derive(Clone, Debug, PartialEq, Eq, Hash)]
82pub struct InEnvironment<T> { 82pub struct InEnvironment<T> {
83 pub environment: Arc<Environment>, 83 pub environment: Arc<TraitEnvironment>,
84 pub value: T, 84 pub value: T,
85} 85}
86 86
87impl<T> InEnvironment<T> { 87impl<T> InEnvironment<T> {
88 pub fn new(environment: Arc<Environment>, value: T) -> InEnvironment<T> { 88 pub fn new(environment: Arc<TraitEnvironment>, value: T) -> InEnvironment<T> {
89 InEnvironment { environment, value } 89 InEnvironment { environment, value }
90 } 90 }
91} 91}
@@ -117,12 +117,12 @@ pub struct ProjectionPredicate {
117} 117}
118 118
119/// Solve a trait goal using Chalk. 119/// Solve a trait goal using Chalk.
120pub(crate) fn solve_query( 120pub(crate) fn trait_solve_query(
121 db: &impl HirDatabase, 121 db: &impl HirDatabase,
122 krate: Crate, 122 krate: Crate,
123 trait_ref: Canonical<InEnvironment<Obligation>>, 123 trait_ref: Canonical<InEnvironment<Obligation>>,
124) -> Option<Solution> { 124) -> Option<Solution> {
125 let _p = profile("solve_query"); 125 let _p = profile("trait_solve_query");
126 let canonical = trait_ref.to_chalk(db).cast(); 126 let canonical = trait_ref.to_chalk(db).cast();
127 // We currently don't deal with universes (I think / hope they're not yet 127 // We currently don't deal with universes (I think / hope they're not yet
128 // relevant for our use cases?) 128 // relevant for our use cases?)