Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Handle placeholder assoc types when Chalk produces them | Florian Diebold | 2019-08-12 | 1 | -3/+18 |
| | |||||
* | Normalize associated types during inference | Florian Diebold | 2019-08-12 | 1 | -3/+4 |
| | |||||
* | Add representations of associated types | Florian Diebold | 2019-08-12 | 1 | -0/+23 |
| | | | | | | | | | | | | This adds three different representations, copied from the Chalk model: - `Ty::Projection` is an associated type projection written somewhere in the code, like `<Foo as Trait>::Bar`. - `Ty::UnselectedProjection` is similar, but we don't know the trait yet (`Foo::Bar`). - The above representations are normalized to their actual types during type inference. When that isn't possible, for example for `T::Item` inside an `fn foo<T: Iterator>`, the type is normalized to an application type with `TypeCtor::AssociatedType`. | ||||
* | Remove blacklist, instead mark `Sized` as non-enumerable | Florian Diebold | 2019-07-15 | 1 | -17/+3 |
| | | | | | This seems to be enough to prevent hanging in rust-analyzer, Chalk and the rustc repo. | ||||
* | Cargo update, including updating Chalk | Florian Diebold | 2019-07-14 | 1 | -0/+2 |
| | |||||
* | Some renamings for clarity | Florian Diebold | 2019-07-14 | 1 | -2/+2 |
| | |||||
* | Unify `normalize` and `implements` to simplify code | Florian Diebold | 2019-07-08 | 1 | -1/+16 |
| | |||||
* | Use environment for associated type normalization as well | Florian Diebold | 2019-07-08 | 1 | -0/+15 |
| | |||||
* | Start handling environment in trait resolution | Florian Diebold | 2019-07-08 | 1 | -3/+16 |
| | | | | | 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 | -1/+55 |
| | |||||
* | Make EnumVariant a GenericDef and simplify some code | Florian Diebold | 2019-07-06 | 1 | -5/+1 |
| | |||||
* | allow rustfmt to reorder imports | Aleksey Kladov | 2019-07-04 | 1 | -7/+12 |
| | | | | | | 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 | -193/+219 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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! | ||||
* | Some more cleanup | Florian Diebold | 2019-06-15 | 1 | -4/+4 |
| | |||||
* | Add basic infrastructure for assoc type projection | Florian Diebold | 2019-06-15 | 1 | -8/+102 |
| | |||||
* | Fix clippy::single_match | Alan Du | 2019-06-04 | 1 | -6/+3 |
| | |||||
* | Blacklist some traits from being considered in where clauses | Florian Diebold | 2019-05-12 | 1 | -1/+28 |
| | | | | | | | For Send/Sync/Sized, we don't handle auto traits correctly yet and because they have a lot of impls, they can easily lead to slowdowns. In the case of Fn/FnMut/FnOnce, we don't parse the special Fn notation correctly yet and don't handle closures yet, so we are very unlikely to find an impl. | ||||
* | Handle auto traits & negative impls | Florian Diebold | 2019-05-11 | 1 | -5/+19 |
| | | | | | We don't pass field types to Chalk yet though, so the auto trait inference won't be correct. | ||||
* | Reduce Chalk max_size parameter, add test for slow case | Florian Diebold | 2019-05-11 | 1 | -2/+5 |
| | |||||
* | Handle Chalk conversion for FnDef | Florian Diebold | 2019-05-11 | 1 | -2/+25 |
| | |||||
* | Handle resolution errors in where clauses | Florian Diebold | 2019-05-11 | 1 | -15/+41 |
| | | | | | This is slightly hacky, but maybe more elegant than alternative solutions: We just use a hardcoded Chalk trait ID which we special-case to have no impls. | ||||
* | Handle where clauses in trait solving | Florian Diebold | 2019-05-11 | 1 | -13/+55 |
| | |||||
* | Differentiate Tuple / FnPtr type constructors by cardinality | Florian Diebold | 2019-05-04 | 1 | -1/+3 |
| | | | | | This is necessary because Chalk (reasonably) expects each 'struct' to know how many type parameters it takes. | ||||
* | Handle recursive types in canonicalization | Florian Diebold | 2019-05-04 | 1 | -1/+1 |
| | |||||
* | Remove ToChalk implementation for ApplicationTy | Florian Diebold | 2019-05-04 | 1 | -29/+16 |
| | |||||
* | Update Chalk | Florian Diebold | 2019-05-04 | 1 | -4/+13 |
| | |||||
* | Turn eprintln!s into debug!s | Florian Diebold | 2019-05-04 | 1 | -6/+9 |
| | |||||
* | Handle Ty::Unknown in Chalk conversion | Florian Diebold | 2019-05-04 | 1 | -1/+5 |
| | | | | Badly, but at least it doesn't crash. | ||||
* | Canonicalize before doing method resolution | Florian Diebold | 2019-05-04 | 1 | -6/+7 |
| | |||||
* | Move Chalk conversion code to its own module | Florian Diebold | 2019-05-04 | 1 | -0/+327 |