aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/body
Commit message (Collapse)AuthorAgeFilesLines
* Intern TypeRefs stored in BodyJonas Schievink2021-04-061-4/+7
| | | | Minor improvement to memory usage (1 MB or so)
* Use Box'es to reduce the size of hir_def::expr::Pat from 112 to 64 bytes on ↵Alexandru Macovei2021-04-061-3/+3
| | | | 64bit
* Use Box'es to reduce size of hir_def::expr::Expr from 128 to 72 bytes (on ↵Alexandru Macovei2021-04-061-6/+10
| | | | | | | | | | 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.
* Only remember blocks that have a DefMapJonas Schievink2021-04-041-5/+7
|
* Fix recursive macro statement expansionEdwin Cheng2021-03-251-35/+33
|
* Fix incorrect scoping in while expressionsLukas Wirth2021-03-211-1/+1
|
* Track labels in scopesLukas Wirth2021-03-211-10/+47
|
* Improve diagnostic when including nonexistent fileJonas Schievink2021-03-171-1/+1
|
* Handle `#[cfg]` on call argumentsJonas Schievink2021-03-171-11/+16
|
* Merge #8048bors[bot]2021-03-173-3/+30
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8048: Fix missing unresolved macro diagnostic in function body r=edwin0cheng a=brandondong This was an issue I found while working on https://github.com/rust-analyzer/rust-analyzer/pull/7970. **Reproduction:** 1. Call a non-existent macro in a function body. ``` fn main() { foo!(); } ``` 2. No diagnostics are raised. An unresolved-macro-call diagnostic is expected. 3. If the macro call is instead outside of the function body, this works as expected. I believe this worked previously and regressed in https://github.com/rust-analyzer/rust-analyzer/pull/7805. **Behavior prior to https://github.com/rust-analyzer/rust-analyzer/pull/7805:** - The unresolved-macro-call diagnostic did not exist. Instead, a macro-error diagnostic would be raised with the text "could not resolve macro [path]". - This was implemented by adding an error to the error sink (https://github.com/rust-analyzer/rust-analyzer/pull/7805/files#diff-50a326c5ae465bd9b31ee4310186380aa06e4fa1f6b41dbc0aed5bcc656a3cb8L657). - The error was propagated through https://github.com/rust-analyzer/rust-analyzer/blob/1a82af3527e476d52410ff4dfd2fb4c57466abcb/crates/hir_def/src/body.rs#L123 eventually reaching https://github.com/rust-analyzer/rust-analyzer/blob/1a82af3527e476d52410ff4dfd2fb4c57466abcb/crates/hir_def/src/body/lower.rs#L569. **Behavior after:** - Instead of writing to the error sink, an UnresolvedMacro error is now returned (https://github.com/rust-analyzer/rust-analyzer/pull/7805/files#diff-50a326c5ae465bd9b31ee4310186380aa06e4fa1f6b41dbc0aed5bcc656a3cb8R631). - The parent caller throws away the error as its function signature is `Option<MacroCallId>` (https://github.com/rust-analyzer/rust-analyzer/pull/7805/files#diff-50a326c5ae465bd9b31ee4310186380aa06e4fa1f6b41dbc0aed5bcc656a3cb8R604). - We instead now reach the warn condition (https://github.com/rust-analyzer/rust-analyzer/blob/1a82af3527e476d52410ff4dfd2fb4c57466abcb/crates/hir_def/src/body.rs#L124) and no diagnostics are created in https://github.com/rust-analyzer/rust-analyzer/blob/1a82af3527e476d52410ff4dfd2fb4c57466abcb/crates/hir_def/src/body/lower.rs#L575. **Fix:** - Make sure to propagate the UnresolvedMacro error. Report the error using the new unresolved-macro-call diagnostic. Co-authored-by: Brandon <[email protected]>
| * Fix missing unresolved macro diagnostic in function bodyBrandon2021-03-163-3/+30
| |
* | Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-161-47/+58
|/
* Simplify source maps for fieldsAleksey Kladov2021-03-151-15/+9
|
* Stop fetching ItemTrees for no reasonJonas Schievink2021-03-101-14/+1
|
* Remove `item_scope` field from `Body`Jonas Schievink2021-03-091-139/+4
|
* Store inner `BlockId`s in `Body`Jonas Schievink2021-03-091-0/+3
|
* Use upstream cov-markLaurențiu Nicola2021-03-084-11/+9
|
* Merge #7804bors[bot]2021-02-281-6/+11
|\ | | | | | | | | | | | | | | 7804: Introduce TypeCtor::Scalar r=lnicola a=Veykril `TypeCtor::Int(..) | TypeCtor::Float(..) | TypeCtor::Char | TypeCtor::Bool` => `TypeCtor::Scalar(..)`, in this case we can actually just straight up use `chalk_ir::Scalar` already since its just a POD without any IDs or anything. Co-authored-by: Lukas Wirth <[email protected]>
| * Introduce TypeCtor::ScalarLukas Wirth2021-02-281-6/+11
| |
* | Restrict visibilities to the containing DefMapJonas Schievink2021-02-281-0/+29
|/
* Add another block def map testJonas Schievink2021-02-091-0/+27
|
* Add `TestDB::module_at_position`Jonas Schievink2021-02-091-100/+4
|
* Add expression scopes for blocksJonas Schievink2021-02-091-4/+18
|
* Test `super` resolution tooJonas Schievink2021-02-051-0/+2
|
* Fix resolution of `self` module within blocksJonas Schievink2021-02-051-6/+8
|
* Remove redundant clonesYoshua Wuyts2021-02-051-1/+1
|
* Expander: store a LocalModuleId, not ModuleIdJonas Schievink2021-02-041-7/+7
| | | | | It already stores the DefMap containing the module, so having a full ModuleId is unnecessary and makes it easier to mix things up
* Don't keep the parent DefMap alive via ArcJonas Schievink2021-02-041-4/+3
| | | | | This seems like it could easily leak a lot of memory since we don't currently run GC
* Add newline between block and crate mapsJonas Schievink2021-02-031-0/+10
|
* Test for name resolution with DefMap shortcutJonas Schievink2021-02-031-0/+33
|
* Shortcut `block_def_map` if there's no inner itemsJonas Schievink2021-02-032-5/+8
| | | | | This previously didn't work, but apparently only because of the wonky test setup
* Use body lowering for block_def_map testsJonas Schievink2021-02-032-2/+301
| | | | Removes the hacky and buggy custom lowering code
* Use block_def_map in body loweringJonas Schievink2021-02-031-10/+25
|
* Revert "Use block_def_map in body lowering"Jonas Schievink2021-02-023-326/+12
|
* Use body lowering for block_def_map testsJonas Schievink2021-02-012-2/+301
| | | | Removes the hacky and buggy custom lowering code
* Use block_def_map in body loweringJonas Schievink2021-02-011-10/+25
|
* add more countsAleksey Kladov2021-01-271-0/+2
|
* Add test for path resolution bugJonas Schievink2021-01-211-8/+33
|
* Revert "Make use of `block_def_map` in body lowering"Jonas Schievink2021-01-211-12/+4
|
* Make use of `block_def_map` in body loweringJonas Schievink2021-01-211-4/+12
| | | | | Removes the `local_scope` hack from `Expander` in favor of tracking the `DefMap` in use during body lowering
* Add support for yiled keywordDaiki Ihara2021-01-151-0/+4
|
* prepare to publish el libro de arenaAleksey Kladov2021-01-142-2/+2
|
* Fixed typos in code commentsVincent Esche2021-01-091-2/+2
|
* Change <|> to $0 - RebaseKevaundray Wedderburn2021-01-071-15/+15
|
* Rename expr -> tail_exprAleksey Kladov2021-01-051-1/+1
|
* Merge #7021bors[bot]2020-12-241-47/+45
|\ | | | | | | | | | | | | | | 7021: Track labels in the HIR r=matklad a=Veykril Groundwork for #6966 Co-authored-by: Lukas Wirth <[email protected]>
| * Track labels in the HIRLukas Wirth2020-12-241-47/+45
| |
* | Implement const block inferenceLukas Wirth2020-12-231-0/+4
| |
* | Implement const pat inferenceLukas Wirth2020-12-231-3/+9
|/
* Update ungrammar for const block patternsLukas Wirth2020-12-231-1/+3
|