7559: Make `ModPath`'s representation private r=jonas-schievink a=jonas-schievink
This lets us switch out the `Vec` for something more efficient
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7557: Intern `TypeRef`s in the containing `ItemTree` r=jonas-schievink a=jonas-schievink
This reduces the memory used by `ItemTreeQuery` by ~20%. As it turns out, `TypeRef` is very heavy, and is used a lot in `ItemTree`:
* Many types are frequently repeated throughout the same file. This is what this PR addresses by storing identical `TypeRef`s only once per `ItemTree`.
* The vast majority of `TypeRef` consist of a plain path with only a single element. "Type anchors" like in `<Ty>::func` are used incredibly rarely, and even multi-segment paths are much rarer than single-segment paths.
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7555: Expander: store a LocalModuleId, not ModuleId r=jonas-schievink a=jonas-schievink
It already stores the DefMap containing the module, so having
a full ModuleId is unnecessary and makes it easier to mix things up
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7554: Don't keep the parent DefMap alive via Arc r=jonas-schievink a=jonas-schievink
This seems like it could easily leak a lot of memory since we don't
currently run GC
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7547: Split out ItemScope::dump from DefMap::dump r=jonas-schievink a=jonas-schievink
This is helpful for more targeted debugging
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7543: Grammar fixes r=Kushagra-0801 a=Kushagra-0801
I think line 235 is still wrong, but I am not sure.
Is the `crated/tt` in line 252 supposed to be `crates/tt`?
Co-authored-by: Kushagra Gupta <39802979+Kushagra-0801@users.noreply.github.com>
7541: Use block_def_map in body lowering (third time's the charm) r=jonas-schievink a=jonas-schievink
After https://github.com/rust-analyzer/rust-analyzer/pull/7380 and https://github.com/rust-analyzer/rust-analyzer/pull/7506 both had to be reverted, this should have finally resolved all remaining bugs.
Most importantly, the optimization to skip `block_def_map` computation when the block contains no inner items was fixed (which fortunately was simpler than expected).
I've ran `analysis-stats` on libstd locally, which works fine, and also ran this PR locally for a short while without issues.
Note that this *still* has no (or almost no) user-facing impact, because the rest of r-a still relies on some local item support hacks.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7538: Make sure normal dependencies always have version r=edwin0cheng a=pksunkara
How do I prevent this happening in the future by doing something in the CI? IIRC this is the second time.
Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
7537: Fix spelling mistakes in docs/dev r=Veykril a=Veykril
Also adds a line for `crates/cfg` and `crates/stdx` to the architecture.
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
there are a few currently limitations:
* no modifications of function body
* does not handle mutability and references
* no method support
* may produce incorrect results
7525: Fix resolution of `crate` paths from within blocks r=jonas-schievink a=jonas-schievink
They resolve to the crate root, not the DefMap's root module (which
can be a block)
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>