Jonas Schievink
ebd8233b3e
Replace impls_in_trait
with CrateImplDefs
2020-06-19 01:29:34 +02:00
Florian Diebold
02962b374e
Implement return position impl trait / opaque type support
...
This is working, but I'm not that happy with how the lowering works. We might
need an additional representation between `TypeRef` and `Ty` where names are
resolved and `impl Trait` bounds are separated out, but things like inference
variables don't exist and `impl Trait` is always represented the same
way.
Also note that this doesn't implement correct handling of RPIT *inside* the
function (which involves turning the `impl Trait`s into variables and creating
obligations for them). That intermediate representation might help there as
well.
2020-06-05 17:08:27 +02:00
Florian Diebold
bfbc210bc1
Use Chalk's built-in representation of function item types
2020-05-22 21:05:13 +02:00
Florian Diebold
27fe68ad5c
Use TypeCtorId as AdtId directly, and rename the type alias StructId -> AdtId
2020-05-22 19:52:06 +02:00
Aleksey Kladov
970dbf8717
Rename StructField -> Field
2020-04-25 14:23:34 +02:00
Florian Diebold
0be68a4825
Update Chalk, and cache Chalk env elaboration through a query
...
This should fix some of the worst performance problems.
2020-04-20 19:16:01 +02:00
Florian Diebold
a2783df3f0
Look up impls by self type
...
This speeds up inference in analysis-stats by ~30% (even more with the recursive
solver).
2020-04-11 18:04:09 +02:00
Aleksey Kladov
9f53cec1da
Cleanup memory usage stats
2020-03-25 19:35:46 +01:00
Aleksey Kladov
9faea2364d
Use dyn Trait
for working with databse
...
It improves compile time in `--release` mode quite a bit, it doesn't
really slow things down and, conceptually, it seems closer to what we
want the physical architecture to look like (we don't want to
monomorphise EVERYTHING in a single leaf crate).
2020-03-16 17:42:30 +01:00
Aleksey Kladov
9abf0d9659
Normalize waiting queries names
2020-03-07 00:18:04 +01:00
Florian Diebold
9ce30281f6
Don't reuse the Chalk solver
...
This slows down analysis-stats a bit (~5% in my measurement), but improves
incremental checking a lot because we can reuse trait solve results.
2020-03-06 23:04:14 +01:00
Aleksey Kladov
b33b843f40
Allow specifying additional info on call to profile
2020-03-06 17:36:51 +01:00
Aleksey Kladov
59f91f2f9b
Less confusing profile names
2020-03-06 16:40:38 +01:00
Aleksey Kladov
a1e1869554
Rename ast::ImplBlock -> ast::ImplDef
2020-02-29 21:33:15 +01:00
Florian Diebold
dded90a748
Formatting
2020-02-07 18:28:10 +01:00
Florian Diebold
a3d8cffde3
Use variables in predicates as well
2020-02-07 18:28:10 +01:00
Florian Diebold
ed25cf70d5
Change Ty::Param to contain param ID
2020-02-07 18:28:10 +01:00
Florian Diebold
16c6937447
Lower impl trait to variables, move away from using placeholders where they don't belong
2020-02-07 18:28:10 +01:00
Michal Terepeta
d6c2a59538
Split infer
query into two for better profiling
...
This is the same change as we did with `crate_def_map` and it does seem
that we mostly spend time in salsa, without recomputing much on
rust-analyzer side.
Example output:
```
233ms - handle_inlay_hints
163ms - get_inlay_hints
163ms - SourceAnalyzer::new
67ms - def_with_body_from_child_node
67ms - analyze_container
67ms - analyze_container
67ms - Module::from_definition
67ms - Module::from_file
67ms - crate_def_map
0ms - parse_macro_query (6 calls)
0ms - raw_items_query (1 calls)
66ms - ???
0ms - crate_def_map (1 calls)
0ms - crate_def_map (1 calls)
96ms - infer
2ms - trait_solve_query (2 calls)
94ms - ???
0ms - body_with_source_map_query (1 calls)
0ms - crate_def_map (1 calls)
[...]
```
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 19:58:11 +01:00
Florian Diebold
67a2555f6d
Update Chalk, clean up Chalk integration a bit
2019-12-23 00:08:03 +01:00
Florian Diebold
1c622e9fed
Add cycle recovery for type aliases
2019-11-30 12:57:32 +01:00
Florian Diebold
3ca40f7c08
Add cycle recovery for generic predicates
2019-11-30 12:57:32 +01:00
Florian Diebold
cf6809645e
Handle cycles in impl types better
...
- impl Trait<Self> for S is allowed
- impl Trait for S<Self> is an invalid cycle, but we can add cycle recovery for
it in Salsa now
2019-11-30 12:57:32 +01:00
Aleksey Kladov
8d34696826
Memoize impl resolutions
2019-11-27 22:12:09 +03:00
Aleksey Kladov
a87579500a
Move Ty
2019-11-27 21:16:00 +03:00