Florian Diebold
be03db0e3a
Intern Substitutions
...
(Costs a bit of performance, reduces memory usage on RA by ~10%.)
2021-04-08 22:48:47 +02:00
Florian Diebold
a169fa6a83
Intern VariableKinds
2021-04-08 22:48:47 +02:00
Florian Diebold
d992736e79
Remove unused
2021-04-08 14:36:14 +02:00
Florian Diebold
8040f4a5e3
Replace make_binders
by the now equivalent make_only_type_binders
2021-04-08 14:23:17 +02:00
Florian Diebold
8ce6fea325
Remove identity impls for ToChalk
2021-04-08 14:23:17 +02:00
Florian Diebold
a163554857
Fix Canonicalized::apply_solution
...
Now that we're using Chalk's `substitute` which actually knows about
lifetimes, the hack doesn't work anymore, but we can put in a proper
lifetime.
2021-04-08 14:23:17 +02:00
Florian Diebold
a838a60caa
Fix missing match arms
2021-04-08 14:23:17 +02:00
Florian Diebold
f43edb2151
Fix remaining interned_mut
call
2021-04-08 14:08:55 +02:00
Florian Diebold
0f058d61ce
Replace remaining fold
calls
2021-04-08 14:08:55 +02:00
Florian Diebold
caee3b6c2d
Replace some fold
calls
2021-04-08 14:08:55 +02:00
Florian Diebold
b25b147e86
Fix shifted_{in,out} calls
2021-04-08 14:08:55 +02:00
Florian Diebold
dc0b581736
Fix subst_prefix
2021-04-08 14:08:55 +02:00
Florian Diebold
5794a090bf
Get rid of walk_mut [not compiling]
2021-04-08 14:08:55 +02:00
Florian Diebold
1332e72d09
Fix TyBuilder methods
2021-04-08 14:08:55 +02:00
Florian Diebold
b24e6f6030
Impl Fold for CallableSig
2021-04-08 14:08:55 +02:00
Florian Diebold
7e541e69b1
Add HasInterner bounds
2021-04-08 14:08:55 +02:00
Florian Diebold
926bfef0ef
Allow unused
2021-04-08 14:08:55 +02:00
Florian Diebold
e5d294765a
Remove obsolete Cast impls
2021-04-08 14:08:54 +02:00
Florian Diebold
429bbbd39a
Make ToChalk implementations identity
2021-04-08 14:08:54 +02:00
Florian Diebold
77d974ae6b
Replace all the types by their Chalk versions
2021-04-08 14:08:54 +02:00
bors[bot]
3191a93185
Merge #8409
...
8409: Various remaining fixes for Chalk IR move r=flodiebold a=flodiebold
CC #8313
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-04-07 18:51:36 +00:00
Florian Diebold
dc116f7ce2
Fix return type of Substitution::interned
2021-04-07 20:50:26 +02:00
Florian Diebold
be0084a0bc
InEnvironment::new takes a reference
2021-04-07 20:48:58 +02:00
Florian Diebold
d1b645d236
Make Canonical::new a free-standing function
2021-04-07 20:47:04 +02:00
Florian Diebold
9b4ecd3723
Fix return type of self_type_parameter
2021-04-07 20:41:52 +02:00
Florian Diebold
6777a4975d
Move hir_trait_id to extension trait
2021-04-07 20:40:01 +02:00
Florian Diebold
86feac18e8
Change TraitRef::hir_fmt_ext to free-standing function
2021-04-07 20:34:58 +02:00
Florian Diebold
4c35df47e8
Move equals_ctor
to TyExt
...
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).
2021-04-07 20:08:50 +02:00
Florian Diebold
92dcc53f94
Remove Ty::substs{_mut}
...
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.
2021-04-07 17:56:53 +02:00
Lukas Wirth
c3c8e8225f
Free Ty::def_crates
2021-04-07 13:09:31 +02:00
Lukas Wirth
e3a5c15d18
Move Ty::builtin_deref
2021-04-07 13:06:48 +02:00
bors[bot]
a8f1e41f0f
Merge #8394
...
8394: Infer variants through type aliased enums r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-04-07 09:35:40 +00:00
Lukas Wirth
41563fd612
Infer variants through type aliased enums
2021-04-07 11:31:50 +02:00
Jonas Schievink
7c1c0e6fea
Collect trait impls inside unnamed consts
2021-04-07 03:33:22 +02:00
Florian Diebold
b03969cda9
Remove SolutionVariables
, add ConstrainedSubst analogous to Chalk
...
... just missing the constraints.
2021-04-06 23:46:32 +02:00
Florian Diebold
768ee3e47a
Align InferenceVar
to Chalk
2021-04-06 21:10:22 +02:00
Florian Diebold
d280538174
Clean up Chalk mapping a bit
2021-04-06 21:10:22 +02:00
Jonas Schievink
230c763648
infer: remove record_pat_field_resolutions
field
...
Same as https://github.com/rust-analyzer/rust-analyzer/pull/8376 , this
can be computed from other data
2021-04-06 19:44:28 +02:00
bors[bot]
e6a1c9ca60
Merge #8371
...
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 <lukastw97@gmail.com>
2021-04-06 16:12:30 +00:00
Jonas Schievink
e9752308bb
infer: remove record_field_resolutions
field
...
It stores no useful data, since we can derive all fields from
`variant_resolutions`
2021-04-06 17:59:18 +02:00
bors[bot]
7d39b13996
Merge #8364
...
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 <alexnmaco@gmail.com>
2021-04-06 13:43:37 +00:00
Alexandru Macovei
32304d14a1
Use Box'es to reduce the size of hir_def::expr::Pat from 112 to 64 bytes on 64bit
2021-04-06 16:01:31 +03:00
Alexandru Macovei
fb1f544e24
Use Box'es to reduce size of hir_def::expr::Expr from 128 to 72 bytes (on 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.
2021-04-06 16:01:31 +03:00
Lukas Wirth
a43409fa43
Panic when creating a HirDisplayWrapper with DisplayTarget::SourceCode
2021-04-06 14:42:34 +02:00
Lukas Wirth
ffdb2da49d
Don't use HirDisplayWrapper when displaying SourceCode
2021-04-06 14:21:35 +02:00
Lukas Wirth
bc993bbe85
Remove TyExt::dyn_trait_ref
2021-04-06 13:58:51 +02:00
Lukas Wirth
9b4699a9be
Move Ty accessors to TyExt
2021-04-06 13:58:48 +02:00
Lukas Wirth
9fbba7bc45
Add chalk_ir::Const to TyKind::Array
2021-04-06 11:45:41 +02:00
Lukas Wirth
08dc69599e
Use a constructor function for Static lifetimes
2021-04-06 10:50:55 +02:00
Lukas Wirth
b98c681cb7
Always use Static lifetimes in chalk mapping
2021-04-06 10:45:34 +02:00
Lukas Wirth
9da191c7e0
Add Lifetime to DynTy
2021-04-06 10:45:34 +02:00
Lukas Wirth
96756f1b1d
Add Lifetime to TyKind::Ref
2021-04-06 10:45:30 +02:00
Florian Diebold
1ae967bf8e
Fix shifting of binders in FnPointer
...
- 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
2021-04-05 23:00:50 +02:00
Florian Diebold
edc59d897d
Align FnPointer with Chalk
2021-04-05 22:23:30 +02:00
Florian Diebold
b67148daea
Substitution::prefix -> subst_prefix
...
I probably want to get rid of this function completely later.
2021-04-05 21:58:53 +02:00
Florian Diebold
2a83645e1b
Get rid of Substitution::suffix
2021-04-05 21:58:03 +02:00
Florian Diebold
b443e5304e
Remove some unused methods, move some to types.rs
2021-04-05 21:58:03 +02:00
Florian Diebold
738174671a
Binders::wrap_empty -> wrap_empty_binders
2021-04-05 21:58:03 +02:00
Florian Diebold
2f5a77658b
Substitution::single -> from1
2021-04-05 21:58:03 +02:00
Florian Diebold
788533d380
Move ProjectionTy methods to extension trait
2021-04-05 21:58:01 +02:00
bors[bot]
8c96a7d81e
Merge #8353
...
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 <lukastw97@gmail.com>
2021-04-05 19:34:50 +00:00
Lukas Wirth
d587ca2991
Replace unused hir_ty::Lifetime with chalk equivalents
2021-04-05 20:46:15 +02:00
Jonas Schievink
f48dd154a5
Use more assoc. type aliases in the chalk interner
...
Makes it sligthly easier to swap out these types
2021-04-05 20:15:07 +02:00
Florian Diebold
a316d58360
Rename shift_bound_vars{_out} to align with Chalk
2021-04-05 19:21:03 +02:00
Florian Diebold
fbab69cbff
Get rid of subst_bound_vars uses
2021-04-05 19:21:03 +02:00
Florian Diebold
e28f0c98ba
Get rid of some walk_mut uses
2021-04-05 19:21:03 +02:00
Florian Diebold
30a339e038
Add Interner parameter to Binders::substitute
2021-04-05 19:21:01 +02:00
Florian Diebold
05eba0db3d
Binders::subst -> substitute
2021-04-05 19:20:28 +02:00
Florian Diebold
ad20f00844
Use VariableKinds in Binders
2021-04-05 19:19:18 +02:00
Florian Diebold
69714d36e6
Hide Binders internals more
2021-04-05 19:19:18 +02:00
kjeremy
b246f57fad
Use arrayvec 0.7 to avoid perf regression in 0.6.1
...
See: https://github.com/bluss/arrayvec/issues/182
2021-04-05 12:58:35 -04:00
Laurențiu Nicola
d7546d8c23
Pass interner to TraitRef::self_type_parameter
2021-04-05 17:38:37 +03:00
Laurențiu Nicola
aefcbf2758
Pass interner to ProjectionTy::self_type_parameter
2021-04-05 17:37:24 +03:00
Laurențiu Nicola
72c54c53cd
Rename TyKind::ForeignType to Foreign
2021-04-05 15:39:06 +03:00
Laurențiu Nicola
65c2e51940
Rename TyKind::Unknown to Error
2021-04-05 15:39:06 +03:00
Jonas Schievink
7c0c713a10
Intern GenericParams
...
Also share the same instance between `ItemTree` and `generic_params`
query.
2021-04-05 03:50:10 +02:00
Jonas Schievink
24e876b52e
Intern more TypeRef
s in generics
...
Saves ~3 MB
2021-04-05 02:03:37 +02:00
Florian Diebold
645a9c3a27
Move things from traits
module to types
as well
2021-04-04 20:27:40 +02:00
Florian Diebold
508a1ecad3
Move things in hir_ty into submodules
...
- all the types that will be replaced by Chalk go to `types`
- `TypeWalk` impls go to `walk`
2021-04-04 20:22:00 +02:00
Florian Diebold
cde3857897
Add comment
2021-04-04 13:23:22 +02:00
Florian Diebold
ebdfc932e7
Replace Substitution::type_params
2021-04-04 13:16:39 +02:00
Florian Diebold
a4d7bdf1c8
Replace Substitution::bound_vars and ::type_params_for_generics
2021-04-04 13:16:39 +02:00
Florian Diebold
715c178f0b
Move TyBuilder to its own module
2021-04-04 13:16:39 +02:00
Florian Diebold
584d1c9e5b
Replace last uses of SubstsBuilder by TyBuilder
2021-04-04 13:16:39 +02:00
Florian Diebold
505ca65216
Remove CallableSig::from_substs
2021-04-04 13:16:39 +02:00
Florian Diebold
ac8fee006a
Use TyBuilder in another place
2021-04-04 13:16:38 +02:00
Florian Diebold
eaa03ef446
Some more TyBuilder use
2021-04-04 13:16:38 +02:00
Florian Diebold
5d2b488aeb
Replace remaining uses of Substitution::build_for_def
2021-04-04 13:16:38 +02:00
Florian Diebold
77333a571f
More TyBuilder use
2021-04-04 13:16:38 +02:00
Florian Diebold
66fec39aa0
More TyBuilder use
2021-04-04 13:16:38 +02:00
Florian Diebold
cd227f581e
Add and start using TraitRef and ProjectionTy builders
2021-04-04 13:16:38 +02:00
Florian Diebold
2ead65190e
Move Ty::builtin to TyBuilder
2021-04-04 13:16:38 +02:00
Florian Diebold
620769f322
Add TyBuilder::adt
2021-04-04 13:16:38 +02:00
Florian Diebold
e6f007d9a8
Move Ty::fn_ptr to TyBuilder
2021-04-04 13:16:38 +02:00
Florian Diebold
b0fe3d929f
Add TyBuilder::unit() and TyExt::is_unit()
2021-04-04 13:16:38 +02:00
Florian Diebold
b15152c430
Add TyBuilder
2021-04-04 13:16:38 +02:00
Jonas Schievink
d8bf9bef80
Access a body's block def maps via a method
2021-04-04 03:03:18 +02:00
Jonas Schievink
ee4b5a34d8
Use bitflags to compress function properties
...
Very minor savings, only 1 MB or so
2021-04-03 20:58:42 +02:00
Florian Diebold
c551604b5a
Rename Ty::interned to Ty::kind
...
... since that's the actual method on Chalk side that matches the signature.
2021-04-03 13:08:29 +02:00
Florian Diebold
e480d81988
Introduce GenericArg
like in Chalk
...
Plus some more adaptations to Substitution.
Lots of `assert_ty_ref` that we should revisit when introducing
lifetime/const parameters.
2021-04-03 11:17:13 +02:00