aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/traits/chalk
Commit message (Collapse)AuthorAgeFilesLines
* Implement return position impl trait / opaque type supportFlorian Diebold2020-06-053-5/+47
| | | | | | | | | | | | | This is working, but I'm not that happy with how the lowering works. We might need an additional representation between `TypeRef` and `Ty` where names are resolved and `impl Trait` bounds are separated out, but things like inference variables don't exist and `impl Trait` is always represented the same way. Also note that this doesn't implement correct handling of RPIT *inside* the function (which involves turning the `impl Trait`s into variables and creating obligations for them). That intermediate representation might help there as well.
* Upgrade ChalkFlorian Diebold2020-05-272-27/+27
| | | | | Chalk newly added TypeName::Never and Array; I implemented the conversion for Never, but not Array since that expects a const argument.
* Use Chalk's Ty::Function for function pointer typesFlorian Diebold2020-05-221-8/+19
| | | | | | Function pointers can be 'higher-ranked' over lifetimes, which is why they're not an application type in Chalk, but since we don't model lifetimes it doesn't matter for us yet.
* Use Chalk's built-in representation of function item typesFlorian Diebold2020-05-223-6/+40
|
* Provide missing Chalk debug methodsFlorian Diebold2020-05-222-0/+112
|
* Use TypeCtorId as AdtId directly, and rename the type alias StructId -> AdtIdFlorian Diebold2020-05-222-4/+4
|
* Split up chalk module a bitFlorian Diebold2020-05-222-0/+970
|
* Update ChalkFlorian Diebold2020-05-221-4/+4
| | | | | As always, this just makes compilation work, we don't use the newly available functionality yet.
* Update Chalk, and cache Chalk env elaboration through a queryFlorian Diebold2020-04-201-3/+30
| | | | This should fix some of the worst performance problems.
* Nicer display of projections in Chalk logsFlorian Diebold2020-04-131-8/+10
|
* Nicer display of closures in Chalk logsFlorian Diebold2020-04-131-2/+22
|
* Implement Chalk's debug methods using TLSFlorian Diebold2020-04-101-0/+231
Chalk now panics if we don't implement these methods and run with CHALK_DEBUG, so I thought I'd try to implement them 'properly'. Sadly, it seems impossible to do without transmuting lifetimes somewhere. The problem is that we need a `&dyn HirDatabase` to get names etc., which we can't just put into TLS. I thought I could just use `scoped-tls`, but that doesn't support references to unsized types. So I put the `&dyn` into another struct and put the reference to *that* into the TLS, but I have to transmute the lifetime to 'static for that to work.