aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/data.rs
Commit message (Collapse)AuthorAgeFilesLines
* Merge #8048bors[bot]2021-03-171-17/+20
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-161-17/+20
| |
* | Use hir formatter moreoxalica2021-03-151-3/+9
| |
* | Introduce FunctionQualifier for hir::FunctionDataoxalica2021-03-151-5/+5
|/
* Delete `ContainerId`Jonas Schievink2021-03-091-2/+2
|
* Remove redundant clonesYoshua Wuyts2021-02-051-1/+1
|
* Intern `TypeRef`s in the containing `ItemTree`Jonas Schievink2021-02-041-7/+7
|
* Use block_def_map in body loweringJonas Schievink2021-02-031-1/+1
|
* Revert "Use block_def_map in body lowering"Jonas Schievink2021-02-021-1/+1
|
* Use block_def_map in body loweringJonas Schievink2021-02-011-1/+1
|
* Revert "Make use of `block_def_map` in body lowering"Jonas Schievink2021-01-211-1/+1
|
* Make use of `block_def_map` in body loweringJonas Schievink2021-01-211-1/+1
| | | | | Removes the `local_scope` hack from `Expander` in favor of tracking the `DefMap` in use during body lowering
* Refactor attributes API to allow handling cfg_attrJonas Schievink2020-12-181-2/+3
|
* Ignore extern items in incorrect-case checkJonas Schievink2020-12-101-0/+4
|
* Emit macro diagnostics when lowering bodiesJonas Schievink2020-11-301-1/+1
|
* Differentiate method/tymethod by determining 'defaultness'Zac Pullar-Strecker2020-10-081-0/+2
| | | | | | | | | Currently a method only has defaultness if it is a provided trait method, but this will change when specialisation is available and may need to become a concept known to hir. I opted to go for a 'fewest changes' approach given specialisation is still under development.
* Lower extern type alias as foreign opaque type.Charles Lew2020-09-161-0/+2
|
* Rename ra_hir_def -> hir_defAleksey Kladov2020-08-131-0/+278