Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge #7970 | bors[bot] | 2021-03-15 | 2 | -10/+68 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7970: Fix incorrect diagnostics for failing built in macros r=jonas-schievink a=brandondong **Reproduction:** 1. Use a built in macro in such a way that rust-analyzer fails to expand it. For example: **lib.rs** ``` include!("<valid file but without a .rs extension so it is not indexed by rust-analyzer>"); ``` 2. rust-analyzer highlights the macro call and says the macro itself cannot be resolved even though include! is in the standard library (unresolved-macro-call diagnostic). 3. No macro-error diagnostic is raised. **Root cause for incorrect unresolved-macro-call diagnostic:** 1. collector:collect_macro_call is able to resolve include! in legacy scope but the expansion fails. Therefore, it's pushed into unexpanded_macros to be retried with module scope. 2. include! fails at the resolution step in collector:resolve_macros now that it's using module scope. Therefore, it's retained in unexpanded_macros. 3. Finally, collector:finish tries resolving the remaining unexpanded macros but only with module scope. include! again fails at the resolution step so a diagnostic is created. **Root cause for missing macro-error diagnostic:** 1. In collector:resolve_macros, directive.legacy is None since eager expansion failed in collector:collect_macro_call. The macro_call_as_call_id fails to resolve since we're retrying in module scope. Therefore, collect_macro_expansion is not called for the macro and no macro-error diagnostic is generated. **Fix:** - In collector:collect_macro_call, do not add failing built-in macros to the unexpanded_macros list and immediately raise the macro-error diagnostic. This is in contrast to lazy macros which are resolved in collector::resolve_macros and later expanded in collect_macro_expansion where a macro-error diagnostic may be raised. Co-authored-by: Brandon <[email protected]> Co-authored-by: brandondong <[email protected]> | ||||
| * | Update crates/hir_def/src/nameres/collector.rs | brandondong | 2021-03-15 | 1 | -1/+1 |
| | | | | | | Co-authored-by: Jonas Schievink <[email protected]> | ||||
| * | Fix incorrect diagnositics for failing built in eager macros | Brandon | 2021-03-14 | 2 | -10/+68 |
| | | |||||
* | | Extend cfg_attr test | Jonas Schievink | 2021-03-13 | 1 | -0/+3 |
|/ | |||||
* | Prefer names from outer DefMap over extern prelude | Jonas Schievink | 2021-03-10 | 1 | -5/+11 |
| | |||||
* | Delete `ContainerId` | Jonas Schievink | 2021-03-09 | 1 | -12/+11 |
| | |||||
* | Stop using `ContainerId` in `AssocContainerId` | Jonas Schievink | 2021-03-09 | 1 | -3/+3 |
| | |||||
* | Use upstream cov-mark | Laurențiu Nicola | 2021-03-08 | 8 | -36/+31 |
| | |||||
* | For unresolved macros, hightlight only the last segment | Aleksey Kladov | 2021-02-28 | 1 | -33/+48 |
| | |||||
* | Restrict visibilities to the containing DefMap | Jonas Schievink | 2021-02-28 | 1 | -4/+17 |
| | |||||
* | is_visible_from_def_map: handle block expressions | Jonas Schievink | 2021-02-23 | 1 | -2/+2 |
| | |||||
* | Fix resolution of `self` module within blocks | Jonas Schievink | 2021-02-05 | 1 | -1/+9 |
| | |||||
* | Fix merging of `segment_index` in path resolution | Jonas Schievink | 2021-02-05 | 1 | -2/+5 |
| | |||||
* | Make `ModPath`'s representation private | Jonas Schievink | 2021-02-04 | 2 | -12/+12 |
| | |||||
* | Don't keep the parent DefMap alive via Arc | Jonas Schievink | 2021-02-04 | 3 | -13/+23 |
| | | | | | This seems like it could easily leak a lot of memory since we don't currently run GC | ||||
* | Use body lowering for block_def_map tests | Jonas Schievink | 2021-02-03 | 2 | -252/+2 |
| | | | | Removes the hacky and buggy custom lowering code | ||||
* | Fix resolution of `crate` paths from within blocks | Jonas Schievink | 2021-02-02 | 1 | -2/+2 |
| | | | | | They resolve to the crate root, not the DefMap's root module (which can be a block) | ||||
* | Use the right `DefMap` when looking up modules | Jonas Schievink | 2021-02-02 | 2 | -2/+16 |
| | |||||
* | Revert "Use block_def_map in body lowering" | Jonas Schievink | 2021-02-02 | 2 | -2/+252 |
| | |||||
* | Use body lowering for block_def_map tests | Jonas Schievink | 2021-02-01 | 2 | -252/+2 |
| | | | | Removes the hacky and buggy custom lowering code | ||||
* | Honor #![macro_use] in mod source files | Lukas Wirth | 2021-01-31 | 2 | -8/+23 |
| | |||||
* | Fix incorrect `FileId` and remove broken shortcut | Jonas Schievink | 2021-01-28 | 1 | -7/+6 |
| | | | | | Apparently we were using the crate's root file instead of the file containing the block. | ||||
* | block_def_map: add a few macro tests | Jonas Schievink | 2021-01-28 | 1 | -0/+63 |
| | |||||
* | Update `original_module` when ascending `DefMap`s | Jonas Schievink | 2021-01-28 | 1 | -2/+5 |
| | |||||
* | Fix legacy macro resolution in block expressions | Jonas Schievink | 2021-01-27 | 1 | -1/+4 |
| | |||||
* | Traverse parent DefMap for `super` paths | Jonas Schievink | 2021-01-25 | 2 | -9/+54 |
| | |||||
* | Intern block locations and handle them in ModuleId | Jonas Schievink | 2021-01-25 | 2 | -11/+55 |
| | |||||
* | Create all `ModuleId`s through a `DefMap` method | Jonas Schievink | 2021-01-25 | 2 | -35/+16 |
| | | | | | `ModuleId` needs to be able to represent blocks, and only the associated `DefMap` will know how to construct that `ModuleId` | ||||
* | Merge #7391 | bors[bot] | 2021-01-23 | 2 | -0/+24 |
|\ | | | | | | | | | | | | | | | 7391: Fix error when using "extern crate self as" r=kazatsuyu a=kazatsuyu Fix #6957 Co-authored-by: kazatsuyu <[email protected]> | ||||
| * | Add mark::check! and mark::hit! | kazatsuyu | 2021-01-22 | 2 | -0/+2 |
| | | |||||
| * | cargo fmt | kazatsuyu | 2021-01-22 | 1 | -2/+3 |
| | | |||||
| * | Fix error when using "extern crate self as" | kazatsuyu | 2021-01-22 | 2 | -0/+21 |
| | | |||||
* | | Obtain `ModuleId`'s `DefMap` through a method | Jonas Schievink | 2021-01-22 | 2 | -3/+3 |
|/ | |||||
* | Remove unnecessary annotations from tests | Jonas Schievink | 2021-01-21 | 1 | -4/+0 |
| | |||||
* | Add test for nameres in nested blocks | Jonas Schievink | 2021-01-21 | 1 | -0/+29 |
| | |||||
* | Add test that merges inner and outer names | Jonas Schievink | 2021-01-21 | 1 | -0/+25 |
| | |||||
* | Fall back to parent DefMaps when resolving paths | Jonas Schievink | 2021-01-21 | 1 | -0/+37 |
| | |||||
* | Add name resolution query for block expressions | Jonas Schievink | 2021-01-21 | 3 | -17/+108 |
| | |||||
* | Rename `CrateDefMap` to `DefMap` | Jonas Schievink | 2021-01-18 | 3 | -10/+10 |
| | |||||
* | prepare to publish el libro de arena | Aleksey Kladov | 2021-01-14 | 1 | -1/+1 |
| | |||||
* | Fixed typos in code comments | Vincent Esche | 2021-01-09 | 1 | -4/+4 |
| | |||||
* | Change <|> to $0 - Rebase | Kevaundray Wedderburn | 2021-01-07 | 1 | -2/+2 |
| | |||||
* | Emit diagnostics for unresolved item-level macros | Jonas Schievink | 2021-01-05 | 1 | -1/+32 |
| | |||||
* | Fixed old failed test due to new fixes | Edwin Cheng | 2020-12-28 | 1 | -2/+2 |
| | |||||
* | Don't think that /submod.rs is /mod.rs | Aleksey Kladov | 2020-12-23 | 1 | -1/+1 |
| | |||||
* | fixture -> ra_fixture | Jonas Schievink | 2020-12-19 | 2 | -4/+4 |
| | |||||
* | Test paths to derive macros | Jonas Schievink | 2020-12-19 | 1 | -2/+2 |
| | |||||
* | More accurate `#[derive]` parsing | Jonas Schievink | 2020-12-19 | 1 | -14/+14 |
| | | | | This now allows full paths to the derive macro | ||||
* | Merge #6935 | bors[bot] | 2020-12-18 | 1 | -5/+26 |
|\ | | | | | | | | | | | | | | | | | | | 6935: Don't look at attributes when lowering to ItemTree r=jonas-schievink a=jonas-schievink Resolves 2 `cfg_attr` FIXMEs bors r+ Co-authored-by: Jonas Schievink <[email protected]> | ||||
| * | Don't look at attributes when lowering to ItemTree | Jonas Schievink | 2020-12-18 | 1 | -5/+26 |
| | | | | | | | | Resolves 2 `cfg_attr` FIXMEs |