aboutsummaryrefslogtreecommitdiff
path: root/crates/hir
Commit message (Collapse)AuthorAgeFilesLines
...
| * | 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
|
* Remove documentation queryLukas Wirth2020-12-072-7/+7
|
* Add slightly more profiling detailsJonas Schievink2020-12-041-1/+3
|
* Place cursor correctly when completing assoc fns with selfAleksey Kladov2020-12-011-0/+1
|
* Type-safer API for dealing with parameter lists with optional selfAleksey Kladov2020-12-011-2/+9
|
* Publish diagnostics for macro expansion errorsJonas Schievink2020-11-271-1/+1
|
* Don't use raw identifiersLukas Wirth2020-11-261-2/+2
|
* Use `ExpandResult` instead of `MacroResult`Jonas Schievink2020-11-261-1/+1
| | | | `MacroResult` is redundant
* Rename `parse_macro` to `parse_macro_expansion`Jonas Schievink2020-11-241-1/+1
| | | | This does not parse macros, it expands a macro and parses the *result*
* hir_expand: propagate expansion errorsJonas Schievink2020-11-241-2/+2
|
* Merge #6553bors[bot]2020-11-172-8/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6553: Auto imports in completion r=matklad a=SomeoneToIgnore ![completion](https://user-images.githubusercontent.com/2690773/99155339-ae4fb380-26bf-11eb-805a-655b1706ce70.gif) Closes https://github.com/rust-analyzer/rust-analyzer/issues/1062 but does not handle the completion order, since it's a separate task for https://github.com/rust-analyzer/rust-analyzer/issues/4922 , https://github.com/rust-analyzer/rust-analyzer/issues/4922 and maybe something else. 2 quirks in the current implementation: * traits are not auto imported during method completion If I understand the current situation right, we cannot search for traits by a **part** of a method name, we need a full name with correct case to get a trait for it. * VSCode (?) autocompletion is not as rigid as in Intellij Rust as you can notice on the animation. Intellij is able to refresh the completions on every new symbol added, yet VS Code does not query the completions on every symbol for me. With a few debug prints placed in RA, I've observed the following behaviour: after the first set of completion suggestions is received, next symbol input does not trigger a server request, if the completions contain this symbol. When more symbols added, the existing completion suggestions are filtered out until none are left and only then, on the next symbol it queries for completions. It seems like the only alternative to get an updated set of results is to manually retrigger it with Esc and Ctrl + Space. Despite the eerie latter bullet, the completion seems to work pretty fine and fast nontheless, but if you have any ideas on how to make it more smooth, I'll gladly try it out. Co-authored-by: Kirill Bulatov <[email protected]>
| * Remove query aliasesKirill Bulatov2020-11-161-1/+1
| |
| * Use imports_locatorKirill Bulatov2020-11-161-1/+1
| |
| * Add imports in auto completionKirill Bulatov2020-11-162-8/+3
| |
* | Fill the diagnostic code field in publish_diagnosticsLukas Wirth2020-11-171-1/+3
|/
* Remove more unreachable pubsAleksey Kladov2020-11-024-16/+12
|
* Fix case where non FnOnce variables is marked callableGrayJack2020-10-261-1/+1
|
*-. Merge #6251 #6310bors[bot]2020-10-231-2/+23
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6251: Semantic Highlight: Add Callable modifier for variables r=matklad a=GrayJack This PR added the `HighlightModifier::Callable` variant and assigned it to variables and parameters that are fn pointers, closures and implements FnOnce trait. This allows to colorize these variables/parameters when used in call expression. 6310: Rewrite algo::diff to support insertion and deletion r=matklad a=Veykril This in turn also makes `algo::diff` generate finer diffs(maybe even minimal diffs?) as insertions and deletions aren't always represented as as replacements of parent nodes now. Required for #6287 to go on. Co-authored-by: GrayJack <[email protected]> Co-authored-by: Lukas Wirth <[email protected]>
| * | Add Callable modifier for variables that implements FnonceGrayJack2020-10-161-2/+23
| | |
* | | Diagnose #[cfg]s in bodiesJonas Schievink2020-10-231-0/+1
| |/ |/|
* | Rename UnconfiguredCode -> InactiveCodeJonas Schievink2020-10-201-1/+1
| |
* | Add a (hint) diagnostic for unconfigured itemsJonas Schievink2020-10-201-1/+1
| |
* | More type safety around namesAleksey Kladov2020-10-201-2/+2
| |
* | Rename declaration_name -> display_nameAleksey Kladov2020-10-201-2/+2
|/ | | | | | | | Declaration names sounds like a name of declaration -- something you can use for analysis. It empathically isn't, and is just a label displayed in various UI. It's important not to confuse the two, least we accidentally mix semantics with UI (I believe, there's already a case of this in the FamousDefs at least).
*-. Merge #6130 #6135bors[bot]2020-10-122-2/+25
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6130: Items case quick fix (snake_case / UPPER_SNAKE_CASE / CamelCase) r=matklad a=popzxc Resolves #4598. After a third try, it finally works. Boy, it appeared tougher than it seemed. Initially I thought like "Ha, `rustc` already tells us where idents are named incorrectly. It shouldn't be that hard, should it?". Well, the problems with the information provided by `rustc` appeared shortly: - `rustc` warnings are `flycheck` warnings, which are slightly aside from our diagnostics with fixes. When we map flycheck diagnostic to LSP, we can convert it into a fix, but only if it's marked as `Applicability::MachineApplicable`. Name case fix is marked `Applicability::MaybeIncorrect`, and for a reason: it only suggest to rename symbol under cursor, without tracking any references. - Warning spawned by `rustc` are identified by string labels rather than enum. It means that if one day the diagnostic will be renamed in `rustc`, `rust-analyzer` code will still compile, but won't find the required diagnostic by name anymore. If by chance this will happen when some unlucky guy will decide to create their first pull request, they'll be confused by suddenly failing tests (likely) not related to their changes. - Even if we'll try to build fixes atop of `rustc` warnings, we'll have to do it in the `rust_analyzer::diagnostics::to_proto` module, which is far less convenient for that matter than `ide` crate. That's why I decided that it's worth a separate `rust-analyzer` diagnostic, which will implement `DiagnosticWithFix` trait. After that, I discovered that currently `hir_ty::diagnostics` only check `DefWithBody` types, like function bodies. I had to add support for diagnostics which look at any `ModuleDef`. And of course, since I'd added a lot of new functionality, it required extensive testing. That explains why the diff is so big for a (looking) relatively small feature. I hope that this PR doesn't only add a small feature, but also creates a base for building another features. ## Example: ![case_quick_fix](https://user-images.githubusercontent.com/12111581/95008475-e07ee780-0622-11eb-9978-62a9ea0e7782.gif) P.S. My eyes were bleeding when I had to write the code for the example... 6135: when generating new function, focus on return type instead of body r=matklad a=bnjjj I made a little change when we use the assist to generate a new function, instead of focusing on the function body, it will focus on return type Co-authored-by: Igor Aleksanov <[email protected]> Co-authored-by: Benjamin Coenen <[email protected]>
| * | Apply case check diagnostic to impl itemsIgor Aleksanov2020-10-121-1/+2
| | |
| * | Add fix for incorrect case diagnosticIgor Aleksanov2020-10-122-26/+17
| | |
| * | Create basic support for names case checks and implement function name case ↵Igor Aleksanov2020-10-121-0/+31
| | | | | | | | | | | | check
* | | Merge #6195bors[bot]2020-10-121-1/+5
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6195: Shorten iterators in associated params r=matklad a=SomeoneToIgnore Applies the same iterator-shortening logic to the iterator associated types, recursively. Before: ![image](https://user-images.githubusercontent.com/2690773/95662735-e6ecf200-0b41-11eb-8e54-28493ad4e644.png) After: <img width="1192" alt="image" src="https://user-images.githubusercontent.com/2690773/95662894-e9038080-0b42-11eb-897d-527571ccac58.png"> Co-authored-by: Kirill Bulatov <[email protected]>
| * | Also replace the associated types with iterKirill Bulatov2020-10-101-1/+5
| | |
* | | Merge #5917bors[bot]2020-10-121-0/+17
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5917: Add a command to open docs for the symbol under the cursor r=matklad a=zacps #### Todo - [ ] Decide if there should be a default keybind or context menu entry - [x] Figure out how to get the documentation path for methods and other non-top-level defs - [x] Design the protocol extension. In future we'll probably want parameters for local/remote documentation URLs, so that should maybe be done in this PR? - [x] Code organisation - [x] Tests Co-authored-by: Zac Pullar-Strecker <[email protected]>
| * | Remove methodowner & fix formattingZac Pullar-Strecker2020-10-082-40/+3
| | |
| * | Rebase fixesZac Pullar-Strecker2020-10-081-1/+1
| | |
| * | Change Option::Some bug to a fixme noteZac Pullar-Strecker2020-10-081-0/+1
| | | | | | | | | | | | IMO this is too much work to be worth fixing at the moment.
| * | Differentiate method/tymethod by determining 'defaultness'Zac Pullar-Strecker2020-10-082-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.