aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/traits
Commit message (Collapse)AuthorAgeFilesLines
* Implement Chalk's debug methods using TLSFlorian Diebold2020-04-102-42/+270
| | | | | | | | | | 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.
* Fix Chalk panicFlorian Diebold2020-04-061-1/+6
| | | | | Fixes #3865. Basically I forgot to shift 'back' when we got `dyn Trait`s back from Chalk, so after going through Chalk a few times, the panic happened.
* Upgrade Chalk againFlorian Diebold2020-04-052-30/+53
| | | | | | | The big change here is counting binders, not variables (https://github.com/rust-lang/chalk/pull/360). We have to adapt to the same scheme for our `Ty::Bound`. It's mostly fine though, even makes some things more clear.
* Upgrade ChalkFlorian Diebold2020-04-051-24/+99
|
* Use `dyn Trait` for working with databseAleksey Kladov2020-03-162-77/+70
| | | | | | | It improves compile time in `--release` mode quite a bit, it doesn't really slow things down and, conceptually, it seems closer to what we want the physical architecture to look like (we don't want to monomorphise EVERYTHING in a single leaf crate).
* Drop larlpop-intern depLaurențiu Nicola2020-03-031-2/+2
|
* Update chalk for Ty internersLaurențiu Nicola2020-03-021-8/+11
|
* Update chalk for RawId removalLaurențiu Nicola2020-03-021-13/+7
|
* Rename ast::ImplBlock -> ast::ImplDefAleksey Kladov2020-02-292-5/+5
|
* Bump chalk and replace TypeFamily with InternerLaurențiu Nicola2020-02-241-49/+58
|
* Shorten some codeFlorian Diebold2020-02-221-4/+1
|
* Rework find_super_trait_path to protect against cyclesFlorian Diebold2020-02-221-4/+2
|
* Add &dyn Trait -> &dyn SuperTrait coercion, and fix &T -> &dyn TraitFlorian Diebold2020-02-221-30/+65
|
* Implement dyn Trait unsizing as wellFlorian Diebold2020-02-222-8/+108
|
* Implement unsize coercion using proper trait solvingFlorian Diebold2020-02-221-1/+60
|
* More manual clippy fixesKirill Bulatov2020-02-182-4/+3
|
* Run cargo +nightly fix --clippy -Z unstable-optionsKirill Bulatov2020-02-182-8/+8
|
* Rename Ty::Param => Ty::PlaceholderFlorian Diebold2020-02-141-2/+2
| | | | This aligns more with Chalk.
* FormattingFlorian Diebold2020-02-071-3/+8
|
* Use variables in predicates as wellFlorian Diebold2020-02-071-3/+3
|
* Change Ty::Param to contain param IDFlorian Diebold2020-02-071-12/+12
|
* Upgrade ChalkFlorian Diebold2020-01-271-55/+53
|
* Filter out error predicates in type bounds as wellFlorian Diebold2019-12-221-2/+12
|
* Introduce our own Chalk TypeFamily, instead of using ChalkIrFlorian Diebold2019-12-222-83/+122
| | | | | | It's not very different, except we can directly use Salsa IDs instead of casting them. This means we need to refactor the handling of errors to get rid of UNKNOWN_TRAIT though.
* Refactor Chalk integration some moreFlorian Diebold2019-12-221-72/+76
|
* Update Chalk, clean up Chalk integration a bitFlorian Diebold2019-12-221-93/+87
|
* Use generic ItemLoc for implsAleksey Kladov2019-12-201-1/+1
|
* Support for nested traitsAleksey Kladov2019-12-201-2/+4
|
* Rename ContainerId -> AssocContainerIdAleksey Kladov2019-12-201-3/+3
|
* Rename N! to name!Florian Diebold2019-12-131-3/+3
|
* Add macros for known names and pathsFlorian Diebold2019-12-131-3/+3
|
* Move traits to the new locAleksey Kladov2019-12-121-4/+2
|
* Switch to the new location for implsAleksey Kladov2019-12-121-1/+1
|
* Refactor parameter count trackingAleksey Kladov2019-12-071-1/+1
|
* Remove idx and parent generics from genericsAleksey Kladov2019-12-071-7/+7
| | | | | This makes `hir_def::GenericParams` flatter. The logic for re-numbering the params is moved to hir instead.
* Extract built-in trait implementations to separate moduleFlorian Diebold2019-12-032-127/+218
| | | | This untangles the builtin logic from the Chalk translation.
* Handle cycles in impl types betterFlorian Diebold2019-11-301-11/+4
| | | | | | - impl Trait<Self> for S is allowed - impl Trait for S<Self> is an invalid cycle, but we can add cycle recovery for it in Salsa now
* Memoize impl resolutionsAleksey Kladov2019-11-271-20/+14
|
* Move TyAleksey Kladov2019-11-271-0/+906