aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/lower.rs
Commit message (Collapse)AuthorAgeFilesLines
* internal: intern `TypeBound`sJonas Schievink2021-05-241-1/+2
| | | | | Doesn't save much memory (~2 mb), but interning things is generally a good pattern to follow
* Rework obligation handlingFlorian Diebold2021-05-211-1/+3
| | | | | | | | 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.
* Address final feedbackJade2021-05-161-12/+7
| | | | | * rename ConstExtension->ConstExt * refactor a manual construction of a Const
* Add lowering of array lengths in typesJade2021-05-131-10/+16
| | | | | | | | | | | Now e.g. ```rust fn a(b: [u8; 2]) { } ``` will know about the length of b.
* Add basic support for array lengths in typesJade2021-05-111-0/+2
| | | | | | | | | | This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range array declarations are unsupported as before. I don't know why a bunch of our rustc tests had single quotes inside strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's bad? Maybe something in a nightly?
* Don't look in super traits for <T as Trait>::AssocFlorian Diebold2021-04-291-7/+6
| | | | | | | This isn't actually how it works, you have to specify the exact trait that has the associated type. Fixes #8686.
* Handle cycles in generic_defaults more gracefullyFlorian Diebold2021-04-291-0/+21
|
* hir_ty: cleanups and extend infinitely_recursive_macro_type testcynecx2021-04-181-3/+5
|
* hir_ty: keep body::Expander in TyLoweringContextcynecx2021-04-181-14/+57
|
* hir_def: refactor expand_macro_type and cleanupscynecx2021-04-171-3/+3
|
* hir_ty: Expand macros at type positioncynecx2021-04-171-1/+11
|
* Move ToChalk -> mappingFlorian Diebold2021-04-091-4/+4
|
* Reorganize hir_ty modulesFlorian Diebold2021-04-091-1/+2
| | | | | Chalk isn't really a 'traits' thing anymore, so it doesn't make sense to have all the Chalk-related stuff in submodules of `traits`.
* Remove unusedFlorian Diebold2021-04-081-1/+1
|
* Remove identity impls for ToChalkFlorian Diebold2021-04-081-3/+2
|
* Replace some `fold` callsFlorian Diebold2021-04-081-16/+10
|
* Fix shifted_{in,out} callsFlorian Diebold2021-04-081-3/+3
|
* Add HasInterner boundsFlorian Diebold2021-04-081-2/+2
|
* Move hir_trait_id to extension traitFlorian Diebold2021-04-071-1/+1
|
* infer: remove `record_field_resolutions` fieldJonas Schievink2021-04-061-3/+2
| | | | | It stores no useful data, since we can derive all fields from `variant_resolutions`
* Add chalk_ir::Const to TyKind::ArrayLukas Wirth2021-04-061-2/+2
|
* Use a constructor function for Static lifetimesLukas Wirth2021-04-061-6/+5
|
* Add Lifetime to DynTyLukas Wirth2021-04-061-1/+3
|
* Add Lifetime to TyKind::RefLukas Wirth2021-04-061-2/+4
|
* Fix shifting of binders in FnPointerFlorian Diebold2021-04-051-2/+3
| | | | | | | | | - 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-051-5/+5
|
* Binders::wrap_empty -> wrap_empty_bindersFlorian Diebold2021-04-051-3/+5
|
* Rename shift_bound_vars{_out} to align with ChalkFlorian Diebold2021-04-051-9/+9
|
* Get rid of subst_bound_vars usesFlorian Diebold2021-04-051-1/+1
|
* Get rid of some walk_mut usesFlorian Diebold2021-04-051-4/+6
|
* Add Interner parameter to Binders::substituteFlorian Diebold2021-04-051-4/+4
|
* Binders::subst -> substituteFlorian Diebold2021-04-051-4/+4
|
* Use VariableKinds in BindersFlorian Diebold2021-04-051-41/+41
|
* Hide Binders internals moreFlorian Diebold2021-04-051-10/+13
|
* Pass interner to TraitRef::self_type_parameterLaurențiu Nicola2021-04-051-1/+2
|
* Rename TyKind::ForeignType to ForeignLaurențiu Nicola2021-04-051-1/+1
|
* Rename TyKind::Unknown to ErrorLaurențiu Nicola2021-04-051-19/+19
|
* Replace Substitution::type_paramsFlorian Diebold2021-04-041-3/+4
|
* Replace Substitution::bound_vars and ::type_params_for_genericsFlorian Diebold2021-04-041-16/+8
|
* Use TyBuilder in another placeFlorian Diebold2021-04-041-4/+3
|
* Move Ty::builtin to TyBuilderFlorian Diebold2021-04-041-1/+1
|
* Add TyBuilder::adtFlorian Diebold2021-04-041-4/+5
|
* Use bitflags to compress function propertiesJonas Schievink2021-04-031-1/+1
| | | | Very minor savings, only 1 MB or so
* Introduce `GenericArg` like in ChalkFlorian Diebold2021-04-031-8/+9
| | | | | | | 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-021-1/+1
|\ | | | | | | | | | | | | | | 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-011-1/+1
| |
* | Don't allocate in `associated_type_shorthand_candidates`Lukas Wirth2021-04-021-36/+33
| |
* | Resolve associated types with type anchorsLukas Wirth2021-04-011-1/+1
|/
* Remove TraitRef::ErrorLukas Wirth2021-03-291-4/+1
|
* Rename target_ty to self_tyLukas Wirth2021-03-291-1/+1
|