diff options
author | Florian Diebold <[email protected]> | 2020-04-12 11:28:24 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2020-04-13 14:57:28 +0100 |
commit | c8b2ec8c20be44ae19d15e90ff812745f029899e (patch) | |
tree | 98ed585238a37d722159a489db24e0514ae562ce /crates/ra_hir_ty/src/traits.rs | |
parent | c388130f5ffbcbe7d3131213a24d12d02f769b87 (diff) |
Add support for bounds on associated types in trait definitions
E.g.
```
trait Trait {
type Item: SomeOtherTrait;
}
```
Note that these don't simply desugar to where clauses; as I understand it, where
clauses have to be proved by the *user* of the trait, but these bounds are proved
by the *implementor*. (Also, where clauses on associated types are unstable.)
Diffstat (limited to 'crates/ra_hir_ty/src/traits.rs')
-rw-r--r-- | crates/ra_hir_ty/src/traits.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/traits.rs b/crates/ra_hir_ty/src/traits.rs index 43d8d1e80..44fbdb197 100644 --- a/crates/ra_hir_ty/src/traits.rs +++ b/crates/ra_hir_ty/src/traits.rs | |||
@@ -194,13 +194,16 @@ fn solve( | |||
194 | } | 194 | } |
195 | remaining > 0 | 195 | remaining > 0 |
196 | }; | 196 | }; |
197 | let mut solve = || solver.solve_limited(&context, goal, should_continue); | 197 | let mut solve = || { |
198 | let solution = solver.solve_limited(&context, goal, should_continue); | ||
199 | log::debug!("solve({:?}) => {:?}", goal, solution); | ||
200 | solution | ||
201 | }; | ||
198 | // don't set the TLS for Chalk unless Chalk debugging is active, to make | 202 | // don't set the TLS for Chalk unless Chalk debugging is active, to make |
199 | // extra sure we only use it for debugging | 203 | // extra sure we only use it for debugging |
200 | let solution = | 204 | let solution = |
201 | if is_chalk_debug() { chalk::tls::set_current_program(db, solve) } else { solve() }; | 205 | if is_chalk_debug() { chalk::tls::set_current_program(db, solve) } else { solve() }; |
202 | 206 | ||
203 | log::debug!("solve({:?}) => {:?}", goal, solution); | ||
204 | solution | 207 | solution |
205 | } | 208 | } |
206 | 209 | ||