Commit Graph

18504 Commits

Author SHA1 Message Date
bors[bot] 950efff5c6 Merge #9780
9780: Support exclusive_range_pattern r=matklad a=lf-

Fix #9779

Co-authored-by: Jade <software@lfcode.ca>
2021-08-04 18:12:37 +00:00
bors[bot] ec753847bd Merge #9788
9788: fix: extract_function does not move locals defined outside of loops r=Veykril a=Veykril

Fixes #8234

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-04 18:03:41 +00:00
Lukas Wirth 01413dd7d4 extract_function does not move locals defined outside of loops 2021-08-04 20:00:45 +02:00
Lukas Wirth f55441f7ed Document reference highlighting mod 2021-08-04 19:00:52 +02:00
bors[bot] 294cfd61c7 Merge #9786
9786: fix: Fix detection of macro file in inactive-code diag r=jonas-schievink a=jonas-schievink

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/9753

`HirFileId::expansion_info` can return `None` for builtin macros or if there's an error in the macro call or definition, so add a `HirFileId::is_macro` method that checks the right thing.

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-08-04 16:04:35 +00:00
Jonas Schievink 260936d0b7 Fix detection of macro file in inactive-code diag 2021-08-04 18:02:45 +02:00
Jade 775670e32c Split the test 2021-08-04 03:01:48 -07:00
bors[bot] 1b02cafa43 Merge #9734
9734: semantic highlighting: add reference hlmod r=matklad a=jhgg

This PR adds the "reference" highlight modifier! 

I basically went around and looked for `HlMod::Mutable` to find the callsites to add a reference. I think these all make sense! 

Co-authored-by: Jake Heinz <jh@discordapp.com>
Co-authored-by: Jake <jh@discordapp.com>
2021-08-04 09:37:30 +00:00
Jake Heinz 19b1d505db match style 2021-08-04 06:14:58 +00:00
Jake Heinz 44726b6ca3 fix + update expects 2021-08-04 06:12:41 +00:00
Jake e01ff775ae Apply suggestions from code review
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-03 23:07:46 -07:00
Jade b90ed92a5c Support exclusive_range_pattern
Fix #9779
2021-08-03 21:36:29 -07:00
Jade e3a67ccec6 tree-wide: fix rustdoc warnings, add some links 2021-08-03 21:34:20 -07:00
bors[bot] 8a8431133e Merge #9775
9775: internal: extract_assist is aware of the expression owner r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-03 18:48:43 +00:00
Lukas Wirth 29c4ae6f9a extract_assist is aware of the expression owner 2021-08-03 20:47:51 +02:00
Jake 28b6a30752 Update crates/ide/src/syntax_highlighting/highlight.rs
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-03 09:54:27 -07:00
bors[bot] 09ec0a15fa Merge #9773
9773: internal: Improve `extract_function` assist r=Veykril a=Veykril

- fix: It doesn't try to overwrite parts of selected comments any longer
- fix: It doesn't wrap tail expressions and return types in a result or option unnecessarily
- feat?: It now adds a `const` modifier to the created function if extract somethings from a const context 

Fixes #7840

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-03 16:53:12 +00:00
Lukas Wirth 9edaf0cad8 extract_function is const aware 2021-08-03 18:43:28 +02:00
Lukas Wirth e62ce6f61a Reorganize functions in extract_function assist 2021-08-03 18:24:33 +02:00
Lukas Wirth 027a99fc70 Do no tear comments apart in extract_function assist 2021-08-03 17:39:49 +02:00
bors[bot] 00c8cab20b Merge #9765
9765: internal: Introduce TypeInfo r=Veykril a=Veykril



Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-03 15:32:51 +00:00
Lukas Wirth b96f1adf5c Give TypeInfo fields and methods more appropriate names 2021-08-03 17:28:51 +02:00
Lukas Wirth 8afa2722b2 Revise TypeInfo::ty usage 2021-08-03 17:24:43 +02:00
Lukas Wirth 25ff7171c4 Introduce TypeInfo 2021-08-03 16:41:53 +02:00
bors[bot] 4b0c97668c Merge #9772
9772: feat: filter out duplicate macro completions r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-03 14:37:25 +00:00
Aleksey Kladov 2f9273633b feat: filter out duplicate macro completions
closes #9303
2021-08-03 17:36:06 +03:00
bors[bot] 2da06c1a2a Merge #9771
9771: Give better error message when the rust-analyzer binary path was set in the user's config but the binary is invalid r=matklad a=rylev

`@yoshuawuyts` and I ran into an issue where my rust-analyzer binary path was set in my extension config (which I didn't realize), but the path set in the config was invalid (it simply wasn't on my path). Having an error message that hinted that the binary's path was explicitly set in the config would have considerably shortened the debug time. 

Thanks! 

Co-authored-by: Ryan Levick <me@ryanlevick.com>
2021-08-03 12:13:05 +00:00
bors[bot] ffbb43f336 Merge #9770
9770: Downgrade notify and use `RecommendedWatcher` r=lnicola a=lnicola

Closes #9769

bors r+

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-08-03 12:04:13 +00:00
Ryan Levick ac50e35325 Give better error message when the rust-analyzer binar path was set in the user's config but the binary is invalid 2021-08-03 14:03:49 +02:00
Laurențiu Nicola 5b0c86af7d Downgrade notify and use RecommendedWatcher 2021-08-03 14:33:37 +03:00
bors[bot] da894358e1 Merge #9764
9764: fix: Don't use the module as the candidate node in fuzzy path flyimport r=Veykril a=Veykril

The problem was that the candidate node is whats being used for the scope, so using an inline module will yield the surrounding scope of the module instead of the scope of the module itself.
Also seems to fix the problem in this comment https://github.com/rust-analyzer/rust-analyzer/issues/9760#issuecomment-891125674, though I could not recreate that in a test for some reason.

Fixes #9760

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-02 18:43:02 +00:00
Lukas Wirth e138676664 Don't use the module as the candidate node in fuzzy path flyimport 2021-08-02 19:56:32 +02:00
bors[bot] 29506b5a26 Merge #9762
9762: fix: Fix ranged hover result range r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-02 16:17:15 +00:00
Lukas Wirth 8e0a7d8c08 Fix ranged hover result range 2021-08-02 18:16:47 +02:00
bors[bot] cae54d86d8 Merge #9761
9761: feat: Show coerced types on type hover r=Veykril a=Veykril

This applies to both the ranged hover request as well as the normal hover type fallback.
![image](https://user-images.githubusercontent.com/3757771/127883884-2935b624-a3e5-4f35-861a-7d6d3266d187.png)
![image](https://user-images.githubusercontent.com/3757771/127883951-4ff96b6b-7576-4886-887b-1198c1121841.png)

We unfortunately have to leave out syntax highlighting here as otherwise the `Type` and `Coerced` words in the hover will get colored.

Note that this does not show all the coercions yet(and almost no pattern coercions) as not all coercion adjustments are implemented yet.

Closes https://github.com/rust-analyzer/rust-analyzer/issues/2677

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-02 15:44:43 +00:00
Lukas Wirth f2d2ce03c7 Also search for pattern nodes in ranged hover 2021-08-02 17:38:16 +02:00
Lukas Wirth 486603d559 Show coerced types on type hover 2021-08-02 17:10:36 +02:00
bors[bot] 138849a479 Merge #9751
9751: Make `LoadCargoConfig`, `fn load_workspace_at` & `fn load_workspace` public again r=matklad a=regexident

This [commit](https://github.com/rust-analyzer/rust-analyzer/commit/b24f816c0d8aaa37fbc0b33f90dd67afbf28adaa) which restricted the visibility of `LoadCargoConfig`, `fn load_workspace_at` & `fn load_workspace` unfortunately effectively rendered every crate/tool that uses rust-analyzer as a library dead in the water.

On of such tools is [cargo-modules](https://github.com/regexident/cargo-modules), a tool for generating tree/graph visualizations of one's Rust project and is powered by rust-analyzer as a library.

For more context see the PRs that introduced those types/functions and made them `pub`:

- https://github.com/rust-analyzer/rust-analyzer/pull/7595
- https://github.com/rust-analyzer/rust-analyzer/pull/7690

If kept as is rust-analyzer would effectively no longer be usable as a library.

cc `@SomeoneToIgnore` 

Co-authored-by: Vincent Esche <regexident@gmail.com>
2021-08-02 14:12:37 +00:00
bors[bot] 49e9e2124f Merge #9759
9759: internal: Simplify inline_local_variable assist r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-02 13:28:21 +00:00
Lukas Wirth 432bb222c3 Simplify inline_local_variable assist 2021-08-02 15:27:47 +02:00
bors[bot] 314e2e75c0 Merge #9752
9752: feature: Declare proc-macro dependent crates in `rust-project.json` r=matklad a=tobywf

This adds the `is_proc_macro` flag in `rust-project.json`. By default, this is `false` and not required, so existing projects won't break/have the same behavior as before this change. If the flag is true, a dependency to the `proc_macro` sysroot crate is added (if it exists), so that rust-analyzer can resolve those imports.

This fixes #9726 .

I've also added some tests in the second commit. The first is a smoke test for a basic, minimal `rust-project.json` file. The second is a more targeted test for the flag. Both tests depend on the fake sysroot (a bunch of directories in the correct layout with empty `lib.rs` files), and also on `env!("CARGO_MANIFEST_DIR")` being an absolute path. I'm not sure if the later assumption is valid on all platforms. I wanted to at least try and add tests, but I'm happy to rework them or remove them if you don't think that's the way to go.

(You can license/relicense my contribution in any way you wish without contacting me.)

Co-authored-by: Toby Fleming <sourcecode@tobywf.com>
2021-08-02 13:14:22 +00:00
bors[bot] 0d56ff2a02 Merge #9758
9758: internal: explain that we don't `ref` in style.md r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-02 13:00:07 +00:00
Aleksey Kladov 12d7f5b56e internal: explain that we don't ref in style.md 2021-08-02 15:59:28 +03:00
bors[bot] d6f2352a08 Merge #9757
9757: intenral: completion cleanups r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-02 12:41:15 +00:00
bors[bot] e7be544b7c Merge #9756
9756: internal: `resolve_doc_path` is able to resolve to macros r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-02 12:34:59 +00:00
Lukas Wirth 62ab73767f resolve_doc_path is able to resolve to macros 2021-08-02 14:33:09 +02:00
Aleksey Kladov 5f3662e01c minor: encode usage convention into API 2021-08-02 15:28:39 +03:00
Aleksey Kladov 8b6ea1545f simplify 2021-08-02 14:27:11 +03:00
Aleksey Kladov 71cd67fe47 failing test 2021-08-02 14:27:11 +03:00
Toby Fleming d0b98060d4 Rust project project model smoke tests 2021-08-01 15:00:34 -07:00