aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src
Commit message (Collapse)AuthorAgeFilesLines
*-. Merge #6331 #6342bors[bot]2020-10-2421-30/+57
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6331: correct hover text for items with doc attribute with raw strings r=matklad a=JoshMcguigan Fixes #6300 by improving the handling of raw string literals in attribute style doc comments. This still has a bug where it could consume too many `"` at the start or end of the comment text, just as the original code had. Not sure if we want to fix that as part of this PR or not? If so, I think I'd prefer to add a unit test for either the `as_simple_key_value` function (I'm not exactly sure where this would belong / how to set this up) or create a `fn(&SmolStr) -> &SmolStr` to unit test by factoring out the `trim` operations from `as_simple_key_value`. Thoughts on this? 6342: Shorter dependency chain r=matklad a=popzxc Continuing implementing suggestions from the `Completion refactoring` zulip thread. This PR does the following: - Removes dependency of `completions` on `assists` by moving required functionality into `ide_db`. - Moves completely `call_info` crate into `ide_db` as it looks like it fits perfect there. - Adds a bunch of new tests and docs. - Adds the re-export of `base_db` to the `ide_db` and removes direct dependency on `base_db` from other crates. The last point is controversial, I guess, but I noticed that in places where `ide_db` is used, `base_db` is also *always* used. Thus I think the dependency on the `base_db` is implied by the fact of `ide_db` interfaces, and thus it makes sense to just provide `base_db` out of the box. Co-authored-by: Josh Mcguigan <[email protected]> Co-authored-by: Igor Aleksanov <[email protected]>
| | * Re-export base_db from ide_dbIgor Aleksanov2020-10-2420-26/+26
| | |
| | * Make call_info a part of ide_dbIgor Aleksanov2020-10-243-4/+4
| |/ |/|
| * correct hover for items with doc attribute with raw stringsJosh Mcguigan2020-10-241-0/+27
| |
| |
| \
*-. \ Merge #6251 #6310bors[bot]2020-10-235-1/+45
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| | * | Rewrite algo::diff to support insertion and deletionLukas Wirth2020-10-221-1/+1
| | | |
| * | | Add tests for callable modifierGrayJack2020-10-212-0/+38
| | | |
| * | | Add Callable modifier for variables that implements FnonceGrayJack2020-10-161-1/+1
| | | |
| * | | Add HighlightModifier::Callable and add it for localsGrayJack2020-10-162-0/+6
| | | |
* | | | Merge #6324bors[bot]2020-10-232-41/+47
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | 6324: Improve #[cfg] diagnostics r=jonas-schievink a=jonas-schievink Unfortunately I ran into https://github.com/rust-analyzer/rust-analyzer/issues/4058 while testing this on https://github.com/nrf-rs/nrf-hal/, so I didn't see much of it in action yet, but it does seem to work. Co-authored-by: Jonas Schievink <[email protected]> Co-authored-by: Jonas Schievink <[email protected]>
| * | | Emit better #[cfg] diagnosticsJonas Schievink2020-10-222-41/+47
| | |/ | |/|
* | | Merge #6326bors[bot]2020-10-221-1/+28
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6326: hide paramater inlay hints for cloned vars if applicable r=SomeoneToIgnore a=Veykril This causes `foo.clone()` parameters to be handled as if they were just `foo` parameters for inlay hint logic. Fixes #6315 Co-authored-by: Lukas Wirth <[email protected]>
| * | | Hide paramater inlay hints for cloned vars if applicableLukas Wirth2020-10-221-1/+28
| |/ /
* / / Fix opening module documentation opening parent documentation insteadZac Pullar-Strecker2020-10-221-4/+24
|/ / | | | | | | | | | | The whole path/URL joining code is kind of ugly which is what led to this, but at the same time I don't really want to rewrite it right now...
* | Merge #6299bors[bot]2020-10-202-58/+63
|\ \ | | | | | | | | | | | | | | | | | | | | | 6299: Diagnose items that are #[cfg]d out r=jonas-schievink a=jonas-schievink This emits a hint-level diagnostic with `Unnecessary` tag to "gray out" any items whose `#[cfg]` attributes remove the item before name resolution. Co-authored-by: Jonas Schievink <[email protected]>
| * | Fixup botched renameJonas Schievink2020-10-201-1/+1
| | |
| * | Add a (hint) diagnostic for unconfigured itemsJonas Schievink2020-10-201-1/+15
| | |
| * | Simplify diagnostic construction, add unused fieldJonas Schievink2020-10-202-57/+48
| | |
* | | Don't rely on display names in inlay_hintsAleksey Kladov2020-10-201-6/+13
|/ /
* | More type safety around namesAleksey Kladov2020-10-201-3/+2
| |
* | Rename declaration_name -> display_nameAleksey Kladov2020-10-205-9/+8
| | | | | | | | | | | | | | | | 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).
* | Extract call_info and completion into separate cratesIgor Aleksanov2020-10-1827-9244/+9
| |
* | Complete methods when receiver is a macroAleksey Kladov2020-10-171-0/+15
| |
* | Scan all ancestors for the impl trait block checkIgor Aleksanov2020-10-172-14/+17
| |
* | Allow hints after 'fn' keyword if it's an impl trait blockIgor Aleksanov2020-10-173-4/+37
| |
* | Add test for new pattern functionsIgor Aleksanov2020-10-171-0/+8
| |
* | Improve test_no_completions_required testIgor Aleksanov2020-10-171-1/+17
| |
* | Remove redundant completionsIgor Aleksanov2020-10-173-4/+70
|/
* Clarify the names one more timeAleksey Kladov2020-10-154-8/+8
|
* More idiomatic classification APIAleksey Kladov2020-10-156-18/+18
|
* More clarificationsAleksey Kladov2020-10-154-5/+5
|
* Unconfuse expression and pattern field init shorthandsAleksey Kladov2020-10-151-1/+1
|
* Clarify NameClass names a bitAleksey Kladov2020-10-154-4/+4
|
* Merge #6242bors[bot]2020-10-152-91/+210
|\ | | | | | | | | | | | | | | | | 6242: Diagnost shorthand in patterns r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * Move field_shorthand to a separate moduleAleksey Kladov2020-10-152-196/+211
| |
| * Diagnose shorthand in patterns as wellAleksey Kladov2020-10-151-5/+94
| |
| * flattenAleksey Kladov2020-10-151-26/+33
| |
| * Prepare for pat_field_shorthandAleksey Kladov2020-10-151-5/+13
| |
* | Merge #6234bors[bot]2020-10-151-1/+24
|\ \ | |/ |/| | | | | | | | | | | | | | | | | 6234: Fix hover over field pattern shorthand r=matklad a=Vlad-Shcherbina Instead of the information about the field, it now shows the information about the local. Fixes #6146 Co-authored-by: Vlad Shcherbina <[email protected]>
| * Fix hover over field pattern shorthandVlad Shcherbina2020-10-141-1/+24
| | | | | | | | | | | | | | Instead of the information about the field, it now shows the information about the local. Fixes #6146
* | Merge #6231bors[bot]2020-10-143-190/+231
|\ \ | |/ |/| | | | | | | | | | | 6231: Factor macro_rules and format-string highlighting out into submodules r=Veykril a=Veykril This moves `format`-like macro string highlighting and macro_rules highlight skipping out of the main module. Co-authored-by: Lukas Wirth <[email protected]>
| * Default::default the highlightersLukas Wirth2020-10-143-18/+7
| |
| * Factor macro_rules! highlighting outLukas Wirth2020-10-142-117/+154
| |
| * Factor format string highlighting outLukas Wirth2020-10-142-75/+90
| |
* | Add docs for dbgr and callLaurențiu Nicola2020-10-141-0/+2
| |
* | Bump pulldown-cmarkLaurențiu Nicola2020-10-131-11/+14
|/
*-. Merge #6130 #6135bors[bot]2020-10-124-5/+169
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * | Use TextRange::contains_inclusive in fixes checkIgor Aleksanov2020-10-122-5/+4
| | |
| * | Keep SyntaxNodePtr::range privateIgor Aleksanov2020-10-121-1/+4
| | |
| * | Fix code style issuesIgor Aleksanov2020-10-121-1/+0
| | |