Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Use traits from where clauses for method resolution | Florian Diebold | 2019-09-07 | 1 | -0/+15 |
| | | | | | E.g. if we have `T: some::Trait`, we can call methods from that trait without it needing to be in scope. | ||||
* | Make type walking infrastructure a bit nicer | Florian Diebold | 2019-09-03 | 1 | -16/+4 |
| | | | | | If/when we switch to using Chalk's Ty, we'll need to replace this by its `Fold` trait, but I didn't want to import the whole thing just yet. | ||||
* | Add support for associated type bindings (`where Trait<Type = X>`) | Florian Diebold | 2019-09-03 | 1 | -0/+27 |
| | |||||
* | implement durability | Aleksey Kladov | 2019-08-15 | 1 | -1/+1 |
| | |||||
* | switch from volatile to untracked read | Aleksey Kladov | 2019-08-15 | 1 | -17/+37 |
| | |||||
* | Improve debug logging a bit | Florian Diebold | 2019-08-12 | 1 | -4/+4 |
| | |||||
* | Switch to Chalk master, without fuel | Florian Diebold | 2019-07-15 | 1 | -1/+1 |
| | |||||
* | Some renamings for clarity | Florian Diebold | 2019-07-14 | 1 | -7/+7 |
| | |||||
* | fix profile name | Aleksey Kladov | 2019-07-09 | 1 | -1/+1 |
| | |||||
* | Unify `normalize` and `implements` to simplify code | Florian Diebold | 2019-07-08 | 1 | -17/+4 |
| | |||||
* | Use environment for associated type normalization as well | Florian Diebold | 2019-07-08 | 1 | -13/+2 |
| | |||||
* | Start handling environment in trait resolution | Florian Diebold | 2019-07-08 | 1 | -3/+5 |
| | | | | | I.e. if we are inside a function with some where clauses, we assume these where clauses hold. | ||||
* | Refactor a bit & introduce Environment struct | Florian Diebold | 2019-07-08 | 1 | -8/+23 |
| | |||||
* | add projection to infer for loop variable | Unreal Hoang | 2019-07-07 | 1 | -1/+1 |
| | |||||
* | Add trait obligations for where clauses when calling functions/methods | Florian Diebold | 2019-07-06 | 1 | -1/+10 |
| | | | | | E.g. if we call `foo<T: Into<u32>>(x)`, that adds an obligation that `x: Into<u32>`, etc. | ||||
* | Clippy trivially_copy_pass_by_ref | Jeremy Kolb | 2019-07-05 | 1 | -1/+1 |
| | |||||
* | allow rustfmt to reorder imports | Aleksey Kladov | 2019-07-04 | 1 | -6/+6 |
| | | | | | | This wasn't a right decision in the first place, the feature flag was broken in the last rustfmt release, and syntax highlighting of imports is more important anyway | ||||
* | cache chalk queries | Aleksey Kladov | 2019-06-26 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This gives a significant speedup, because chalk will call these functions several times even withing a single revision. The only significant one here is `impl_data`, but I figured it might be good to cache others just for consistency. The results I get are: Before: from scratch: 16.081457952s no change: 15.846493ms trivial change: 352.95592ms comment change: 361.998408ms const change: 457.629212ms After: from scratch: 14.910610278s no change: 14.934647ms trivial change: 85.633023ms comment change: 96.433023ms const change: 171.543296ms Seems like a nice win! | ||||
* | Simplifications / cleanup from review | Florian Diebold | 2019-06-16 | 1 | -1/+1 |
| | |||||
* | Implement autoderef using the Deref trait | Florian Diebold | 2019-06-15 | 1 | -2/+2 |
| | | | | - add support for other lang item targets, since we need the Deref lang item | ||||
* | Add basic infrastructure for assoc type projection | Florian Diebold | 2019-06-15 | 1 | -1/+32 |
| | |||||
* | check for cancellation when executing queries | Aleksey Kladov | 2019-06-12 | 1 | -1/+0 |
| | | | | | | | Note that we can't just remove CheckCanceled trait altogether: sometimes it's useful to check for cancellation while the query is running! We do this, for example, in the name resolution fixed-point loop. | ||||
* | don't poison mutex around chalk | Aleksey Kladov | 2019-06-01 | 1 | -2/+3 |
| | | | | | | | | | We use panics for cancellation, so we could trigger panic while holding the solver. std::sync::Mutex will be poisoned as a result, which and all further attempts to use solver (from other threads) will panic as well. This commit switches to parking_lot::Mutex which just unlocks on panic. | ||||
* | add cacellation checks to expensive queries | Aleksey Kladov | 2019-05-29 | 1 | -0/+1 |
| | |||||
* | Use fuel branch for Chalk | Florian Diebold | 2019-05-21 | 1 | -1/+1 |
| | | | | This makes sure we don't take too long in trait solving. | ||||
* | re-enable chalk | Aleksey Kladov | 2019-05-21 | 1 | -17/+16 |
| | |||||
* | publish gen_lsp_server 0.2 | Aleksey Kladov | 2019-05-21 | 1 | -16/+17 |
| | |||||
* | profile implements query | Aleksey Kladov | 2019-05-21 | 1 | -0/+2 |
| | |||||
* | add _query to query functions | Aleksey Kladov | 2019-05-21 | 1 | -3/+3 |
| | |||||
* | Increase Chalk solver max_size back to 4 | Florian Diebold | 2019-05-13 | 1 | -1/+1 |
| | | | | | | Reducing it to 2 was just a failed attempt to see whether that would help fix some slow cases; in fact, it can create new slow cases by replacing concrete types by variables. | ||||
* | Reduce Chalk max_size parameter, add test for slow case | Florian Diebold | 2019-05-11 | 1 | -1/+8 |
| | |||||
* | Deduplicate impls in impls_for_trait | Florian Diebold | 2019-05-07 | 1 | -2/+3 |
| | | | | This was duplicating impls in dependencies a lot... | ||||
* | Turn `implements` into a query again | Florian Diebold | 2019-05-07 | 1 | -3/+3 |
| | |||||
* | Turn eprintln!s into debug!s | Florian Diebold | 2019-05-04 | 1 | -2/+3 |
| | |||||
* | Canonicalize before doing method resolution | Florian Diebold | 2019-05-04 | 1 | -5/+2 |
| | |||||
* | Document the peculiarity of the solver query a bit | Florian Diebold | 2019-05-04 | 1 | -2/+4 |
| | | | | | Also remove the only remaining mention of chalk outside of the ty::traits module. | ||||
* | Move Chalk conversion code to its own module | Florian Diebold | 2019-05-04 | 1 | -275/+8 |
| | |||||
* | Simplify solution_from_chalk | Florian Diebold | 2019-05-04 | 1 | -12/+11 |
| | |||||
* | Chalk integration | Florian Diebold | 2019-05-04 | 1 | -90/+403 |
| | | | | | - add proper canonicalization logic - add conversions from/to Chalk IR | ||||
* | Add HIR for where clauses & ignore impls with where clauses in trait resolution | Florian Diebold | 2019-04-21 | 1 | -3/+6 |
| | | | | | This prevents any `impl<T> Trait for T where ...` from being treated as a blanket impl while we don't handle where clauses yet. | ||||
* | More trait infrastructure | Florian Diebold | 2019-04-14 | 1 | -0/+112 |
- make it possible to get parent trait from method - add 'obligation' machinery for checking that a type implements a trait (and inferring facts about type variables from that) - handle type parameters of traits (to a certain degree) - improve the hacky implements check to cover enough cases to exercise the handling of traits with type parameters - basic canonicalization (will probably also be done by Chalk) |