aboutsummaryrefslogtreecommitdiff
path: root/crates/hir
Commit message (Collapse)AuthorAgeFilesLines
* Proper handling $crate Take 2Edwin Cheng2021-01-071-2/+2
|
* Merge #7068bors[bot]2021-01-031-1/+14
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7068: Add VSCode command to view the hir of a function body r=theotherphil a=theotherphil Will fix https://github.com/rust-analyzer/rust-analyzer/issues/7061. Very rough initial version just to work out where I needed to wire everything up. @matklad would you be happy merging a hir visualiser of some kind? If so, do you have any thoughts on what you'd like it show, and how? I've spent very little time on this thus far, so I'm fine with throwing away the contents of this PR, but I want to avoid taking the time to make this more polished/interactive/useful only to discover that no-one else has any interest in this functionality. ![image](https://user-images.githubusercontent.com/1974256/103236081-bb58f700-493b-11eb-9d12-55ae1b870f8f.png) Co-authored-by: Phil Ellison <[email protected]>
| * Use stdx::format_to instead of writelnPhil Ellison2021-01-031-4/+4
| |
| * Address review suggestion, fix tidy testsPhil Ellison2021-01-011-3/+15
| |
| * Initial implementation of view-hir commandPhil Ellison2020-12-281-1/+2
| |
* | Merge #7115bors[bot]2021-01-032-43/+36
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7115: Migrate HasSource::source to return Option r=matklad a=nick96 I've made a start on fixing #6913 based on the provided work plan, migrating `HasSource::source` to return an `Option`. The simple cases are migrated but there are a few that I'm unsure exactly how they should be handled: - Logging the processing of functions in `AnalysisStatsCmd::run`: In verbose mode it includes the path to the module containing the function and the syntax range. I've handled this with an if-let but would it be better to blow up here with `expect`? I'm not 100% on the code paths but if we're processing a function definition then the source should exist. I've handled `source()` in all code paths as `None` being a valid return value but are there some cases where we should just blow up? Also, all I've done is bubble up the returned `None`s, there may be some places where we can recover and still provide something. Co-authored-by: Nick Spain <[email protected]> Co-authored-by: Nick Spain <[email protected]>
| * | Fix ConstParam HasSource impl and implement TryToNav not NavNick Spain2021-01-021-2/+2
| | |
| * | Remove old_source now we've fully migratedNick Spain2021-01-021-68/+0
| | | | | | | | | | | | Fixes #6913
| * | source_old -> source for cases that can be handled by simple bubblingNick Spain2021-01-021-2/+1
| | |
| * | HasSource::source_old -> HasSource::source for places where proc-macros were ↵Nick Spain2021-01-021-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | special cased In #6901 some special case handling for proc-macros was introduced to prevent panicing as they have no AST. Now the new HasSource::source method is used that returns an option. Generally this was a pretty trivial change, the only thing of much interest is that `hir::MacroDef` now implements `TryToNav` not `ToNav` as this allows us to handle `HasSource::source` now returning an option.
| * | Mark HasSource::source_old as deprecated but allow at all call sitesNick Spain2021-01-022-0/+3
| | |
| * | Implement new HasSource::source for all implementors of HasSourceNick Spain2021-01-021-0/+66
| | |
| * | HasSource::source -> HasSource::source_oldNick Spain2021-01-022-17/+17
| | | | | | | | | | | | To start migrating HasSource::source to return an Option.
* | | Implement HasAttrs for Type-, Const- and LifetimeParamLukas Wirth2021-01-021-9/+10
| | |
* | | Impl HasAttrs for GenericParamLukas Wirth2021-01-013-9/+37
|/ /
* | Merge #7080bors[bot]2021-01-017-18/+70
|\ \ | | | | | | | | | | | | | | | | | | | | | 7080: Implement ConstParams for HIR r=Veykril a=Veykril r? @flodiebold Co-authored-by: Lukas Wirth <[email protected]>
| * | Add ConstParams to the HIRLukas Wirth2021-01-017-18/+70
| |/
* / Update crateskjeremy2020-12-301-1/+1
|/
* Merge #7021bors[bot]2020-12-245-12/+85
|\ | | | | | | | | | | | | | | 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-245-12/+85
| |
* | Prevent multiple incorrect case diagnostics in functionsunexge2020-12-231-3/+3
|/
* Merge #6964bors[bot]2020-12-221-0/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6964: Add full pattern completions for Struct and Variant patterns r=matklad a=Veykril Just gonna call it full pattern completion as pattern completion is already implemented in a sense by showing idents in pattern position. What this does is basically complete struct and variant patterns where applicable(function params, let statements and refutable pattern locations). This does not replace just completing the corresponding idents of the structs and variants, instead two completions are shown for these, a completion for the ident itself and a completion for the pattern(if the pattern make sense to be used that is). I figured in some cases one would rather type out the pattern manually if it has a lot of fields but you only care about one since this completion would cause one more work in the end since you would have to delete all the extra matched fields again. These completions are tagged as `CompletionKind::Snippet`, not sure if that is the right one here. <details> <summary>some gifs</summary> ![dx2lxgzhj3](https://user-images.githubusercontent.com/3757771/102719967-6987ef80-42f1-11eb-8ae0-8aff53777860.gif) ![EP2E7sJLkB](https://user-images.githubusercontent.com/3757771/102785777-c7264580-439e-11eb-8a64-f142e19fb65b.gif) ![JMNHHWknr9](https://user-images.githubusercontent.com/3757771/102785796-d1e0da80-439e-11eb-934b-218ada31b51c.gif) </details> Co-authored-by: Lukas Wirth <[email protected]>
| * Add completions for patternsLukas Wirth2020-12-201-0/+4
| |
* | Merge #6921bors[bot]2020-12-201-1/+0
|\ \ | |/ |/| | | | | | | | | | | 6921: Higher-ranked trait bounds for where clauses r=flodiebold a=Veykril There is a slight problem with this which is also noted in a FIXME now but `LifetimeParameters` of these ForLifetime where clauses allocate the lifetimes in the corresponding arena as if they were lifetimes of the item itself and not just the clause they belong to. I wasn't entirely sure what I could do about this but given nothing really uses lifetimes like that currently I figured it might be fine? Open to suggestions for that problem. Co-authored-by: Lukas Wirth <[email protected]>
| * Remove obsolete FIXMELukas Wirth2020-12-171-1/+0
| |
* | Align code_model name with ungrammarAleksey Kladov2020-12-207-56/+51
| |
* | Merge #6901bors[bot]2020-12-181-0/+6
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 6901: Temp fixes panic caused by no ast for proc-macro r=maklad a=edwin0cheng There are some panic when hover/goto definition for proc-macro. It is because in current design, we don't have `ast-node` for proc-macro and then it trigger [this](https://github.com/rust-analyzer/rust-analyzer/blob/479d1f7eec22c3564867223e2093f14774092528/crates/hir/src/has_source.rs#L116) line to panic. This PR is a temp fix for all of these similar to https://github.com/rust-analyzer/rust-analyzer/blob/bd4c352831662762ee7a66da77ec9adf623b0a0a/crates/completion/src/render/macro_.rs#L42 Co-authored-by: Edwin Cheng <[email protected]>
| * | Temp fixes panic caused by no ast for proc-macroEdwin Cheng2020-12-181-0/+6
| | |
* | | Minor API cleanupAleksey Kladov2020-12-171-4/+2
| | |
* | | Make `Attrs::from_attrs_owner` privateJonas Schievink2020-12-171-0/+1
| |/ |/|
* | Rename ImplDef -> ImplAleksey Kladov2020-12-175-21/+21
| | | | | | | | | | | | We used to have `Def` suffix for all symbols, but we moved off from that. `FunctionDef` isn't better than `Function`. Looks like we've forgot to change `Impl` though!
* | decl_check: don't pass `db` around so oftenJonas Schievink2020-12-171-2/+8
| |
* | Remove `module_lang_items`Jonas Schievink2020-12-161-2/+2
| | | | | | | | | | It isn't used anywhere except in `crate_lang_items`. Remove it to slightly reduce memory usage and simplify the code.
* | Merge #6896bors[bot]2020-12-161-11/+6
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6896: Node-ify lifetimes r=jonas-schievink a=Veykril Let's see if this passes the tests 🤞 Depends on https://github.com/rust-analyzer/ungrammar/pull/15 Co-authored-by: Jonas Schievink <[email protected]> Co-authored-by: Jonas Schievink <[email protected]> Co-authored-by: Lukas Wirth <[email protected]>
| * | Node-ify lifetimesLukas Wirth2020-12-161-11/+6
| | |
* | | Merge #6897bors[bot]2020-12-163-5/+5
|\| | | |/ |/| | | | | | | | | | | | | | | | | | | | | 6897: Basic support for macros 2.0 r=jonas-schievink a=jonas-schievink This adds support for (built-in-only) macros 2.0, and removes some hacks used for builtin derives, which are declared via macros 2.0 in libcore. First steps for https://github.com/rust-analyzer/rust-analyzer/issues/2248. Blocked on https://github.com/rust-analyzer/ungrammar/pull/16. Co-authored-by: Jonas Schievink <[email protected]> Co-authored-by: Jonas Schievink <[email protected]>
| * Make macro def krate mandatoryJonas Schievink2020-12-152-2/+2
| | | | | | | | Refactors builtin derive support to go through proper name resolution
| * Basic support for decl macros 2.0Jonas Schievink2020-12-152-3/+3
| |
* | Merge #6879bors[bot]2020-12-151-2/+2
|\ \ | |/ |/| | | | | | | | | | | 6879: Change HasChildSource::ChildId assoc item to generic param r=matklad a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * Change HasChildSource::ChildId assoc item to generic paramLukas Wirth2020-12-151-2/+2
| |
* | Move to upstream `macro_rules!` modelJonas Schievink2020-12-153-4/+7
|/
* Add LifetimeParam resolving to SemanticsLukas Wirth2020-12-145-13/+98
|
* Merge #6818bors[bot]2020-12-122-9/+47
|\ | | | | | | | | | | | | | | | | | | 6818: Add Lifetimes to the HIR r=matklad a=Veykril This doesn't handle resolve yet as I don't know yet how that will be used. I'll get to that once I start moving the lifetime reference PR to the hir. This also adds a new `hir` name type for lifetimes and labels, `hir::LifetimeName`. Co-authored-by: Lukas Wirth <[email protected]>
| * Add Lifetimes to the HIRLukas Wirth2020-12-112-9/+47
| |
* | Improve code structureAleksey Kladov2020-12-112-25/+23
|/ | | | | Make sure that there's only one entry point, analyze, remove awkard analyzer2 name
* Merge #6769bors[bot]2020-12-101-1/+1
|\ | | | | | | | | | | | | | | | | | | 6769: Add native "remove this semicolon" diagnostics r=matklad a=ivan770 Closes #6739 ![demo2](https://user-images.githubusercontent.com/14003886/101530533-b76c3180-399a-11eb-9d18-5c8457721655.gif) Co-authored-by: ivan770 <[email protected]>
| * Format codeivan7702020-12-081-1/+1
| |
| * Remove this semicolonivan7702020-12-081-1/+1
| |
* | Make `original_range` a method on `InFile<&SyntaxNode>`Jonas Schievink2020-12-082-73/+5
|/
* Remove hir_def/docs.rs moduleLukas Wirth2020-12-072-3/+5
|