7381: Revert "Make use of `block_def_map` in body lowering" r=jonas-schievink a=jonas-schievink
Reverts rust-analyzer/rust-analyzer#7380, since it broke stuff
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7380: Make use of `block_def_map` in body lowering r=jonas-schievink a=jonas-schievink
Removes the `local_scope` argument from `Expander` in favor of tracking the `DefMap` in use during body lowering.
For now, we still collect inner items as usual, because other code still relies on `item_scope`.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7375: Add support for running name resolution in block expressions r=jonas-schievink a=jonas-schievink
This adds a `block_def_map` query that runs the name resolution algorithm on a block expression, and returns a `DefMap` that stores links to the parent `DefMap` (either the containing block or the crate-level `DefMap`). Blocks with no inner items return the parent's `DefMap` as-is, to avoid creating unnecessarily long `DefMap` chains.
Path resolution is updated to recurse into the parent `DefMap` after looking up a path in the original `DefMap`.
I've added a few new tests for this, but outside of those this isn't used yet.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7366: Treat BlockExpr as a potential module origin r=jonas-schievink a=jonas-schievink
A block containing inner items acts like the root module of a crate, so it needs to be representable as a `ModuleSource` and `ModuleOrigin`.
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7359: ItemTree: store a mapping from blocks to inner items r=jonas-schievink a=jonas-schievink
To do name resolution within block expressions, we need to know which inner items are located inside each block expression. This adds such a mapping to `ItemTree`, replacing the previous one, which was seemingly unused other than to access all the inner items.
This also assigns `AstId`s to block expressions, which is needed to store the mapping in salsa.
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
7360: Make public DefMap fields private r=jonas-schievink a=jonas-schievink
This gives us more freedom to change the implementation for name resolution within block expressions.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>