Commit Graph

14968 Commits

Author SHA1 Message Date
Yoshua Wuyts
e8d7bcc355 Add getter/setter assists
Finish implementing `generate_setter` assists

Make `generate_impl_text` util generic

generate getter methods

Fix getter / setter naming

It's now in-line with the Rust API naming guidelines: https://rust-lang.github.io/api-guidelines/naming.html#getter-names-follow-rust-convention-c-getter

apply clippy

Improve examples
2021-02-10 00:08:41 +01:00
bors[bot]
876c4519e3
Merge #7602
7602: Check for dyn impls in method resolution r=flodiebold a=Veykril

Fixes #6777

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-02-08 18:22:35 +00:00
Lukas Wirth
965d31ce5b Check for dyn impls in method resolution 2021-02-08 19:13:54 +01:00
bors[bot]
669efad231
Merge #7600
7600: Update crates r=flodiebold a=kjeremy

Pulls in https://github.com/rust-lang/chalk/pull/682

Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-02-08 16:49:45 +00:00
kjeremy
0c3b38695a Update crates
Pulls in https://github.com/rust-lang/chalk/pull/682
2021-02-08 11:38:51 -05:00
bors[bot]
a0c2bbf88f
Merge #7599
7599: Add emacs guide r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-02-08 16:08:31 +00:00
Aleksey Kladov
ad7b0f670a Add emacs guide 2021-02-08 19:08:02 +03:00
bors[bot]
cbb42c10d6
Merge #7595
7595: Add `config: &CargoConfig` parameter to `fn load_cargo(…)` r=matklad a=regexident

For projects using rust-analyzer as a library it is desirable to be able to provide a custom-config to `fn load_cargo(…)` to pass features, etc, rather than having to copy & paste `fn load_cargo(…)` into one's project and maintain a fork of it and keep it in sync with upstream.

Co-authored-by: Vincent Esche <regexident@gmail.com>
2021-02-08 10:34:46 +00:00
Vincent Esche
8f461ffe8f Consolidate fn load_cargo(…) parameters into struct LoadCargoConfig { … } 2021-02-08 11:30:16 +01:00
Vincent Esche
6d9c13c710 Add config: &CargoConfig parameter to fn load_cargo(…) 2021-02-08 11:00:55 +01:00
bors[bot]
433ad23988
Merge #7592
7592: [Doc] Note about Eclipse IDE support r=lnicola a=mickaelistria



Co-authored-by: Mickael Istria <mistria@redhat.com>
2021-02-08 09:16:01 +00:00
Mickael Istria
7e0854ec57 [Doc] Note about Eclipse IDE support 2021-02-08 09:52:46 +01:00
bors[bot]
a996b381bc
Merge #7593
7593: fix: add for keyword in completion #7588 r=lnicola a=gowrizrh

Fixes #7588
bors r+

Co-authored-by: Gowri <gowri.sankar@aligent.com.au>
Co-authored-by: Gowri <gowrizrh@gmail.com>
2021-02-08 08:00:41 +00:00
Gowri
6b947567e1 chore: swap order of placeholders 2021-02-08 18:22:46 +10:30
bors[bot]
984898329b
Merge #7549
7549:  Documentation: Explain how initial configuration is sent over LSP and document vim-lsp r=ilya-bobyr a=ilya-bobyr

This request contains two related but independent changes.
The first explains `rust-analyzer` initial configuration over LSP.
The second - adds documentation on `vim-lsp` Vim plugin and provides an example of the initial configuration for `rust-analyzer` when using this particular LSP client.

Let me know if you would prefer the changes to be reviewed in two separate pull requests.

Co-authored-by: Ilya Bobyr <ilya.bobyr@gmail.com>
2021-02-08 04:38:34 +00:00
Ilya Bobyr
9ffe4ca26c Vim docs: vim-lsp with initial configuration.
`vim-lsp` is another popular LSP client for Vim.  And, as there is no
`rust-analyzer` specific UI, it is non-trivial to figure out how the
initial configuration is performed.
2021-02-07 20:24:56 -08:00
Ilya Bobyr
6781692732 Explain how initial configuration is sent over LSP. 2021-02-07 20:24:56 -08:00
Gowri
498dfc45d4 ci: update relevant test case expected values 2021-02-08 10:16:20 +10:30
Gowri
7b92a55ff7 fix: add for keyword in completion #7588 2021-02-08 09:57:16 +10:30
bors[bot]
336909b63a
Merge #7587
7587: AdtDef -> Adt r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-02-07 11:15:26 +00:00
Aleksey Kladov
7022ea52b5 AdtDef -> Adt 2021-02-07 14:15:02 +03:00
bors[bot]
75a87ec198
Merge #7586
7586: Add a section on entry points r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-02-07 07:59:24 +00:00
Aleksey Kladov
cbebb70313 Add a section on entry points 2021-02-07 10:58:59 +03:00
Erick Tovar
a423a5196c Fixing architecture image on dark theme 2021-02-07 10:57:39 +03:00
bors[bot]
720abf15ec
Merge #7585
7585: More information for mbe in architecture.md r=edwin0cheng a=edwin0cheng

bors r+

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-02-07 04:54:31 +00:00
Edwin Cheng
a0475f10d8 Remove redunacny 2021-02-07 12:53:54 +08:00
Edwin Cheng
542e35e397 More information for mbe 2021-02-07 12:51:30 +08:00
bors[bot]
0a2a124474
Merge #7584
7584: Update architecture.md for mbe and proc-macro r=edwin0cheng a=edwin0cheng



Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-02-07 04:33:15 +00:00
Edwin Cheng
504a54b222 Update architecture.md for mbe and proc-macro 2021-02-07 12:31:33 +08:00
bors[bot]
df7f5e9421
Merge #7583
7583: Update architecture.md r=bjorn3 a=aTuck

Typo

Co-authored-by: Adam Tuck <tuckaet@gmail.com>
2021-02-06 22:52:42 +00:00
Adam Tuck
c2064e8bcf
Update architecture.md
Typo
2021-02-06 14:40:23 -08:00
bors[bot]
d7c99931d0
Merge #7578
7578: Add a semantic token type for char literals r=Veykril a=petr-tik

Fixes #7530 

The LSP spec doesn't recognise character literals, so
had to extend the suported types to our own custom type

Co-authored-by: petr-tik <petr-tik@users.noreply.github.com>
2021-02-06 00:25:23 +00:00
petr-tik
f4e3eceb6f Add a semantic token type for char literals
The LSP spec doesn't recognise character literals, so
had to extend the suported types to our own custom type
2021-02-05 23:46:39 +00:00
bors[bot]
582a202d6e
Merge #7577
7577: cargo update r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-02-05 20:45:52 +00:00
bors[bot]
4cc333c889
Merge #7576
7576: Fix resolveCodeAction trying to edit files before creating them r=Veykril a=Veykril

Fixes #7208
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-02-05 20:35:51 +00:00
kjeremy
c3ddf3e1d6 cargo update 2021-02-05 15:35:45 -05:00
Lukas Wirth
fb2b1f5ea6 Fix resolveCodeAction trying to edit files before creating them 2021-02-05 21:33:37 +01:00
bors[bot]
4e86aee60b
Merge #7575
7575: Fix resolution of `self` module within blocks r=jonas-schievink a=jonas-schievink

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-02-05 18:26:51 +00:00
Jonas Schievink
c312ab51d0 Test super resolution too 2021-02-05 19:25:50 +01:00
Jonas Schievink
997bd97b77 Fix resolution of self module within blocks 2021-02-05 19:24:03 +01:00
bors[bot]
80ab753d7e
Merge #7572
7572: Add `find_or_create_impl_block` to assist utils r=matklad a=yoshuawuyts

This is another continuation of https://github.com/rust-analyzer/rust-analyzer/pull/7562, introducing a small util to either find an `impl` block, or create a new one if none exists. I copied this code from the `generate_new` assist into https://github.com/rust-analyzer/rust-analyzer/pull/7562, and this unifies both into a helper.

It doesn't feel super polished in its current state, but my hope is that this is enough of a starting point that it can be expanded on later. For example something that would be useful would be a flag which either returns the index of the start of the block, or the end of the block.

Anyway, I hope this is useful. Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2021-02-05 17:18:02 +00:00
Yoshua Wuyts
2cf1612669 Add find_or_create_impl_block to assist utils 2021-02-05 17:19:31 +01:00
bors[bot]
941f9157f5
Merge #7573
7573: Do not overwrite lock file r=kjeremy a=kjeremy

Use `npm ci` instead of `npm install`. `npm install` will overwrite
the lock file if you have a newer npm version than the one that
generated the package-lock.json

Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-02-05 16:14:55 +00:00
bors[bot]
737e7a7b75
Merge #7574
7574: Remove various redundant clones r=kjeremy a=yoshuawuyts

I noticed when running clippy through RA that there are a few instances where `clone` is called where it's not actually needed. I figured a small patch to remove these might be welcome here.

Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2021-02-05 16:04:50 +00:00
kjeremy
8ff69055b9 Do not overwrite lock file
Use `npm ci` instead of `npm install`. `npm install` will overwrite
the lock file if you have a newer npm version than the one that
generated the package-lock.json
2021-02-05 10:57:36 -05:00
Yoshua Wuyts
79d103d5b4 Remove redundant clones 2021-02-05 16:57:26 +01:00
bors[bot]
2a75594ee8
Merge #7505
7505: Widen Highlights root range to covering element r=Veykril a=Veykril

There have been a few issues about/containing spurious syntax highlighting panics, which all seem to come from the `rust_analyzer::handlers::handle_semantic_tokens_range` request, which I believe this to be the cause of as the text range we want to highlight here is currently potentially smaller than that of the covering element, so we might highlight something that is inside the covering element, but outside of the text range we wish to highlight causing the assert to fail.
Unfortunately this isn't really easy to test since I have yet to find a reproducible cause(#7504 doesn't work for me cause I can't seem to checkout the given commit).

See #7504, #7298, #7299 and #7416, all of those contain an assertion failure in syntax highlighting, but only in the range request.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-02-05 15:31:25 +00:00
bors[bot]
855b00cbe6
Merge #7570 #7571
7570: Add doc gen to the `generate_enum_match_method` assist r=yoshuawuyts a=yoshuawuyts

Implements a small extension to https://github.com/rust-analyzer/rust-analyzer/pull/7562, generating default comments. I wasn't sure if this would fit the goals of Rust-Analyzer, so I chose to split it into a separate PR. This is especially useful when writing code in a codebase which uses `#![warn(missing_docs)]` lint, as many production-grade libraries do.

The comments we're generating here are similar to the ones found on [`Option::is_some`](https://doc.rust-lang.org/std/option/enum.Option.html#method.is_some) and [`Result::is_err`](https://doc.rust-lang.org/std/result/enum.Result.html#method.is_err). I briefly considered only generating these for `pub` types, but they seem small and unobtrusive enough that they're probably useful in the general case. Thanks!

## Example

__input__
```rust
pub(crate) enum Variant {
    Undefined,
    Minor, // cursor here
    Major,
}
```

__output__
```rust
pub(crate) enum Variant {
    Undefined,
    Minor,
    Major,
}

impl Variant {
    /// Returns `true` if the variant is [`Minor`].
    pub(crate) fn is_minor(&self) -> bool {
        matches!(self, Self::Minor)
    }
}
```

## Future Directions

This opens up the path to adding an assist for generating these comments on existing `is_` methods. This would make it both easy to document new code, and update existing code with documentation.

7571: Cleanup decl_check r=Veykril a=Veykril

bors r+

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-02-05 15:17:41 +00:00
Lukas Wirth
eeb5bfcfab Cleanup decl_check 2021-02-05 16:09:45 +01:00
Yoshua Wuyts
d90bd63536 Add doc gen to the generate_enum_match_method assist 2021-02-05 16:00:07 +01:00