aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/method_resolution.rs
Commit message (Collapse)AuthorAgeFilesLines
* Rework obligation handlingFlorian Diebold2021-05-211-13/+35
| | | | | | | | We can't do the easy hack that we did before anymore, where we kept track of whether any inference variables changed since the last time we rechecked obligations. Instead, we store the obligations in canonicalized form; that way we can easily check the inference variables to see whether they have changed since the goal was canonicalized.
* Remove our unification code, use Chalk's insteadFlorian Diebold2021-05-211-1/+2
|
* Collect inherent impls in unnamed constsJonas Schievink2021-04-191-16/+26
|
* Remove assertion in impl collectionFlorian Diebold2021-04-111-4/+3
| | | | | | | This condition should always be true for *valid* code, but of course there might be invalid code or things that we can't currently resolve. Fixes #8464.
* Include more info in assertJonas Schievink2021-04-111-3/+3
|
* Merge #8406bors[bot]2021-04-091-18/+63
|\ | | | | | | | | | | | | | | 8406: Improve indexing of impls r=flodiebold a=flodiebold Store impls for e.g. &Foo with the ones for Foo instead of the big "other" bucket. This can improve performance and simplifies the HIR impl search a bit. Co-authored-by: Florian Diebold <[email protected]>
| * Improve indexing of implsFlorian Diebold2021-04-091-18/+63
| | | | | | | | | | | | Store impls for e.g. &Foo with the ones for Foo instead of the big "other" bucket. This can improve performance and simplifies the HIR impl search a bit.
* | Fix crash on syn involving lifetimes returned by ChalkFlorian Diebold2021-04-091-0/+1
|/ | | | | | | | | | If we get lifetime variables back in autoderef, just immediately replace them by static lifetimes for now. Method resolution doesn't really deal correctly with new variables being introduced (this needs to be fixed more properly). This fixes `rust-analyzer analysis-stats --with-deps` crashing in the RA repo.
* Remove unusedFlorian Diebold2021-04-081-7/+3
|
* Replace some `fold` callsFlorian Diebold2021-04-081-16/+13
|
* InEnvironment::new takes a referenceFlorian Diebold2021-04-071-1/+1
|
* Move hir_trait_id to extension traitFlorian Diebold2021-04-071-2/+2
|
* Free Ty::def_cratesLukas Wirth2021-04-071-54/+52
|
* Collect trait impls inside unnamed constsJonas Schievink2021-04-071-19/+35
|
* Move Ty accessors to TyExtLukas Wirth2021-04-061-1/+1
|
* Add chalk_ir::Const to TyKind::ArrayLukas Wirth2021-04-061-1/+3
|
* Use a constructor function for Static lifetimesLukas Wirth2021-04-061-14/+7
|
* Add Lifetime to TyKind::RefLukas Wirth2021-04-061-4/+14
|
* Align FnPointer with ChalkFlorian Diebold2021-04-051-8/+8
|
* Get rid of Substitution::suffixFlorian Diebold2021-04-051-4/+6
|
* Add Interner parameter to Binders::substituteFlorian Diebold2021-04-051-2/+2
|
* Binders::subst -> substituteFlorian Diebold2021-04-051-2/+2
|
* Hide Binders internals moreFlorian Diebold2021-04-051-4/+4
|
* Rename TyKind::ForeignType to ForeignLaurențiu Nicola2021-04-051-2/+2
|
* Rename TyKind::Unknown to ErrorLaurențiu Nicola2021-04-051-1/+1
|
* Move things from `traits` module to `types` as wellFlorian Diebold2021-04-041-1/+1
|
* Replace remaining uses of Substitution::build_for_defFlorian Diebold2021-04-041-3/+3
|
* Add and start using TraitRef and ProjectionTy buildersFlorian Diebold2021-04-041-5/+3
|
* Use bitflags to compress function propertiesJonas Schievink2021-04-031-1/+1
| | | | Very minor savings, only 1 MB or so
* Rename Ty::interned to Ty::kindFlorian Diebold2021-04-031-7/+5
| | | | ... since that's the actual method on Chalk side that matches the signature.
* Introduce `GenericArg` like in ChalkFlorian Diebold2021-04-031-3/+4
| | | | | | | Plus some more adaptations to Substitution. Lots of `assert_ty_ref` that we should revisit when introducing lifetime/const parameters.
* Use arrayvec 0.6Laurențiu Nicola2021-03-251-2/+2
|
* Merge #7907bors[bot]2021-03-241-4/+37
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7907: Autoderef with visibility r=cynecx a=cynecx Fixes https://github.com/rust-analyzer/rust-analyzer/issues/7841. I am not sure about the general approach here. Right now this simply tries to check whether the autoderef candidate is reachable from the current module. ~~However this doesn't exactly work with traits (see the `tests::macros::infer_derive_clone_in_core` test, which fails right now).~~ see comment below Refs: - `rustc_typeck` checking fields: https://github.com/rust-lang/rust/blob/66ec64ccf31883cd2c28d045912a76179c0c6ed2/compiler/rustc_typeck/src/check/expr.rs#L1610 r? @flodiebold Co-authored-by: cynecx <[email protected]>
| * hir_def: move visibility queries from hir_ty to hir_defcynecx2021-03-241-1/+1
| |
| * hir_ty: add coverage testing for autoderef_visibility_method testcynecx2021-03-201-0/+1
| |
| * hir_ty: iterate_method_candidates_for_self_ty pass `visible_from_module` ↵cynecx2021-03-201-1/+6
| | | | | | | | down to `iterate_inherent_methods`
| * hir_ty: introduce visible_from_module param into method resolutioncynecx2021-03-201-4/+31
| |
* | Align InEnvironment with ChalkFlorian Diebold2021-03-211-3/+3
| | | | | | | | | | | | This in particular means storing a chalk_ir::Environment, not our TraitEnvironment. This makes InEnvironment not usable for Type, where we need to keep the full TraitEnvironment.
* | Align Canonical more with Chalk's versionFlorian Diebold2021-03-211-15/+34
|/ | | | In particular, use chalk_ir::CanonicalVarKinds.
* Turn Obligation into something similar to chalk_ir::DomainGoalFlorian Diebold2021-03-201-3/+3
| | | | This includes starting to make use of Chalk's `Cast` trait.
* Chalkify TraitRefFlorian Diebold2021-03-181-2/+3
|
* Rename Substs -> SubstitutionFlorian Diebold2021-03-161-7/+7
|
* Merge #8020bors[bot]2021-03-151-1/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | 8020: Power up goto_implementation r=matklad a=Veykril by allowing it to be invoked on references of names, now showing all (trait) implementations of the given type in all crates instead of just the defining crate as well as including support for builtin types ![image](https://user-images.githubusercontent.com/3757771/111144403-52bb0700-8587-11eb-9205-7a2a5b8b75a3.png) Example screenshot of `impl`s of Box in `log`, `alloc`, `std` and the current crate. Before you had to invoke it on the definition where it would only show the `impls` in `alloc`. Co-authored-by: Lukas Wirth <[email protected]>
| * Speedup trait impl search for goto_implementationLukas Wirth2021-03-151-1/+9
| |
* | Don't use Substs for Ref/Raw/Array/SliceFlorian Diebold2021-03-141-4/+2
|/
* Use chalk_ir::ForeignDefIdFlorian Diebold2021-03-131-6/+9
|
* Separate `Ty` and `TyKind` like in ChalkFlorian Diebold2021-03-131-35/+41
| | | | | Currently `Ty` just wraps `TyKind`, but this allows us to change most places to already use `intern` / `interned`.
* Use Chalk Environment more directlyFlorian Diebold2021-03-121-2/+1
|
* Delete `ContainerId`Jonas Schievink2021-03-091-1/+1
|
* Stop using `ContainerId` in `AssocContainerId`Jonas Schievink2021-03-091-1/+1
|