aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-162-47/+63
| |_|/ |/| |
* | | Merge #7970bors[bot]2021-03-153-11/+69
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.rsbrandondong2021-03-151-1/+1
| | | | | | | | | Co-authored-by: Jonas Schievink <[email protected]>
| * | Fix incorrect diagnositics for failing built in eager macrosBrandon2021-03-142-10/+68
| | |
| * | Fix spelling errorBrandon2021-03-141-1/+1
| |/
* | Enable thread-local coverage marksLaurențiu Nicola2021-03-151-1/+1
| |
* | Simplify source maps for fieldsAleksey Kladov2021-03-152-18/+25
| |
* | Create TraitEnvironment through a queryFlorian Diebold2021-03-131-0/+10
| |
* | Handle `cfg_attr` gating multiple attributesJonas Schievink2021-03-131-29/+19
| |
* | Extend cfg_attr testJonas Schievink2021-03-131-0/+3
| |
* | Simplify hir_def TestDBJonas Schievink2021-03-131-7/+2
| |
* | Remove `ItemTree::source`Jonas Schievink2021-03-121-12/+0
|/ | | | `HasSource` should be used instead
* Prefer names from outer DefMap over extern preludeJonas Schievink2021-03-101-5/+11
|
* Stop fetching ItemTrees for no reasonJonas Schievink2021-03-101-14/+1
|
* Compilation speedAleksey Kladov2021-03-091-1/+1
|
* Delete `ContainerId`Jonas Schievink2021-03-096-72/+45
|
* Stop using `ContainerId` in `AssocContainerId`Jonas Schievink2021-03-093-7/+7
|
* Check ancestor maps when computing traits in scopeJonas Schievink2021-03-091-0/+10
|
* Remove `item_scope` field from `Body`Jonas Schievink2021-03-093-175/+6
|
* Use `body.block_scopes` in `ChildBySource`Jonas Schievink2021-03-091-1/+5
|
* Store inner `BlockId`s in `Body`Jonas Schievink2021-03-092-1/+6
|
* Change `ChildBySource` to allow reusing `DynMap`Jonas Schievink2021-03-092-32/+18
|
* Use upstream cov-markLaurențiu Nicola2021-03-0821-73/+58
|
* Do not process indexed values more than onceKirill Bulatov2021-03-081-29/+31
|
* Deduplicate search_dependencies resultsKirill Bulatov2021-03-081-18/+19
|
* Rename a few `crate_def_map`s to `def_map`Jonas Schievink2021-03-063-16/+16
| | | | These could all be block `DefMap`s instead of crate-level `DefMap`s
* Make two calls virtualLaurențiu Nicola2021-03-051-1/+1
|
* Fix some warningsLaurențiu Nicola2021-03-051-1/+1
|
* Remove incorrect broken testJonas Schievink2021-03-031-24/+0
| | | | | `Struct` cannot be named at all in that position, since `super` doesn't resolve to the block scope
* Fix `find_path` when inner items are presentJonas Schievink2021-03-014-28/+88
|
* Merge #7778bors[bot]2021-03-011-2/+11
|\ | | | | | | | | | | | | | | 7778: Fix lowering trailing self paths in UseTrees r=Veykril a=Veykril Noticed that hovering over `self` in a use tree like `use foo::bar::{self}` showing documentation and such for the current module instead of `bar`. Co-authored-by: Lukas Wirth <[email protected]>
| * Fix lowering trailing self paths in UseTreesLukas Wirth2021-02-281-2/+11
| |
* | Merge #7804bors[bot]2021-02-283-79/+73
|\ \ | | | | | | | | | | | | | | | | | | | | | 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-283-79/+73
| |/
* | For unresolved macros, hightlight only the last segmentAleksey Kladov2021-02-285-92/+147
| |
* | Restrict visibilities to the containing DefMapJonas Schievink2021-02-282-4/+46
|/
* is_visible_from_def_map: handle block expressionsJonas Schievink2021-02-233-9/+37
|
* Wrap `BuiltinType` in code modelJonas Schievink2021-02-111-0/+1
|
* Remove unneeded returnJonas Schievink2021-02-091-2/+2
|
* Remove `pub`Jonas Schievink2021-02-091-2/+2
|
* Use `block_def_map` in `Resolver`Jonas Schievink2021-02-091-118/+97
| | | | | | | This required a few changes to not bail out immediately if a `ModuleScope` doesn't resolve a path. The `LocalItemsScope` hack is now removed.
* Teach `find_path` about inner itemsJonas Schievink2021-02-091-10/+91
|
* Add another block def map testJonas Schievink2021-02-091-0/+27
|
* Make `with_ancestor_maps` publicJonas Schievink2021-02-091-1/+1
|
* Add `TestDB::module_at_position`Jonas Schievink2021-02-092-104/+99
|
* 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-052-7/+17
|
* Remove redundant clonesYoshua Wuyts2021-02-053-3/+3
|
* Fix merging of `segment_index` in path resolutionJonas Schievink2021-02-051-2/+5
|