Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Implement the call argument checking order hack for closures | Florian Diebold | 2019-09-24 | 1 | -2/+2 |
| | |||||
* | Make closures impl closure traits | Florian Diebold | 2019-09-24 | 1 | -10/+122 |
| | |||||
* | Give closures types | Florian Diebold | 2019-09-24 | 1 | -0/+4 |
| | |||||
* | Upgrade Chalk again | Florian Diebold | 2019-09-24 | 1 | -3/+6 |
| | |||||
* | Upgrade Chalk | Florian Diebold | 2019-09-23 | 1 | -4/+6 |
| | |||||
* | Handle projection types from Chalk | Florian Diebold | 2019-09-22 | 1 | -1/+5 |
| | |||||
* | Remove TraitItem and ImplItem in favor of AssocItem | Florian Diebold | 2019-09-17 | 1 | -3/+3 |
| | |||||
* | Upgrade Chalk | Florian Diebold | 2019-09-14 | 1 | -9/+0 |
| | | | | ... and remove Ty::UnselectedProjection. It'll be handled differently. | ||||
* | also make "unknown" case non-enumerable | Niko Matsakis | 2019-09-09 | 1 | -1/+1 |
| | |||||
* | make all traits non-enumerable | Niko Matsakis | 2019-09-09 | 1 | -9/+1 |
| | | | | | As discussed on Zulip, this actually matches the present behavior of rustc. | ||||
* | Fix Chalk environments | Florian Diebold | 2019-09-07 | 1 | -1/+2 |
| | | | | | The clauses need to be wrapped in `FromEnv` clauses for elaboration (i.e. things like inferring `T: Clone` from `T: Copy`) to work correctly. | ||||
* | Lower bounds on trait definition, and resolve assoc types from super traits | Florian Diebold | 2019-09-07 | 1 | -1/+1 |
| | |||||
* | Make type walking infrastructure a bit nicer | Florian Diebold | 2019-09-03 | 1 | -0/+1 |
| | | | | | 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/+7 |
| | |||||
* | Add `impl Trait` and `dyn Trait` types | Florian Diebold | 2019-08-22 | 1 | -1/+3 |
| | | | | | | | - refactor bounds handling in the AST a bit - add HIR for bounds - add `Ty::Dyn` and `Ty::Opaque` variants and lower `dyn Trait` / `impl Trait` syntax to them | ||||
* | 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 |