Commit Graph

68 Commits

Author SHA1 Message Date
bors[bot] 173e45f872 Merge #6365
6365: Do insertion lookahead in algo::diff r=matklad a=Veykril

This is the last blocker for #6287 after this I can update that PR to properly fix things through using `SyntaxRewriter`.

This PR also shuffles tests around a bit and adds some more.

Ideally this is just a hack until we implement a "proper" diff algorithm that approximates a minimal diff. Maybe something like [gumtree](https://github.com/GumTreeDiff/gumtree)?

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-11-02 17:47:08 +00:00
kjeremy 0403e82d91 Bump chalk and lexer 2020-11-02 12:00:58 -05:00
Aleksey Kladov b610118453 Deny unreachable-pub
It's very useful when `pub` is equivalent to "this is crate's public
API", let's enforce this!

Ideally, we should enforce it for local `cargo test`, and only during
CI, but that needs https://github.com/rust-lang/cargo/issues/5034.
2020-11-02 14:07:08 +01:00
Pavan Kumar Sunkara c070146a83 Update Cargo.toml 2020-10-31 08:49:57 +01:00
Lukas Wirth 750ab54573 Do insertion lookahead in algo::diff 2020-10-26 16:03:37 +01:00
bors[bot] a0f1346864 Merge #6333
6333: Don't interpret type path as part of visibility. r=matklad a=ArifRoktim

This closes #5902.
I only check that the next token isn't equal to `T![:]`, instead of the next two not being equal to `T![::]`. Is that ok?

Co-authored-by: Arif Roktim <arifrroktim@gmail.com>
2020-10-26 14:34:00 +00:00
bors[bot] 1a84cadc88 Merge #6347
6347: Support insertion in SyntaxRewriter r=Veykril a=Veykril



Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-10-26 14:08:47 +00:00
Lukas Wirth 45860d5207 Remove InsertPos::Before variant in Syntax Rewriter 2020-10-24 21:58:03 +02:00
bors[bot] bf84e4958e Merge #6331 #6342
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 <joshmcg88@gmail.com>
Co-authored-by: Igor Aleksanov <popzxc@yandex.ru>
2020-10-24 19:08:12 +00:00
Lukas Wirth aca2735d1e Support insertion in SyntaxRewriter 2020-10-24 20:53:16 +02:00
Laurențiu Nicola 4834015fd1 Bump rustc_lexer 2020-10-24 17:11:58 +03:00
Arif Roktim 0a9ff04270 Don't interpret type path as part of visibility. 2020-10-24 02:20:45 -04:00
Josh Mcguigan 4e76e884bd correct hover for items with doc attribute with raw strings 2020-10-23 19:36:30 -07:00
Lukas Wirth 0059188e77 algo::diff tests 2020-10-22 14:48:24 +02:00
Lukas Wirth d86863aeb4 Rewrite algo::diff to support insertion and deletion 2020-10-22 09:51:11 +02:00
bors[bot] 989de9e309 Merge #6172
6172: Add qualify path assist r=matklad a=Veykril

This implements a `qualify_path` assist which works quite similar to the `auto_import` assist but instead of adding imports to the file it well, qualifies the path. This PR also moves out the `AutoImportAssets` struct and functions from `auto_import` into a utils submodule as most of this is now shared between `auto_import` and `qualify_path`.

Changes made to `AutoImportAssets` are solely in its `search_for_imports` function which now takes a prefixed parameter to discern between using `find_use_path_prefixed` and `find_use_path` as the former is the required behavior by `auto_import` and the latter by this assist.

For missing imported traits instead of importing this will qualify the path with a trait cast as in:
```rust
test_mod::TestStruct::TEST_CONST<|>
```
becomes
```rust
<test_mod::TestStruct as test_mod::TestTrait>::TEST_CONST
```

and for trait methods ideally it would do the following:
```rust
let test_struct = test_mod::TestStruct {};
test_struct.test_meth<|>od()
```
becomes
```rust
let test_struct = test_mod::TestStruct {};
test_mod::TestTrait::test_method(&test_struct)
```

Fixes #4124.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-10-20 17:03:19 +00:00
Igor Aleksanov 9e7c952bbd Extract call_info and completion into separate crates 2020-10-18 13:09:00 +03:00
Lukas Wirth bc11475a2a Properly qualify trait methods in qualify_path assist 2020-10-15 18:31:33 +02:00
Laurențiu Nicola 9937c0d50a Bump rustc_lexer 2020-10-13 18:06:23 +03:00
Benjamin Coenen 3bfa3e8123 when generating new function, focus on return type instead of body
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-08 20:57:18 +02:00
kjeremy 13bb0404a8 Bump rustc_lexer, cfg-if to 1.0 and add new license to check 2020-10-08 10:39:02 -04:00
Aleksey Kladov fd8622e1ec Cleanup 2020-10-07 11:55:20 +02:00
bors[bot] a184c83535 Merge #6160
6160: Add validation check for ambiguous trait objects r=matklad a=Veykril

Fixes #285.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-10-07 09:12:09 +00:00
Lukas Wirth 6f38552edb Add validation check for ambiguous trait objects 2020-10-06 23:52:00 +02:00
Aleksey Kladov d7991f5f21 Document privacy invariant of SyntaxPtr 2020-10-06 20:06:14 +02:00
bors[bot] e535489f03 Merge #6104
6104: Minor clippy performance suggestions r=matklad a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2020-10-02 08:07:42 +00:00
kjeremy ff678e1349 Up rustc-ap-rustc_lexer to 681
cargo update as well
2020-10-01 15:21:13 -04:00
kjeremy 82d6cfd495 Minor clippy performance suggestions 2020-09-30 15:22:49 -04:00
bors[bot] 18c62c8a39 Merge #6019
6019: Remove make::path_from_text r=matklad a=Veykril

This removes the `make::path_from_text` function, which according to a note should've been private. I removed it since it didn't really serve a purpose as it was simply wrapping `make::ast_from_text`.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-09-29 10:29:33 +00:00
Matt Hooper 7d90bb1f47 Rename impl edit method to be more explicit 2020-09-21 10:01:50 +01:00
Matt Hooper ae7c982421 Add make utility for empty associated item lists 2020-09-21 00:39:17 +01:00
Matt Hooper 4362297a0b Add edit utility for adding an associated item list to a impl def 2020-09-21 00:38:18 +01:00
Lukas Wirth f2ae412ccf Remove make::path_from_text 2020-09-16 21:36:10 +02:00
Lukas Wirth 45298b5d2a Add make::glob_use_tree function to create star-only UseTree 2020-09-16 20:33:08 +02:00
Lukas Wirth a898752881 Reimplement import merging by making it recursive properly nesting all levels 2020-09-12 19:19:19 +02:00
Pavan Kumar Sunkara 4d97f5f037 Rename record_field_pat to record_pat_field 2020-09-10 18:56:04 +02:00
bors[bot] 0275b08d15 Merge #5940
5940: Implement "Replace `impl Trait` function argument with the named generic" assist. r=matklad a=alekseysidorov

Fixes #5085 

Co-authored-by: Aleksei Sidorov <gorthauer87@yandex.ru>
2020-09-04 21:54:42 +00:00
Aleksei Sidorov e1b8d836a9 Remove unnecessary comma 2020-09-04 22:58:50 +03:00
Aleksei Sidorov ef0a1b2e58 Fix tests 2020-09-04 17:55:27 +03:00
Aleksei Sidorov 477fa75cfb Fix nitpicks 2020-09-04 15:24:36 +03:00
Lukas Wirth 952f385682 Impl make::blank_line 2020-09-03 18:36:07 +02:00
Aleksei Sidorov 7259cc82f3 Resolve most of corner cases 2020-09-03 17:46:04 +03:00
Aleksei Sidorov fe3170dc34 Initial implementation of the #5085 issue 2020-09-03 14:47:07 +03:00
Aleksey Kladov 75b1f9ee23 Unify naming 2020-09-03 12:18:46 +02:00
Aleksey Kladov b1f59ff6c1 Reduce path_from_text usage 2020-08-31 15:47:42 +02:00
Aleksey Kladov 60706fca8e Remove dead code 2020-08-31 15:46:57 +02:00
Aleksey Kladov c692b5d76d ⬆️ expect-test 2020-08-28 14:47:14 +02:00
Aleksey Kladov 07da02fc37 ⬆️ crates 2020-08-27 19:06:00 +02:00
Aleksey Kladov 18b667cfcb Complete pub in fields 2020-08-25 17:22:23 +02:00
Aleksey Kladov 7721accebf Cleanup invert-if
* stick to trivial factory functions in make
* compress the logic for inverting Option/Result
2020-08-25 11:00:32 +02:00