aboutsummaryrefslogtreecommitdiff
path: root/crates/hir
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove Ty::substs{_mut}Florian Diebold2021-04-072-11/+21
| | | | | | Almost all uses actually only care about ADT substs, so it's better to be explicit. The methods were a bad abstraction anyway since they already didn't include the inner types of e.g. `TyKind::Ref` anymore.
* Free Ty::def_cratesLukas Wirth2021-04-071-3/+3
|
* Remove `SolutionVariables`, add ConstrainedSubst analogous to ChalkFlorian Diebold2021-04-061-4/+4
| | | | ... just missing the constraints.
* infer: remove `record_pat_field_resolutions` fieldJonas Schievink2021-04-061-4/+8
| | | | | Same as https://github.com/rust-analyzer/rust-analyzer/pull/8376, this can be computed from other data
* infer: remove `record_field_resolutions` fieldJonas Schievink2021-04-061-6/+9
| | | | | It stores no useful data, since we can derive all fields from `variant_resolutions`
* Move Ty accessors to TyExtLukas Wirth2021-04-061-1/+1
|
* Add chalk_ir::Const to TyKind::ArrayLukas Wirth2021-04-061-2/+2
|
* Add Lifetime to TyKind::RefLukas Wirth2021-04-061-4/+8
|
* Substitution::prefix -> subst_prefixFlorian Diebold2021-04-051-1/+2
| | | | I probably want to get rid of this function completely later.
* Add Interner parameter to Binders::substituteFlorian Diebold2021-04-053-6/+8
|
* Binders::subst -> substituteFlorian Diebold2021-04-053-5/+5
|
* Hide Binders internals moreFlorian Diebold2021-04-052-4/+4
|
* Use arrayvec 0.7 to avoid perf regression in 0.6.1kjeremy2021-04-051-1/+1
| | | | See: https://github.com/bluss/arrayvec/issues/182
* Rename TyKind::ForeignType to ForeignLaurențiu Nicola2021-04-051-1/+1
|
* Rename TyKind::Unknown to ErrorLaurențiu Nicola2021-04-051-1/+1
|
* Move things from `traits` module to `types` as wellFlorian Diebold2021-04-041-3/+4
|
* Move things in hir_ty into submodulesFlorian Diebold2021-04-041-1/+1
| | | | | - all the types that will be replaced by Chalk go to `types` - `TypeWalk` impls go to `walk`
* Replace Substitution::type_paramsFlorian Diebold2021-04-042-4/+4
|
* Replace remaining uses of Substitution::build_for_defFlorian Diebold2021-04-041-3/+2
|
* Add and start using TraitRef and ProjectionTy buildersFlorian Diebold2021-04-041-16/+8
|
* Move Ty::builtin to TyBuilderFlorian Diebold2021-04-041-2/+2
|
* Glob-reexport hir_def database typesJonas Schievink2021-04-041-9/+1
|
* Use bitflags to compress function propertiesJonas Schievink2021-04-032-12/+11
| | | | Very minor savings, only 1 MB or so
* Rename Ty::interned to Ty::kindFlorian Diebold2021-04-031-13/+13
| | | | ... since that's the actual method on Chalk side that matches the signature.
* Introduce `GenericArg` like in ChalkFlorian Diebold2021-04-031-9/+22
| | | | | | | Plus some more adaptations to Substitution. Lots of `assert_ty_ref` that we should revisit when introducing lifetime/const parameters.
* Merge #8284bors[bot]2021-04-022-5/+5
|\ | | | | | | | | | | | | | | 8284: Reduce memory usage by using global `Arc`-based interning r=jonas-schievink a=jonas-schievink This saves around 50 mb when running `analysis-stats` on r-a itself. Not a lot, but this infra can be easily reused to intern more stuff. Co-authored-by: Jonas Schievink <[email protected]>
| * Global TypeRef/TraitRef interningJonas Schievink2021-04-012-5/+5
| |
* | Resolve associated types with type anchorsLukas Wirth2021-04-011-10/+19
| |
* | Resolve associated typesLukas Wirth2021-04-012-4/+21
|/
* Rename target_ty to self_tyLukas Wirth2021-03-291-6/+6
|
* Lower traits to TraitRef instead of TypeRefLukas Wirth2021-03-291-1/+2
|
* Unleash macro 2.0 in hightlight and moreEdwin Cheng2021-03-272-5/+2
|
* syntax: return owned string instead of leaking stringcynecx2021-03-261-1/+1
|
* completion relevance consider if types can be unifiedJosh Mcguigan2021-03-261-1/+5
|
* Use arrayvec 0.6Laurențiu Nicola2021-03-252-2/+2
|
* Merge #7907bors[bot]2021-03-241-0/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: don't use the self module as visible_from in iterate_method_candidatescynecx2021-03-241-6/+1
| |
| * hir_ty: introduce visible_from_module param into method resolutioncynecx2021-03-201-0/+7
| |
* | simplifyLukas Wirth2021-03-231-0/+15
| |
* | Make more use of the HIR in rename::rename_to_selfLukas Wirth2021-03-231-4/+17
| |
* | Merge hir::MacroDef::is_* into hir::MacroDef::kindLukas Wirth2021-03-231-14/+17
| |
* | Set up a search scope when searching for mbe macro referencesLukas Wirth2021-03-231-0/+5
| |
* | Align naming of deps and revdepsAleksey Kladov2021-03-231-5/+1
| |
* | Compute more mathematically well-rounded notion of transitive depsAleksey Kladov2021-03-231-2/+1
| | | | | | | | | | | | | | | | By including the crate itself, we make the resulting set closed with respect to `transitve_reveres_dependencies` operation, as it becomes a proper transitive closure. This just feels more proper and mathy. And, indeed, this actually allows us to simplify call sites somewhat.
* | Align InEnvironment with ChalkFlorian Diebold2021-03-212-78/+56
| | | | | | | | | | | | 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-13/+28
| | | | | | | | In particular, use chalk_ir::CanonicalVarKinds.
* | Use QuantifiedWhereClause in generic_predicates as wellFlorian Diebold2021-03-212-6/+2
| | | | | | | | | | Still far too much binder skipping going on; I find it hard to imagine this is all correct, but the tests pass.
* | Introduce QuantifiedWhereClause and DynTy analogous to ChalkFlorian Diebold2021-03-212-7/+16
| | | | | | | | | | This introduces a bunch of new binders in lots of places, which we have to be careful about, but we had to add them at some point.
* | Merge #8133bors[bot]2021-03-211-1/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 8133: Ignore type bindings in generic_predicates_for_param (fix panic on ena and crates depending on it) r=flodiebold a=flodiebold This allows us to handle more cases without a query cycle, which includes certain cases that rustc accepted. That in turn means we avoid triggering salsa-rs/salsa#257 on valid code (it will still happen if the user writes an actual cycle). We actually accept more definitions than rustc now; that's because rustc only ignores bindings when looking up super traits, whereas we now also ignore them when looking for predicates to disambiguate associated type shorthand. We could introduce a separate query for super traits if necessary, but for now I think this should be fine. Co-authored-by: Florian Diebold <[email protected]>
| * | Ignore type bindings in generic_predicates_for_paramFlorian Diebold2021-03-211-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to handle more cases without a query cycle, which includes certain cases that rustc accepted. That in turn means we avoid triggering salsa-rs/salsa#257 on valid code (it will still happen if the user writes an actual cycle). We actually accept more definitions than rustc now; that's because rustc only ignores bindings when looking up super traits, whereas we now also ignore them when looking for predicates to disambiguate associated type shorthand. We could introduce a separate query for super traits if necessary, but for now I think this should be fine.