14482 Commits

Author SHA1 Message Date
ihciah
494fab202a
feat: support concat_bytes 2022-02-25 18:46:11 +08:00
Florian Diebold
f807ccd6c0 Add CSV output to analysis-stats
For easy diffing.
2022-02-25 11:45:44 +01:00
Chayim Refael Friedman
ab2af50655 Minor perf change: vec.clone().into_iter() => vec.iter().cloned() 2022-02-25 01:25:42 +00:00
Chayim Refael Friedman
73708d4405 Update references to macro_rules in the "Extract module" assist
See https://github.com/rust-analyzer/ungrammar/pull/46#issuecomment-1049801890.
2022-02-25 01:25:42 +00:00
Chayim Refael Friedman
3149e69247 Do not change visibility of macro_rules in the "Extract module" assist
See https://github.com/rust-analyzer/ungrammar/pull/46#issuecomment-1049801890.
2022-02-25 01:25:42 +00:00
Chayim Refael Friedman
2df7a1af17 Generate AST code after rust-analyzer/ungrammar#46 2022-02-25 01:25:42 +00:00
Moritz Vetter
71d158b6ba refactor(11422): make number unsigned, nest enums into each other 2022-02-24 21:29:45 +01:00
Moritz Vetter
8848186213 fix(11422): have two different funuctions - one for iterating breaks, one for iteraating breaks and continues 2022-02-24 19:00:08 +01:00
Moritz Vetter
3da08071ce add logic to highlight continue and break keywords according to expectations 2022-02-24 18:58:14 +01:00
Moritz Vetter
cad0cf6950 refactor helper function to work with function taking expression enum instead of break expression 2022-02-24 18:58:14 +01:00
Moritz Vetter
1c074499f3 add some breaking tests (TDD - style) 2022-02-24 18:58:14 +01:00
bors[bot]
90f7899903
Merge #11531
11531: fix: Make fill_match_arms assist handle doc(hidden) and non_exhaustive r=Veykril a=OleStrohm

Fixes #11499
Fixes #11500
This keeps track of the relevant attributes and adds in a wildcard pat at the end of the match when necessary.

I decided to do them in the same PR since they both needed the ability to add a wildcard arm, and so their changes would overlap if done separately, but I'll split them up if that seems better.

This is my first PR to rust-analyzer, so all feedback is greatly appreciated!

Co-authored-by: Ole Strohm <strohm99@gmail.com>
2022-02-24 12:57:51 +00:00
bors[bot]
6b55d2f10a
Merge #11540
11540: fix: Resolve private fields in type inference r=flodiebold a=Veykril

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10253#issuecomment-920962927
(the same issue probably exists for method calls, but I think fixing that might be trickier)

Visibility checks were introduced in https://github.com/rust-analyzer/rust-analyzer/issues/7841 for autoderef to work properly, so now we just record the first field we find unconditionally, and then overwrite it if autoderef manages to find another field in a later cycle.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-24 11:25:18 +00:00
Akshay
a5ab6a2f75 add is_slice method to hir::Type 2022-02-24 15:20:12 +05:30
Ole Strohm
f1ba7465c6 Ignore doc(hidden) for crate-local enums 2022-02-23 18:08:18 +00:00
Lukas Wirth
41b6b372a7 fix: Resolve private fields in type inference 2022-02-23 16:45:58 +01:00
Lukas Wirth
de0941301e Simplify 2022-02-23 16:29:33 +01:00
Lukas Wirth
ffeec9dec9 Simplify 2022-02-23 15:55:06 +01:00
Lukas Wirth
d3d054f574 Reduce visibility of proc-macros to pub(crate) 2022-02-23 12:00:04 +01:00
Lukas Wirth
e759db361e Resolve functions as proc-macros via FileAstId 2022-02-23 11:21:46 +01:00
Ole Strohm
5cdbfa5b70 Added test 2022-02-22 22:48:44 +00:00
Ole Strohm
94a221ae8d Dedup code 2022-02-22 22:41:03 +00:00
bors[bot]
0b53744f2d
Merge #11461
11461: Extract struct from enum variant filters generics r=jo-goro a=jo-goro

Fixes #11452.

This PR updates extract_struct_from_enum_variant. Extracting a struct `A` form an enum like
```rust
enum X<'a, 'b> {
    A { a: &'a () },
    B { b: &'b () },
}
```
will now be correctly generated as
```rust
struct A<'a> { a: &'a () }

enum X<'a, 'b> {
    A(A<'a>),
    B { b: &'b () },
}
```
instead of the previous
```rust
struct A<'a, 'b>{ a: &'a () } // <- should not have 'b

enum X<'a, 'b> {
    A(A<'a, 'b>),
    B { b: &'b () },
}
```

This also works for generic type parameters and const generics.

Bounds are also copied, however I have not yet implemented a filter for unneeded bounds. Extracting `B` from the following enum
```rust
enum X<'a, 'b: 'a> {
    A { a: &'a () },
    B { b: &'b () },
}
```
will be generated as 
```rust
struct B<'b: 'a> { b: &'b () } // <- should be `struct B<'b> { b: &'b () }`

enum X<'a, 'b: 'a> {
    A { a: &'a () },
    B(B<'b>),
}
```

Extracting bounds with where clauses is also still not implemented.

Co-authored-by: Jonas Goronczy <goronczy.jonas@gmail.com>
2022-02-22 18:46:12 +00:00
Jonas Goronczy
0db0dec999 Replaced fold with for loop 2022-02-22 19:38:34 +01:00
bors[bot]
033f91e75d
Merge #11472
11472: fix: visibility in impl items and pub(crate) to pub in extract_module r=feniljain a=feniljain

Should fix #11007 and #11443

Makes following changes:

- Removes visiblity modifiers from trait items
- Respect user given visibility
- Updated tests for the same

Co-authored-by: vi_mi <fkjainco@gmail.com>
Co-authored-by: vi_mi <49019259+feniljain@users.noreply.github.com>
2022-02-22 18:12:27 +00:00
vi_mi
7abd7b80f3
chore: reposition comment
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-22 19:46:50 +05:30
Ole Strohm
43a4c45ede fix: Make match_arms assist handle doc(hidden) and non_exhaustive 2022-02-22 13:59:30 +00:00
vi_mi
192b6f5a78 fix: visibility in impl items and pub(crate) to pub in extract_module 2022-02-22 18:35:45 +05:30
Lukas Wirth
2e124d15fb fix: Fix expand_macro always expanding the first listed derive 2022-02-22 12:32:27 +01:00
Lukas Wirth
b494795a42 update references::derive test output 2022-02-22 10:52:35 +01:00
Lukas Wirth
8db88df758 simplify and document 2022-02-22 10:45:29 +01:00
Lukas Wirth
94e59c9c56 Simplify 2022-02-22 10:20:45 +01:00
Lukas Wirth
1bbef5af85 Fix syntax highlighting not highlighting derives anymore 2022-02-22 10:20:44 +01:00
Lukas Wirth
f13c98034b Make replace_derive_with_manual_impl work again 2022-02-22 10:20:44 +01:00
Lukas Wirth
be3168dabe Fix expand_macro not working for derive attributes 2022-02-22 10:20:44 +01:00
Lukas Wirth
7b89d5ede2 internal: Expand the derive attribute into a pseudo expansion 2022-02-22 10:20:40 +01:00
bors[bot]
1fe3b2edd6
Merge #11527
11527: internal: Split unresolve proc-macro error out of mbe r=Veykril a=Veykril



Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-22 09:08:22 +00:00
Lukas Wirth
1505b6a9b4 internal: Split unresolve proc-macro error out of mbe 2022-02-22 10:08:00 +01:00
Tianyi Song
1c3d6725e2 Drop generic args in path before insert use 2022-02-22 15:41:26 +08:00
Jonas Goronczy
f721456c4a Removes ExtractedGenerics struct 2022-02-21 23:00:16 +01:00
bors[bot]
c0ee2f23ff
Merge #11490
11490: Correctly fix formatting doc tests with generics r=Veykril a=KarlWithK

Before the doc_test would be outputted like this:
```zsh
"Foo<T, U>::t"
```
However, this would cause problems with shell redirection. I've changed it
so when generics are involved we simply wrap the expression under quotes as so:
```zsh
"\"Foo<T, U>::t\""
```

Note:
At the cost of adding this, I had to allocate a new string via
`format!{}`. However, I argue this is alright as this for just for
outputting the name of the doc test.

The following tests have been changed:
```
runnables::tests::doc_test_type_params
runnables::tests::test_doc_runnables_impl_mod
runnables::tests::test_runnables_doc_test_in_impl
```

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

Co-authored-by: KarlWithK <jocelinc60@outlook.com>
Co-authored-by: SeniorMars <jocelinc60@outlook.com>
2022-02-21 21:57:44 +00:00
SeniorMars
bf47acf1d3
Update crates/ide/src/runnables.rs
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-21 15:23:09 -06:00
Jonas Goronczy
f5f3921fab Cleanup 2022-02-21 19:51:09 +01:00
bors[bot]
b663b733d9
Merge #11522
11522: fix: Make code lenses work on attributed items r=Veykril a=Veykril

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/11213
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-21 17:08:19 +00:00
Lukas Wirth
c6645f2eb6 fix: Make code lenses work on attributed items 2022-02-21 18:07:47 +01:00
bors[bot]
979b5b32bc
Merge #11455
11455: Handle proc-macro functions as the proc-macro they resolve to r=Veykril a=Veykril

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

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-21 16:56:37 +00:00
Lukas Wirth
0d3cd90d08 Move fn to proc-macro conversion to name classification 2022-02-21 17:56:11 +01:00
bors[bot]
24255e5b3d
Merge #11481
11481: Display parameter names when hovering over a function pointer r=Veykril a=Vannevelj

Implements #11474

The idea is pretty straightforward: previously we constructed the hover based on just the parameter types, now we pass in the parameter names as well. I went for a quick-hit approach here but I expect someone will be able to point me to a better way of resolving the identifier.

I haven't figured out yet how to actually run my rust-analyzer locally so I can see it in action but the unit test indicates it should work.

Co-authored-by: Jeroen Vannevel <jer_vannevel@outlook.com>
2022-02-21 13:08:31 +00:00
bors[bot]
8c718a47c1
Merge #11517
11517: fix: Fix qualfiied record literal completion triggering too eagerly r=Veykril a=Veykril

Supercedes https://github.com/rust-analyzer/rust-analyzer/pull/10909
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10889
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-02-21 12:52:11 +00:00
Lukas Wirth
50458e350f fix: Fix qualfiied record literal completion triggering too eagerly 2022-02-21 13:50:16 +01:00