aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty
Commit message (Collapse)AuthorAgeFilesLines
...
* | Move `equals_ctor` to `TyExt`Florian Diebold2021-04-073-33/+37
|/ | | | | | I'd prefer getting rid of it, but it's used in the impl search and not super easy to replace there (I think ideally the impl search would do proper unification, but that's a bit more complicated).
* Remove Ty::substs{_mut}Florian Diebold2021-04-074-41/+24
| | | | | | 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-54/+52
|
* Move Ty::builtin_derefLukas Wirth2021-04-072-9/+9
|
* Merge #8394bors[bot]2021-04-072-33/+70
|\ | | | | | | | | | | | | | | 8394: Infer variants through type aliased enums r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * Infer variants through type aliased enumsLukas Wirth2021-04-072-33/+70
| |
* | Collect trait impls inside unnamed constsJonas Schievink2021-04-072-19/+57
| |
* | Remove `SolutionVariables`, add ConstrainedSubst analogous to ChalkFlorian Diebold2021-04-066-29/+49
| | | | | | | | ... just missing the constraints.
* | Align `InferenceVar` to ChalkFlorian Diebold2021-04-064-34/+48
| |
* | Clean up Chalk mapping a bitFlorian Diebold2021-04-061-69/+37
| |
* | infer: remove `record_pat_field_resolutions` fieldJonas Schievink2021-04-062-11/+1
|/ | | | | Same as https://github.com/rust-analyzer/rust-analyzer/pull/8376, this can be computed from other data
* Merge #8371bors[bot]2021-04-061-32/+17
|\ | | | | | | | | | | | | | | | | | | | | 8371: Don't use HirDisplayWrapper when displaying SourceCode r=matklad a=Veykril The issue was basically that when displaying for `DisplayTarget::SourceCode` some `hir_fmt` functions would create `HirDisplayWrapper`s which would then `fmt` these triggering the Display panic since `fmt::Display` can't fail the same way as `HirDisplay`. Simple fix is to just use `hir_fmt` directly. Should probably write that down somewhere in source, looking for a good spot to put that right now. Fixes #8077, Fixes #8370 Co-authored-by: Lukas Wirth <[email protected]>
| * Panic when creating a HirDisplayWrapper with DisplayTarget::SourceCodeLukas Wirth2021-04-061-1/+5
| |
| * Don't use HirDisplayWrapper when displaying SourceCodeLukas Wirth2021-04-061-31/+12
| |
* | infer: remove `record_field_resolutions` fieldJonas Schievink2021-04-066-34/+13
| | | | | | | | | | It stores no useful data, since we can derive all fields from `variant_resolutions`
* | Merge #8364bors[bot]2021-04-062-4/+10
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 8364: Memory usage improvements r=jonas-schievink a=alexmaco These are mostly focused on splitting up enum variants with large size differences between variants by `Box`-ing things up. In my testing this reduces the memory usage somewhere in the low percentages, even though the measurements are quite noisy. Co-authored-by: Alexandru Macovei <[email protected]>
| * | Use Box'es to reduce the size of hir_def::expr::Pat from 112 to 64 bytes on ↵Alexandru Macovei2021-04-061-2/+2
| | | | | | | | | | | | 64bit
| * | Use Box'es to reduce size of hir_def::expr::Expr from 128 to 72 bytes (on ↵Alexandru Macovei2021-04-061-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 64bit systems) Rationale: only a minority of variants used almost half the size. By keeping large members (especially in Option) behind a box the memory cost is only payed when the large variants are needed. This reduces the size Vec<Expr> needs to allocate.
* | | Remove TyExt::dyn_trait_refLukas Wirth2021-04-061-10/+4
| | |
* | | Move Ty accessors to TyExtLukas Wirth2021-04-0612-224/+250
| |/ |/|
* | Add chalk_ir::Const to TyKind::ArrayLukas Wirth2021-04-0611-43/+107
| |
* | Use a constructor function for Static lifetimesLukas Wirth2021-04-066-49/+37
| |
* | Always use Static lifetimes in chalk mappingLukas Wirth2021-04-061-1/+2
| |
* | Add Lifetime to DynTyLukas Wirth2021-04-063-1/+5
| |
* | Add Lifetime to TyKind::RefLukas Wirth2021-04-0612-39/+66
|/
* Fix shifting of binders in FnPointerFlorian Diebold2021-04-054-10/+23
| | | | | | | | | - don't shift in/out for Chalk mapping (we want to have the same binders now) - do shift in when creating the signature for a closure (though it shouldn't matter much) - do shift in when lowering a `fn()` type - correctly deal with the implied binder in TypeWalk
* Align FnPointer with ChalkFlorian Diebold2021-04-059-40/+86
|
* Substitution::prefix -> subst_prefixFlorian Diebold2021-04-053-10/+13
| | | | I probably want to get rid of this function completely later.
* Get rid of Substitution::suffixFlorian Diebold2021-04-052-10/+6
|
* Remove some unused methods, move some to types.rsFlorian Diebold2021-04-052-29/+15
|
* Binders::wrap_empty -> wrap_empty_bindersFlorian Diebold2021-04-053-16/+12
|
* Substitution::single -> from1Florian Diebold2021-04-054-14/+17
|
* Move ProjectionTy methods to extension traitFlorian Diebold2021-04-057-32/+43
|
* Merge #8353bors[bot]2021-04-054-18/+50
|\ | | | | | | | | | | | | | | 8353: Replace hir_ty::Lifetime with chalk equivalent r=flodiebold a=Veykril Our `Lifetime` isn't really used yet so this is a rather simple change Co-authored-by: Lukas Wirth <[email protected]>
| * Replace unused hir_ty::Lifetime with chalk equivalentsLukas Wirth2021-04-054-18/+50
| |
* | Use more assoc. type aliases in the chalk internerJonas Schievink2021-04-051-22/+21
|/ | | | Makes it sligthly easier to swap out these types
* Rename shift_bound_vars{_out} to align with ChalkFlorian Diebold2021-04-055-25/+32
|
* Get rid of subst_bound_vars usesFlorian Diebold2021-04-053-5/+9
|
* Get rid of some walk_mut usesFlorian Diebold2021-04-052-10/+15
|
* Add Interner parameter to Binders::substituteFlorian Diebold2021-04-0511-37/+44
|
* Binders::subst -> substituteFlorian Diebold2021-04-0511-34/+34
|
* Use VariableKinds in BindersFlorian Diebold2021-04-057-84/+107
|
* Hide Binders internals moreFlorian Diebold2021-04-059-84/+104
|
* Use arrayvec 0.7 to avoid perf regression in 0.6.1kjeremy2021-04-051-1/+1
| | | | See: https://github.com/bluss/arrayvec/issues/182
* Pass interner to TraitRef::self_type_parameterLaurențiu Nicola2021-04-054-20/+24
|
* Pass interner to ProjectionTy::self_type_parameterLaurențiu Nicola2021-04-054-7/+7
|
* Rename TyKind::ForeignType to ForeignLaurențiu Nicola2021-04-056-9/+9
|
* Rename TyKind::Unknown to ErrorLaurențiu Nicola2021-04-0513-47/+47
|
* Intern `GenericParams`Jonas Schievink2021-04-051-1/+2
| | | | | Also share the same instance between `ItemTree` and `generic_params` query.
* Intern more `TypeRef`s in genericsJonas Schievink2021-04-051-5/+4
| | | | Saves ~3 MB