hkalbasi
ac04bfd7a7
Add View Mir
command and fix some bugs
2023-03-06 21:09:09 +03:30
Ryo Yoshida
356d12eae4
refactor: leverage HasAttrs
for code brevity
2023-03-04 00:24:03 +09:00
Ryo Yoshida
2e7d2c2d04
Parse trait alias as a distinct AST type
2023-03-04 00:23:56 +09:00
Ryo Yoshida
cf0c8fe000
minor: import Either
from either
2023-02-25 21:55:11 +09:00
Laurențiu Nicola
7e711da2f0
⬆️ rust-analyzer
2023-02-20 10:14:12 +02:00
Lukas Wirth
e550e553e0
fix: Bring back hovering call parens for return type info
2023-02-15 18:58:59 +01:00
Laurențiu Nicola
bc45c7659a
⬆️ rust-analyzer
2023-02-13 13:55:14 +02:00
Ryo Yoshida
92fdfb548e
Make is_raw_identifier()
public util function
2023-02-13 18:43:59 +09:00
Lukas Wirth
4788c7a056
Bump rustc-ap-rustc_lexer
2023-02-08 11:42:14 +01:00
bors
3bc33c7e9f
Auto merge of #14010 - silvergasp:ci, r=lnicola
...
fuzz: Fixes broken Cargo.toml for fuzz tests
Fixes broken Cargo.toml for fuzz tests and adds building of fuzz tests to the CI.
2023-02-03 11:15:54 +00:00
Ryo Yoshida
3edde6fcc1
Support generic function in generate_function
assist
2023-01-31 21:05:25 +09:00
Nathaniel Brough
6c4749e8f5
fix(fuzz): Fixes broken Cargo.toml for fuzz tests
...
Fixes broken Cargo.toml for fuzz tests and adds building of
fuzz tests to the CI.
2023-01-24 10:54:10 -08:00
Laurențiu Nicola
1431264646
Bump rayon
2023-01-21 14:05:22 +02:00
Laurențiu Nicola
392a6ee422
Bump once_cell
2023-01-21 08:48:46 +02:00
bors
d46d012c38
Auto merge of #13978 - bvanjoi:array-match, r=Veykril
...
feat: array match
fixed https://github.com/rust-lang/rust-analyzer/issues/13970
2023-01-20 10:30:18 +00:00
bvanjoi
8fa69f9f7d
feat: array match
2023-01-20 10:59:30 +08:00
onestacked
872408500b
Parse const_closures syntax.
...
Enables parsing of the syntax for `#![features(const_closures)]` introduced in https://github.com/rust-lang/rust/pull/106004
2023-01-19 15:40:07 +01:00
bors
fa874627f0
Auto merge of #13969 - Veykril:workspace.dependencies, r=Veykril
...
Use workspace.dependencies to declare local dependencies
2023-01-17 10:29:27 +00:00
Lukas Wirth
bed4db3c62
Use workspace.dependencies to declare local dependencies
2023-01-17 10:52:26 +01:00
Lukas Wirth
e4858fe480
Specify authors, edition and license via workspace.package
2023-01-16 16:44:00 +01:00
Lukas Wirth
679df2adf1
Specify rust-version via workspace.package
2023-01-16 16:33:01 +01:00
Maybe Waffle
cfc01150bf
implement AstNode
for Either
2023-01-14 12:45:20 +00:00
Daniel Eades
b971b5b64f
suppress lint
2023-01-10 07:06:26 +00:00
Daniel Eades
ef4debc8b1
comment out disabled code
2023-01-10 07:02:04 +00:00
arcnmx
25242fe93f
⬆️ rust-analyzer
...
Merge commit '368e0bb32f1178cf162c2ce5f7e10b7ae211eb26'
2023-01-09 10:36:22 -08:00
bors
ba204ef07b
Auto merge of #13863 - danieleades:approx-constant, r=Veykril
...
minor: suppress 'clippy::approx_constant' lint in test case
suppresses a false positive clippy lint
2023-01-09 14:53:46 +00:00
bors
938a39ab89
Auto merge of #13891 - bvanjoi:reverse-whitespace-in-assists, r=Veykril
...
fix: keep whitespace in extract function handler
Fixed #13874
2023-01-09 14:11:40 +00:00
bors
ae659125a5
Auto merge of #13763 - rami3l:fix/gen-partial-eq-generic, r=Veykril
...
fix: add generic `TypeBoundList` in generated derivable impl
Potentially fixes #13727 .
Continuing with the work in #13732 , this fix tries to add correct type bounds in the generated `impl` block:
```diff
enum Either<T, U> {
Left(T),
Right(U),
}
- impl<T, U> PartialEq for Either<T, U> {
+ impl<T: PartialEq, U: PartialEq> PartialEq for Either<T, U> {
fn eq(&self, other: &Self) -> bool {
match (self, other) {
(Self::Left(l0), Self::Left(r0)) => l0 == r0,
(Self::Right(l0), Self::Right(r0)) => l0 == r0,
_ => false,
}
}
}
```
2023-01-09 13:02:09 +00:00
bvanjoi
ae73628f6b
fix: keep whitespace in extract function handler
2023-01-04 22:10:17 +08:00
Daniel Eades
cc80c5bd07
remove unnecessary lazy evaluations
2023-01-02 15:02:54 +00:00
Daniel Eades
ed128872eb
remove needless borrows
2023-01-02 14:52:32 +00:00
Daniel Eades
77051679d7
use inline format args
2023-01-02 14:52:32 +00:00
Daniel Eades
b196e5b2f6
fixup
2022-12-31 09:26:58 +00:00
Daniel Eades
ba5067a6f0
suppress 'clippy::approx_constant' lint in test case
2022-12-30 11:28:06 +00:00
Maybe Waffle
346bf5fb5b
Implement do yeet
expression
2022-12-28 23:17:13 +00:00
Maybe Waffle
4a16afa264
Parse do yeet
expressions
2022-12-28 22:42:26 +00:00
Yuri Astrakhan
d3dbf9c194
Moar linting: needless_borrow, let_unit_value, ...
...
* There are a few needless borrows that don't seem to be needed. I even did a quick assembly comparison and posted a q to stackoveflow on it. See [here](https://stackoverflow.com/questions/74910196/advantages-of-pass-by-ref-val-with-impl-intoiteratoritem-impl-asrefstr )
* removed several `let _ = ...` when they don't look necessary (even a few ones that were not suggested by clippy (?))
* there were a few `then(|| ctor{})` that clippy suggested to replace with `then_some(ctor{})` -- seems reasonable?
* some unneeded assignment+return - keep the code a bit leaner
* a few `writeln!` instead of `write!`, or even consolidate write!
* a nice optimization to use `ch.is_ascii_digit` instead of `ch.is_digit(10)`
2022-12-25 05:07:47 -05:00
Yuri Astrakhan
e16c76e3c3
Inline all format arguments where possible
...
This makes code more readale and concise,
moving all format arguments like `format!("{}", foo)`
into the more compact `format!("{foo}")` form.
The change was automatically created with, so there are far less change
of an accidental typo.
```
cargo clippy --fix -- -A clippy::all -W clippy::uninlined_format_args
```
2022-12-24 14:36:10 -05:00
Maybe Waffle
babd4c7f7d
Don't panic in Expr::needs_parens_in
2022-12-20 15:16:26 +00:00
rami3l
cfa914958c
refactor: use generate_trait_impl_text_intransitive
for From
-like traits
2022-12-17 22:59:30 +08:00
rami3l
12b05d2416
fix: add generic TypeBoundList
in generated derivable impl
2022-12-14 19:18:05 +08:00
Maybe Waffle
7ed0871ff6
Fix "needs parens" check in remove_parentheses
assist
2022-12-13 00:06:00 +00:00
Maybe Waffle
8d42439a7d
Move precedence handling to crates/syntax
2022-12-08 18:46:30 +00:00
Laurențiu Nicola
a2a1d99545
⬆️ rust-analyzer
2022-11-23 17:24:03 +02:00
Michael Goulet
61c744d4fd
Rollup merge of #104211 - lnicola:rust-analyzer-2022-11-09, r=lnicola
...
⬆️ rust-analyzer
r? ``@ghost``
2022-11-09 21:53:38 -08:00
Laurențiu Nicola
79923c382a
⬆️ rust-analyzer
2022-11-09 21:49:10 +02:00
Dylan DPC
a65ca91b84
Rollup merge of #103919 - nnethercote:unescaping-cleanups, r=matklad
...
Unescaping cleanups
Some code improvements, and some error message improvements.
Best reviewed one commit at a time.
r? ````@matklad````
2022-11-09 19:21:22 +05:30
Nicholas Nethercote
7d2a1ee4fc
Remove unescape_byte_literal
.
...
It's easy to just use `unescape_literal` + `byte_from_char`.
2022-11-05 13:56:36 +11:00
Laurențiu Nicola
c60b1f6414
⬆️ rust-analyzer
2022-11-01 11:31:31 +02:00
Laurențiu Nicola
8807fc4cc3
⬆️ rust-analyzer
2022-10-26 17:40:41 +03:00
Laurențiu Nicola
a99a48e786
⬆️ rust-analyzer
2022-10-18 09:12:49 +03:00
Laurențiu Nicola
4f55ebbd4f
⬆️ rust-analyzer
2022-10-11 10:37:35 +03:00
Laurențiu Nicola
459bbb4222
⬆️ rust-analyzer
2022-09-13 15:38:11 +03:00
Laurențiu Nicola
65e1dc4d9c
⬆️ rust-analyzer
2022-09-06 21:20:49 +03:00
Laurențiu Nicola
31519bb394
⬆️ rust-analyzer
2022-08-23 10:05:52 +03:00
Laurențiu Nicola
8231fee466
⬆️ rust-analyzer
2022-08-16 11:24:50 +03:00
Laurențiu Nicola
22c8c9c401
⬆️ rust-analyzer
2022-08-09 07:23:57 +03:00
Laurențiu Nicola
9d2cb42a41
⬆️ rust-analyzer
2022-08-02 09:05:16 +03:00
Amos Wenger
74998e46e9
Fix .gitattributes for test_data
2022-07-24 14:05:35 +02:00
Amos Wenger
b351e115d6
Move cfg attrs up to the mod definitions to disable sourcegen
2022-07-24 10:38:34 +02:00
Amos Wenger
0bffdf2627
Disable all source-gen tests at compile time
2022-07-24 10:38:28 +02:00
Lukas Wirth
cb6703fe06
internal: Don't parse files unnecessarily in scope_for_offset
2022-07-23 00:50:59 +02:00
Amos Wenger
816f7fe12a
Run cargo fix --edition-idioms
2022-07-20 15:02:08 +02:00
Amos Wenger
23d25a3094
Enable extra warnings required by rust-lang/rust
2022-07-20 15:00:17 +02:00
Amos Wenger
1b416473a3
Upgrade to expect-test@1.4.0
...
cf. https://github.com/rust-analyzer/expect-test/issues/33
cf. https://github.com/rust-lang/rust/pull/99444#issuecomment-1188844202
2022-07-19 13:00:45 +02:00
Jonas Schievink
6c6ae965ba
Update remaining GitHub URLs
2022-07-08 15:44:49 +02:00
Laurențiu Nicola
6669f388a2
Bump indexmap
2022-07-03 10:09:35 +03:00
Laurențiu Nicola
c7c314d462
Bump quote
2022-07-03 10:09:35 +03:00
Lukas Wirth
531e152390
fix: Simplify macro statement expansion handling
2022-07-01 14:49:30 +02:00
Lukas Wirth
76ae5434fa
internal: Bump Dependencies
2022-06-10 17:30:02 +02:00
feniljain
1f4870ff1c
fix: f32 and f64 representation during lowering
2022-05-26 20:03:05 +05:30
Lukas Wirth
86d1d9067e
fix: Insert whitespace into trait-impl completions when coming from macros
2022-05-24 22:56:33 +02:00
Lukas Wirth
6a8b8a6039
internal: Refactor our record pat/expr handling in completion context
2022-05-24 13:24:36 +02:00
Lukas Wirth
ad537be194
fix: When reference searching macro inputs, don't search everything that was downmapped
2022-05-23 16:09:56 +02:00
Lukas Wirth
6b696fced8
feat: Add binding mode inlay hints
2022-05-14 14:58:35 +02:00
Jonas Schievink
9bd11459ba
Revert "Auto merge of #12149 - jonas-schievink:literally-just-a-literal, r=jonas-schievink"
...
This reverts commit cc9ae2b89e
, reversing
changes made to 7dfd1cb572
.
2022-05-13 15:08:14 +02:00
Jonas Schievink
2fe38d3b63
Indicate the number of float tokens in the first token
2022-05-05 16:28:59 +02:00
Jonas Schievink
1bc3305d95
Split float literal tokens at the .
2022-05-05 16:28:58 +02:00
Jonas Schievink
502c519e7d
Wrap float literals in their own node
2022-05-05 16:28:14 +02:00
Jonas Schievink
2d5d16f18c
Remove ast::Literal::token
2022-05-05 16:27:35 +02:00
Laurențiu Nicola
9856144b0b
Lower values of char and byte literals
2022-05-05 08:12:08 +03:00
Benjamin Coenen
6344eea242
improve the default constructor mode when filling fields
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2022-05-04 09:45:12 +02:00
Peh
1f011fa4a3
style: rename crates to kebab case
2022-05-01 10:48:58 +00:00
bors
1ad500beb6
Auto merge of #12057 - harpsword:fix_validata_visibility, r=jonas-schievink
...
fix visibility token validation in trait impl with proc-macro
fix #11828
2022-04-27 13:09:31 +00:00
harpsword
b1f858118b
fix visibility token validation in trait impl with proc-macro
2022-04-27 20:58:36 +08:00
Lukas Wirth
ea45e54458
Simplify
2022-04-23 02:21:27 +02:00
XFFXFF
bdecd9374e
update grammer to support associated const equality
2022-04-17 12:03:52 +08:00
Alex Touchet
940ec0967a
Update repo URL
2022-04-13 16:54:24 -07:00
Lukas Wirth
d8341c5b92
Parse for<'a> closure syntax
2022-04-10 17:50:14 +02:00
Jonas Schievink
872b7b9660
Wrap macros in expr position in MacroExpr
node
2022-04-05 17:43:34 +02:00
bors[bot]
65eaabc200
Merge #11887
...
11887: fix: Add missing fields diagnostic fix for patterns r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-04-03 13:42:15 +00:00
Lukas Wirth
dd3f7664fd
fix: Add missing fields diagnostic fix for patterns
2022-04-03 15:18:05 +02:00
bors[bot]
ba9aed19c7
Merge #11877
...
11877: fix: splitting path of a glob import wrongly adds `self` r=Veykril a=iDawer
Close #11703
`ast::UseTree::split_prefix` handles globs now.
Removed an extra branch for globs in `ide_db::imports::merge_imports::recursive_merge` (superseeded by split_prefix).
Co-authored-by: iDawer <ilnur.iskhakov.oss@outlook.com>
2022-04-02 22:12:59 +00:00
iDawer
c8c21aabff
fix: merge_imports::recursive_merge
exiting early
2022-04-02 14:18:42 +05:00
Lukas Wirth
0d1d1dc3d9
internal: Move rust.ungram into rust-analyzer/crates/syntax
2022-04-01 17:12:33 +02:00
iDawer
b4c608896c
fix: splitting path of a glob import wrongly adds self
...
`ast::UseTree::split_prefix` handles globs now.
Removed an extra branch for globs in `ide_db::imports::merge_imports::recursive_merge` (superseeded by split_prefix).
2022-04-01 19:12:50 +05:00
Lukas Wirth
8e91bb7660
minor: Bump dependencies
2022-03-22 17:42:24 +01:00
bors[bot]
b594f9c441
Merge #11690
...
11690: feat: Add an assist for inlining type aliases r=Veykril a=steven-joruk
I'm working towards implementing #10881 , but I'd like to get this in first with earlier feedback.
Is `inline_type_alias` a good enough name? I guess the follow up assist would be called `inline_type_alias_into_all_users` based on that.
![valid_inlines](https://user-images.githubusercontent.com/1277939/158020510-fed78b5c-4c7e-46d1-9151-3044a29b9990.gif )
![invalid_inlines](https://user-images.githubusercontent.com/1277939/158020516-8a2deb6d-c6ec-4adf-a15b-c514fc97dc43.gif )
Co-authored-by: Steven Joruk <steven@joruk.com>
2022-03-20 21:15:49 +00:00
Morgan Thomas
3fafbca32e
fix: "Extract to function" assist preserves break
and continue
labels
...
Adds a label / lifetime parameter to `ide_assists::handlers::extract_function::FlowKind::{Break, Continue}`, adds support for emitting labels to `syntax::ast::make::{expr_break, expr_continue}`, and implements the required machinery to let `extract_function` make use of them.
This does modify the external API of the `syntax` crate, but the changes there are simple, not used outside `ide_assists`, and, well, we should probably support emitting `break` and `continue` labels through `syntax` anyways, they're part of the language spec.
Closes #11413 .
2022-03-12 08:54:06 -08:00
Matthias Krüger
5a0078c9d1
more clippy fixes:
...
clippy::search_is_some
clippy::redundant_static_lifetimes
clippy::match_single_binding
clippy::match_ref_pats
clippy::map_entry
clippy::manual_map
clippy::iter_overeager_cloned
clippy::into_iter_on_ref
clippy::extra_unused_lifetimes
2022-03-12 16:50:49 +01:00
Matthias Krüger
451fcd3c79
fix clippy::redundant_closure
2022-03-12 16:50:49 +01:00
Matthias Krüger
1f70886b15
fix clippy::single_char_pattern
2022-03-12 16:50:49 +01:00
Steven Joruk
5b712bd821
feat: Add an assist for inlining type aliases
...
This intends to lead to a more useful assist to replace all users of an
alias with its definition.
2022-03-12 13:42:24 +00:00
Lukas Wirth
6c8c02f625
Don't parse source files to generate macro completion details
2022-03-10 22:21:58 +01:00
Lukas Wirth
e5bb661b7a
Highlight Self
as a keyword by default
2022-03-06 00:13:45 +01:00
Lukas Wirth
c0d6471143
fix: Recognize Self
as a proper keyword
2022-03-05 23:20:06 +01:00
bors[bot]
8f504dc873
Merge #11598
...
11598: feat: Parse destructuring assignment r=Veykril a=ChayimFriedman2
Part of #11532 .
Lowering is not as easy and may not even be feasible right now as it requires generating identifiers: `(a, b) = (b, a)` is desugared into
```rust
{
let (<gensym_a>, <gensym_b>) = (b, a);
a = <gensym_a>;
b = <gensym_b>;
}
```
rustc uses hygiene to implement that, but we don't support hygiene yet.
However, I think parsing was the main problem as lowering will just affect type inference, and while `{unknown}` is not nice it's much better than a syntax error.
I'm still looking for the best way to do lowering, though.
Fixes #11454 .
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
2022-03-05 11:31:29 +00:00
hkalbasi
4fa8749c44
Preserve order of generic args
2022-03-04 11:46:14 +03:30
Chayim Refael Friedman
d9f0731bd2
Parse destructuring assignment
...
The only patterns we should parse are `..` in structs and `_`: the rest are either not supported or already valid expressions.
2022-03-02 01:51:25 +00:00
Chayim Refael Friedman
54fe3dc0f1
Fix if
in #11561
2022-02-27 00:19:45 +00:00
Laurențiu Nicola
87c4a4104d
Fix body selection in while loops
2022-02-26 16:45:06 +02:00
Chayim Refael Friedman
2df7a1af17
Generate AST code after rust-analyzer/ungrammar#46
2022-02-25 01:25:42 +00: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
Lukas Wirth
f13c98034b
Make replace_derive_with_manual_impl work again
2022-02-22 10:20:44 +01:00
Chayim Refael Friedman
f70512cc17
Change single_let()
and is_pattern_cond()
to free functions
2022-02-21 08:34:36 +02:00
Chayim Refael Friedman
9881614db1
Upgrade ungrammar to 1.15.0
2022-02-21 08:34:36 +02:00
Chayim Refael Friedman
821b791b6d
Validate let
expressions
...
Emit an error if they're found in an invalid position.
2022-02-21 08:34:35 +02:00
Chayim Refael Friedman
a1b7169b48
Update tests
...
Unfortunately, we lost some recovery for expressions.
2022-02-21 08:34:35 +02:00
Chayim Refael Friedman
de8633f15f
Parse let
expressions in order to support let
chains
...
We still need to reject freestanding `let` expressions: see https://github.com/rust-analyzer/rust-analyzer/issues/11320#issuecomment-1018212465 .
2022-02-21 08:34:34 +02:00
Lukas Wirth
6940cca760
Move attribute path completions into attribute completion module
2022-02-03 15:50:14 +01:00
bors[bot]
34138379b5
Merge #11322
...
11322: Extract function also extracts comments r=Vannevelj a=Vannevelj
Fixes #9011
The difficulty I came across is that the original assist works from the concept of a `ast::StmtList`, a node, but that does not allow me to (easily) represent comments, which are tokens. To combat this, I do a whole bunch of roundtrips: from the `ast::StmtList` I retrieve the `NodeOrToken`s it encompasses.
I then cast all `Node` ones back to a `Stmt` so I can apply indentation to it, after which it is again parsed as a `NodeOrToken`.
Lastly, I add a new `make::` api that accepts `NodeOrToken` rather than `StmtList` so we can write the comment tokens.
Co-authored-by: Jeroen Vannevel <jer_vannevel@outlook.com>
2022-02-01 23:05:28 +00:00
Lukas Wirth
45ff51ba22
Make more precise range macro upmapping
2022-01-31 15:53:44 +01:00
Lukas Wirth
cc04cfc982
Reduce allocations in attribute collection
2022-01-30 22:18:32 +01:00
Jeroen Vannevel
4ab7c4d99b
removed prints
2022-01-22 12:08:32 +00:00
Jeroen Vannevel
96ab4c6e6c
hacky_block_expr_with_comments
2022-01-22 12:08:32 +00:00
Jeroen Vannevel
4896ffb65c
removing unwraps
2022-01-22 12:08:32 +00:00
Jeroen Vannevel
4f3dd5bc08
very rough but comments get extracted
2022-01-22 12:08:32 +00:00
Lukas Wirth
91279db2b4
Move format specifier lexing from syntax to ide_db
2022-01-15 13:14:59 +01:00
Lukas Wirth
c3148cb396
Slightly cleanup HasFormatSpecifier::lex_format_specifier
2022-01-13 19:12:39 +01:00
Jonas Schievink
3dd5e273b6
Shrink diagnostic spans for errors inside macros
2022-01-08 15:40:42 +01:00
Jonas Schievink
67f548d8e9
Allow doc comments on all Item
s
2022-01-08 15:27:48 +01:00
bors[bot]
c17db9fa53
Merge #11107
...
11107: Fix generic type substitution in impl trait with assoc type r=pnevyk a=pnevyk
Fixes #11045
The path transform now detects if a type parameter that is being substituted has an associated type. In that case it is necessary (or safe in general case) to fully qualify the substitution with a trait which the associated type belongs to.
This PR also fixes the previous wrong behavior of the substitution that could create an invalid tree `PATH_TYPE -> PATH_TYPE -> ...`.
Co-authored-by: Petr Nevyhoštěný <petr.nevyhosteny@gmail.com>
2022-01-08 09:05:09 +00:00
bors[bot]
41a0e95d61
Merge #11230
...
11230: fix: Fix attribute stripping ignoring doc comments r=Veykril a=Veykril
Follow up to https://github.com/rust-analyzer/rust-analyzer/pull/11225#pullrequestreview-846779237
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2022-01-07 18:06:33 +00:00
Lukas Wirth
81163b8cd4
fix: Fix attribute stripping ignoring doc comments
2022-01-07 18:51:10 +01:00
bors[bot]
40009e07d0
Merge #11145
...
11145: feat: add config to use reasonable default expression instead of todo! when filling missing fields r=Veykril a=bnjjj
Use `Default::default()` in struct fields when we ask to fill it instead of putting `todo!()` for every fields
before:
```rust
pub enum Other {
One,
Two,
}
pub struct Test {
text: String,
num: usize,
other: Other,
}
fn t_test() {
let test = Test {<|>};
}
```
after:
```rust
pub enum Other {
One,
Two,
}
pub struct Test {
text: String,
num: usize,
other: Other,
}
fn t_test() {
let test = Test {
text: String::new(),
num: 0,
other: todo!(),
};
}
```
Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: Coenen Benjamin <benjamin.coenen@hotmail.com>
2022-01-07 14:10:11 +00:00
Lukas Wirth
08adce61a1
Better interface for doc comment and attribute processing
2022-01-07 14:14:33 +01:00
Benjamin Coenen
b60a29ca94
feat(diagnostics): use default expression instead of todo! when missing fields
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2022-01-07 14:13:34 +01:00
Lukas Wirth
69dbfc7754
Generate AnyHasDocComments
node
2022-01-07 12:38:18 +01:00
Jonas Schievink
9dd42cd1e1
Useconst _
instead of mod __
2022-01-06 12:55:33 +01:00
Jonas Schievink
3ff68f25b8
Expand attribute macros on impl and trait items
2022-01-06 12:30:16 +01:00
Benjamin Coenen
336c899a07
add better default behavior on fill struct fields diagnostic
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2022-01-04 15:59:00 +01:00
Benjamin Coenen
0435463439
feat(diagnostics): use Default::default() expression instead of todo! when missing fields
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2021-12-30 15:49:31 +01:00
Ariel Davis
d4262f4af8
Migrate to SyntaxNodePtr in new rowan
2021-12-29 23:48:53 -08:00
Aleksey Kladov
660cf34d8c
dead code
2021-12-28 19:13:30 +03:00
Aleksey Kladov
bfc263f1f9
introduce hacks module
2021-12-28 18:57:13 +03:00
Aleksey Kladov
45bba40079
dead code
2021-12-28 17:00:55 +03:00
Aleksey Kladov
55f1564101
remove fragments from syntax
2021-12-28 17:00:55 +03:00
Aleksey Kladov
7e9c74d20b
drop dead code
2021-12-28 17:00:55 +03:00
Aleksey Kladov
f0fefde401
remove Item::parse
2021-12-28 17:00:55 +03:00
Aleksey Kladov
b468bd6645
internal: start isolating ssr-related parsing APIs to SSR
2021-12-28 17:00:55 +03:00
Aleksey Kladov
b360ea91f2
internal: move inline parser tests to parser crate
2021-12-26 18:19:09 +03:00
Aleksey Kladov
0f74758fea
internal: move outlined parser tests
2021-12-26 17:58:33 +03:00
Aleksey Kladov
f4cb0ff9be
internal: move ws attachment logic to the parser crate
...
This has to re-introduce the `sink` pattern, because doing this purely
with iterators is awkward :( Maaaybe the event vector was a false start?
But, anyway, I like the current factoring more -- it sort-of obvious
that we do want to keep ws-attachment business in the parser, and that
we also don't want that to depend on the particular tree structure. I
think `shortcuts` module achieves that.
2021-12-26 16:47:10 +03:00
Aleksey Kladov
f692fafee8
rename
2021-12-25 22:03:57 +03:00
Aleksey Kladov
74de79b1da
internal: rename
2021-12-25 22:02:26 +03:00
Aleksey Kladov
d0d05075ed
internal: replace TreeSink with a data structure
...
The general theme of this is to make parser a better independent
library.
The specific thing we do here is replacing callback based TreeSink with
a data structure. That is, rather than calling user-provided tree
construction methods, the parser now spits out a very bare-bones tree,
effectively a log of a DFS traversal.
This makes the parser usable without any *specifc* tree sink, and allows
us to, eg, move tests into this crate.
Now, it's also true that this is a distinction without a difference, as
the old and the new interface are equivalent in expressiveness. Still,
this new thing seems somewhat simpler. But yeah, I admit I don't have a
suuper strong motivation here, just a hunch that this is better.
2021-12-25 22:02:26 +03:00
Petr Nevyhoštěný
d9b3242bcd
Fix generic type substitution in impl trait with assoc type
2021-12-23 10:16:24 +01:00
Lukas Wirth
7f7a3644b3
Fully render type alias completions from hir
2021-12-21 16:36:23 +01:00
Lukas Wirth
40d5c58a80
Fully render const item completions from hir
2021-12-21 16:35:51 +01:00
bors[bot]
f46731a230
Merge #11028
...
11028: Bump MSRV (1.57) r=Veykril a=iDawer
This bumps MSRV on all crates to 1.57 except `la-arena`
#10986 requires >=1.57
Co-authored-by: iDawer <ilnur.iskhakov.oss@outlook.com>
2021-12-20 13:45:35 +00:00
Aleksey Kladov
a022ad68c9
internal: move all the lexing to the parser crate
2021-12-18 17:20:38 +03:00
Aleksey Kladov
799941e05e
move tests
2021-12-18 14:55:20 +03:00
Aleksey Kladov
958f20ff84
minor: dead code
2021-12-18 14:55:20 +03:00
iDawer
676744be6e
Bump MSRV (1.57)
2021-12-16 01:56:12 +05:00
Lukas Wirth
901c7c7277
match_ast!
takes a pattern to allow underscore usage
2021-12-14 12:44:31 +01:00
bors[bot]
791722b70a
Merge #10998
...
10998: Add number representation assists r=Veykril a=errx
Reimplemented assists from this PR https://github.com/rust-analyzer/rust-analyzer/pull/3683 with current APIs.
![image](https://user-images.githubusercontent.com/462486/145726792-47700215-26f2-4fdc-9520-63d1487901e5.png )
![image](https://user-images.githubusercontent.com/462486/145726802-f528a2f7-9159-41d3-b459-fc3fae033e60.png )
I've decided not to add options about size of the groups so behaviour is similar to clippy's.
Minimal number length is also taken from clippy.
Co-authored-by: Oleg Matrokhin <matrokhin@gmail.com>
2021-12-13 18:49:06 +00:00
Oleg Matrokhin
60605a24d4
Reuse results from split_into_parts()
2021-12-13 21:16:04 +03:00
Oleg Matrokhin
8b03b41b7a
Add number representation assists
2021-12-13 19:35:38 +03:00
Aleksey Kladov
57e6ef0bfb
tighten up invariants
2021-12-12 19:22:37 +03:00
Aleksey Kladov
965585748e
more orthogonal interface
2021-12-12 18:38:49 +03:00
Aleksey Kladov
6ce587ba5a
parser tests work
2021-12-12 18:31:05 +03:00
Laurențiu Nicola
8782e8e704
Bump deps
2021-12-12 13:10:21 +02:00
Lukas Wirth
0c98a01b3e
Remove possible multiline details in completions
2021-11-24 16:08:11 +01:00
iDawer
601413df8f
Use mutable syntax trees in merge_imports
, split_imports
2021-11-19 20:02:27 +05:00
zhoufan
a539b5e693
fix: parse the range pat inside the tuple pat
2021-11-18 11:11:37 +08:00
Laurențiu Nicola
b23bebebc0
Remove validation of super
in use paths
2021-11-16 20:02:42 +02:00
bors[bot]
6c7be6cd84
Merge #10734
...
10734: fix: add generic parameters in convert to manual impl assist r=Veykril a=TheDoctor314
Fixes #10041 .
Co-authored-by: TheDoctor314 <64731940+TheDoctor314@users.noreply.github.com>
2021-11-16 11:27:11 +00:00
Lukas Wirth
92f7db447c
minor: Lift out FxIndex{Map/Set} types into ide_db
2021-11-16 12:15:47 +01:00
TheDoctor314
58a24de7d8
Fix impl_def_from_trait
...
Revert "Fix `impl_trait` function to emit correct ast"
This reverts commit 55a4813151
.
Fix `impl_def_from_trait`
It now generates the correct `ast::Impl` using
`generate_trait_impl_text` and parses it to form the right node (copied
from the private fn 'make::ast_from_text').
2021-11-15 22:28:22 +05:30
TheDoctor314
55a4813151
Fix impl_trait
function to emit correct ast
...
`impl_trait` code copied from `generate_impl_text_inner` to properly
handle the bounds for the generic parameters.
2021-11-11 14:16:59 +05:30
bors[bot]
1e8d1e84b2
Merge #10689
...
10689: Handle pub tuple fields in tuple structs r=Veykril a=adamrk
The current implementation will throw a parser error for tuple structs
that contain a pub tuple field. For example,
```rust
struct Foo(pub (u32, u32));
```
is valid Rust, but rust-analyzer will throw a parser error. This is
because the parens after `pub` is treated as a visibility context.
Allowing a tuple type to follow `pub` in the special case when we are
defining fields in a tuple struct can fix the issue.
I guess this is a really minor case because there's not much reason
for having a tuple type within a struct tuple, but it is valid rust syntax...
Co-authored-by: Adam Bratschi-Kaye <ark.email@gmail.com>
2021-11-10 21:08:51 +00:00
Adam Bratschi-Kaye
0d54754ca7
Handle pub tuple fields in tuple structs
...
The current implementation will throw a parser error for tuple structs
that contain a pub tuple field. For example,
```rust
struct Foo(pub (u32, u32));
```
is valid Rust, but rust-analyzer will throw a parser error. This is
because the parens after `pub` is treated as a visibility context.
Allowing a tuple type to follow `pub` in the special case when we are
defining fields in a tuple struct can fix the issue.
2021-11-10 21:29:50 +01:00
TheDoctor314
05b368f065
Add generic parameters for manual impl assist
...
The `impl_trait` function takes an optional `GenericParamList` to create
the trait impl.
2021-11-10 12:53:48 +05:30
Lukas Wirth
2f5afba9f8
Replace some String usages with SmolStr in completions
2021-11-05 12:30:39 +01:00
Lukas Wirth
c93983e76f
Fix for-loop expressions breaking with BlockExpr iterable
2021-10-30 16:37:32 +02:00
Lukas Wirth
3018ffd85e
Refactor ide handling for paths in derive inputs
2021-10-28 16:47:19 +02:00
Aleksey Kladov
485c5e6717
internal: remove unused dollars
2021-10-23 20:44:35 +03:00
Laurențiu Nicola
8457ae34bd
Set MSRV
2021-10-23 15:07:11 +03:00
bors[bot]
a75353e8ac
Merge #9939
...
9939: feat: Adding extract_module assist r=Veykril a=feniljain
Should solve https://github.com/rust-analyzer/rust-analyzer/issues/9591
Co-authored-by: vi_mi <fenil.jain2018@vitstudent.ac.in>
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-10-22 09:29:16 +00:00
Lukas Wirth
1294bfce86
Migrate to edition 2021
2021-10-21 20:10:40 +02:00
Lukas Wirth
b219a4c465
internal: Parse const trait bounds
2021-10-19 14:20:00 +02:00
vi_mi
32b95ea310
feat: Adding extract_module assist
2021-10-16 13:36:06 +03:00
bors[bot]
bfb8f73fb3
Merge #10545
...
10545: A few clippy fixes r=Veykril a=Milo123459
A few clippy fixes
Co-authored-by: Milo <50248166+Milo123459@users.noreply.github.com>
2021-10-14 20:10:59 +00:00
bors[bot]
0af9d1fc8a
Merge #10546
...
10546: feat: Implement promote_local_to_const assist r=Veykril a=Veykril
Fixes #7692 , that is now one can invoke the `extract_variable` assist on something and then follow that up with this assist to turn it into a const.
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-10-14 19:51:34 +00:00
Lukas Wirth
06286ee90b
Implement promotoe_local_to_const assist
2021-10-14 21:49:46 +02:00
Milo
35de195c41
a few clippy fixes
2021-10-14 19:57:21 +01:00
Yoshua Wuyts
680dd9d952
Enable delegation generation for complex types
2021-10-14 13:23:46 +02:00
Ryan Levick
0ff89deb69
Add basic support for delegation
2021-10-13 18:05:09 +02:00
Lukas Wirth
03fcf1b246
Make selections in assists with trailing/leading whitespace more forgiving
2021-10-12 14:41:59 +02:00
bors[bot]
4439cd8c68
Merge #10506
...
10506: Add comment r=lnicola a=k-nasa
## Why
This code looks logic-bug ...
ce86534e1c/crates/syntax/src/syntax_node.rs (L50)
However, this code has been intentionally disabled.
It's a good idea to write a comment
ref: https://github.com/rust-analyzer/rust-analyzer/pull/10357
## What
- I added comment
Co-authored-by: k-nasa <htilcs1115@gmail.com>
2021-10-10 07:56:47 +00:00
k-nasa
84bc6e159a
Add comment
2021-10-10 16:53:37 +09:00
bors[bot]
64ca0f63bf
Merge #10504
...
10504: Remove needless clone r=lnicola a=k-nasa
## Why
Delete clones for efficiency
## What
- I erased unnecessary clones
Co-authored-by: k-nasa <htilcs1115@gmail.com>
2021-10-10 07:17:52 +00:00
k-nasa
9dd823a0e1
remove comment
2021-10-10 13:16:34 +09:00
k-nasa
3829cd981a
Revert "update comment"
...
This reverts commit 820393f72d
.
2021-10-10 10:51:45 +09:00
k-nasa
b50cb5c261
Remove neesless clone
2021-10-10 10:50:51 +09:00
k-nasa
820393f72d
update comment
2021-10-10 10:16:32 +09:00
k-nasa
42377d3dad
Add code comment
2021-10-10 10:10:52 +09:00
Aleksey Kladov
c2e425dd00
internal: make sure macro test expand to valid syntax
2021-10-09 18:06:24 +03:00
Aleksey Kladov
afacdd612d
internal: update expect
2021-10-09 17:17:16 +03:00
Jonas Schievink
f8acae7895
Support let...else
2021-10-07 17:06:24 +02:00
cynecx
07cd19dcef
parser: fix parsing of macro call inside generic args
2021-10-06 22:41:35 +02:00
bors[bot]
94fa49c0a3
Merge #10420
...
10420: Parse outer attributes on StructPatternEtCetera r=jonas-schievink a=XFFXFF
Try to fix https://github.com/rust-analyzer/rust-analyzer/issues/8610
Related pr in ungrammer: https://github.com/rust-analyzer/ungrammar/pull/41
Co-authored-by: zhoufan <1247714429@qq.com>
2021-10-06 15:05:40 +00:00
bors[bot]
86c534f244
Merge #10440
...
10440: Fix Clippy warnings and replace some `if let`s with `match` r=Veykril a=arzg
I decided to try fixing a bunch of Clippy warnings. I am aware of this project’s opinion of Clippy (I have read both [rust-lang/clippy#5537 ](https://github.com/rust-lang/rust-clippy/issues/5537 ) and [rust-analyzer/rowan#57 (comment)](https://github.com/rust-analyzer/rowan/pull/57#discussion_r415676159 )), so I totally understand if part of or the entirety of this PR is rejected. In particular, I can see how the semicolons and `if let` vs `match` commits provide comparatively little benefit when compared to the ensuing churn.
I tried to separate each kind of change into its own commit to make it easier to discard certain changes. I also only applied Clippy suggestions where I thought they provided a definite improvement to the code (apart from semicolons, which is IMO more of a formatting/consistency question than a linting question). In the end I accumulated a list of 28 Clippy lints I ignored entirely.
Sidenote: I should really have asked about this on Zulip before going through all 1,555 `if let`s in the codebase to decide which ones definitely look better as `match` :P
Co-authored-by: Aramis Razzaghipour <aramisnoah@gmail.com>
2021-10-05 08:58:40 +00:00
Aramis Razzaghipour
9583dd5725
Replace if let
with match
where appropriate
2021-10-05 09:00:21 +11:00
Aramis Razzaghipour
f29796da61
Replace if let Some(_) = foo
with if foo.is_some()
2021-10-05 09:00:18 +11:00
zhoufan
a248f39cb4
make Some(1..) parsed
2021-10-04 17:33:48 +08:00
Aramis Razzaghipour
eff195852d
Fix miscellaneous Clippy lints
2021-10-03 23:53:30 +11:00
Aramis Razzaghipour
55c0b86cde
Add semicolons for consistency
...
`clippy::semicolon_if_nothing_returned`
2021-10-03 23:39:43 +11:00
bors[bot]
ebe6c38a44
Merge #10438
...
10438: minor: Simplify r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-10-03 11:06:06 +00:00
Lukas Wirth
0943c4be8b
minor: Simplify
2021-10-03 13:05:42 +02:00
vi_mi
61643513b6
fix: await insertion with try_expr during extract_function
2021-10-03 09:41:21 +00:00
zhoufan
116c7aef7f
move outer_attrs call before the match
2021-10-03 09:22:02 +08:00
Aleksey Kladov
7dbf24fc7a
minor: dead code
2021-10-02 15:42:10 +03:00
Aleksey Kladov
d5c5b7cd12
internal: remove deprecated method
2021-10-02 15:28:55 +03:00
Aleksey Kladov
f04f8ddb0d
minor: regen
2021-10-02 15:20:16 +03:00
Aleksey Kladov
f3a1ff786f
minor: generated code readability
2021-10-02 15:20:03 +03:00
zhoufan
0ee6b70b34
Parse outer attributes on StructPatternEtCetera
2021-10-02 09:57:44 +08:00
Lukas Wirth
774a8cf08b
Fix inline_call breaking RecordExprField shorthands
2021-09-28 19:22:32 +02:00
Lukas Wirth
b6ed91a6de
Rename *Owner
traits to Has*
2021-09-27 12:54:24 +02:00
Lukas Wirth
a28c5d7311
Rename Dyn*
nodes to Any*
nodes
2021-09-27 12:45:36 +02:00
Aleksey Kladov
2bf81922f7
internal: more reasonable grammar for blocks
...
Consider these expples
{ 92 }
async { 92 }
'a: { 92 }
#[a] { 92 }
Previously the tree for them were
BLOCK_EXPR
{ ... }
EFFECT_EXPR
async
BLOCK_EXPR
{ ... }
EFFECT_EXPR
'a:
BLOCK_EXPR
{ ... }
BLOCK_EXPR
#[a]
{ ... }
As you see, it gets progressively worse :) The last two items are
especially odd. The last one even violates the balanced curleys
invariant we have (#10357 ) The new approach is to say that the stuff in
`{}` is stmt_list, and the block is stmt_list + optional modifiers
BLOCK_EXPR
STMT_LIST
{ ... }
BLOCK_EXPR
async
STMT_LIST
{ ... }
BLOCK_EXPR
'a:
STMT_LIST
{ ... }
BLOCK_EXPR
#[a]
STMT_LIST
{ ... }
2021-09-26 19:16:09 +03:00
bors[bot]
c51a3c78cf
Merge #10358
...
10358: internal: Remove inherent methods from ast nodes that do non-syntactic complex tasks r=Veykril a=Veykril
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-09-26 14:49:25 +00:00
Lukas Wirth
151afdfe5c
Remove inherent methods from ast node that carry semantic meaning
2021-09-26 16:49:03 +02:00
Aleksey Kladov
defe805fb7
internal: fix and force-disable block validation ;-(
...
Originally we tried to maintain the invariant that `{}` always match.
That is, that in the parse tree the pair of corresponding `{}` is always
first and last tokens of some nodes.
We had the code to validate that, but apparently it's been broken for
**years** since we introduced tokens/nodes split. Fixing it now makes
some tests fail.
It's unclear if we want to keep this invariant: there's a strong
motivation for breaking it in the following case:
```
use std::{ // unclosed paren
fn main() {
}
} // don't actually want to pair up this with the one from `use`
```
So let's fix the code, but disable it for the time being
2021-09-26 15:49:23 +03:00
Aleksey Kladov
56964c9bd3
feat: allow attributes on all expressions
...
Attrs are syntactically valid on any expression, even if they are not
allowed semantically everywhere yet.
2021-09-25 22:19:27 +03:00
bors[bot]
0cb9ee2054
Merge #10346
...
10346: minor: align code with code-style r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-09-25 11:56:23 +00:00
Aleksey Kladov
5767f31cbf
minor: align code with code-style
2021-09-25 14:55:42 +03:00
Aleksey Kladov
929fca5adc
minore: improve consistency
2021-09-25 14:36:46 +03:00
Aleksey Kladov
f27cda6865
minor: more condensed tests
2021-09-25 14:24:57 +03:00
Aleksey Kladov
1567bbb73e
minor: more focusted tests
2021-09-25 14:04:27 +03:00
Lukas Wirth
42eb4efb5b
Cleanup
2021-09-23 16:28:03 +02:00
Lukas Wirth
83e97adfff
Simplify
2021-09-21 16:15:30 +02:00
Lukas Wirth
b36f12dba5
Simplify
2021-09-21 16:05:21 +02:00
Lukas Wirth
6d6e0b8f21
Generate ast nodes for each ast trait
2021-09-21 15:52:11 +02:00
bors[bot]
b7bedf16a1
Merge #10289
...
10289: fix: Only strip derive attributes when preparing macro input r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10246
cc https://github.com/rust-analyzer/rowan/pull/114 , follow up to https://github.com/rust-analyzer/rust-analyzer/pull/10025
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-09-19 21:46:51 +00:00
Lukas Wirth
a6dde501df
Only strip derive attributes when preparing macro input
2021-09-19 23:38:38 +02:00
Lukas Wirth
9c39363ada
Simplify
2021-09-19 23:34:07 +02:00
Lukas Wirth
3987bf5d6f
Simplify
2021-09-19 19:00:06 +02:00
Aleksey Kladov
a6181bfdb7
internal: more focused tests for const arguments
2021-09-19 16:35:10 +03:00
Aleksey Kladov
f99bdf4cc0
fix: don't allow two turbo-fishes in generic arguments
2021-09-19 12:09:50 +03:00
Aleksey Kladov
8ae1f9c335
internal: add erroneous test for double turbo fish
...
We parse `f` successfully, but that is a bug.
2021-09-19 11:42:10 +03:00
Aleksey Kladov
c0556bd8c1
minor: improve readability
2021-09-18 15:56:26 +03:00
Aleksey Kladov
3dc2aeea0f
internal: parser cleanup
2021-09-18 15:46:28 +03:00
Aleksey Kladov
af9fd37cd9
internal: minimize use_tree parser tests
...
The code here is intentionally dense and does exactly what is written.
Explaining semantic difference between Rust 2015 and 2018 doesn't help
with understanding syntax. Better to just add more targeted tests.
2021-09-18 15:22:49 +03:00
Aleksey Kladov
1d2e9818d6
internal: parser cleanups
2021-09-18 14:53:46 +03:00
Aleksey Kladov
aaadaa40bd
internal: more focused trait item parsing tests
2021-09-18 14:34:29 +03:00
Aleksey Kladov
3474e3b3b1
intenral: more local tests for statics
2021-09-18 01:02:43 +03:00
Aleksey Kladov
2195ecd7e7
internal: cleanup adt parsing
2021-09-18 00:50:27 +03:00
Aleksey Kladov
d890c767c4
internal: cleanup item parsing
2021-09-18 00:33:42 +03:00
bors[bot]
4badd2faf8
Merge #10265
...
10265: internal: parser cleanups r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-09-17 19:27:32 +00:00
Aleksey Kladov
77e8421d0f
internal: more local parsing tests for macros
2021-09-17 22:21:57 +03:00
Aleksey Kladov
073d5f7733
internal: more focused parsing tests
2021-09-17 22:15:12 +03:00
Aleksey Kladov
55078c81e0
internal: more local test for mod item
2021-09-17 21:53:24 +03:00
Aleksey Kladov
715cd8d938
internal: more local parsing tests
2021-09-17 21:49:01 +03:00
bors[bot]
d44779f8a5
Merge #10260
...
10260: fix: fix names generation in `Generate function` r=Veykril a=iDawer
- Improve fn name computation (close #10176 ).
- Handle tuple indexing expressions in argument position (should close #10241 )
Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
2021-09-17 18:35:36 +00:00
Andrzej Głuszak
11a56f886b
assists: turn while into loop
2021-09-16 22:20:27 +02:00
Dawer
4dc33140a3
Imrove fn name computation in Generate function
2021-09-16 21:03:37 +05:00
Aleksey Kladov
940b3afd00
internal: fix bugs in tests by simplifying code
2021-09-13 13:29:27 +03:00
Giles Cope
4ccd90af81
remove unused deps
2021-09-11 16:20:04 +01:00
Aleksey Kladov
682fbbbd5a
minor: modernize
2021-09-06 18:54:16 +03:00
Aleksey Kladov
104cd0ce88
internal: make name consistent with usage
2021-09-06 18:34:03 +03:00
Dawer
a6c650edf6
fix: use placeholder as default type in Generate function
.
2021-09-04 14:24:54 +05:00
Daiki Ihara
4d005e529b
Fix extract_function with macro arg
2021-09-01 11:11:57 +02:00
bors[bot]
bb1987b45e
Merge #10085
...
10085: fix: avoid panic when parsing extern block r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-30 12:57:39 +00:00
Aleksey Kladov
4452f9ec48
internal: improve style
...
Group related stuff together, use only on path for parsing extern blocks
(they actually have modifiers).
Perhaps we should get rid of items_without_modifiers altogether? Better
to handle these kinds on diagnostics in validation layer...
2021-08-30 15:55:40 +03:00
Aleksey Kladov
8dc3b46017
fix: avoid panic when parsing extern block
...
closes #10083
2021-08-30 15:40:47 +03:00
bors[bot]
d250aa77ec
Merge #10015
...
10015: internal: more declarative re-indentation API r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-30 08:34:49 +00:00
Aleksey Kladov
0dabcf0044
remove unused serde feature from smol_str
2021-08-28 22:43:37 +03:00
Aleksey Kladov
d1cd81f387
internal: more declarative re-indentation API
2021-08-24 18:18:43 +03:00
bors[bot]
6287d388c0
Merge #9944
...
9944: internal: introduce in-place indenting API r=matklad a=iDawer
Introduce `edit_in_place::Indent` that uses mutable tree API and intended to replace `edit::AstNodeEdit`.
Closes #9903
Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
2021-08-24 13:11:50 +00:00
Aleksey Kladov
0a7e57177e
internal: use single env var to controll all benchmarks
2021-08-23 16:40:42 +03:00
Aleksey Kladov
c044493434
⬆️ rowan
...
Just so we don't live on a per-release
2021-08-23 12:10:49 +03:00
Dawer
08694dc1ef
minor: address review comments
2021-08-18 19:04:10 +05:00
Dawer
d6c4165182
internal: introduce in-place indenting API
2021-08-18 16:05:23 +05:00
Aleksey Kladov
3c49a9f079
minor: move functionality to a better place
2021-08-14 20:43:28 +03:00
Aleksey Kladov
78c7940f5c
internal: remove dead code
2021-08-14 20:29:46 +03:00
Aleksey Kladov
e300f58d2c
internal: remove one more usage of old editing API.
2021-08-14 20:17:16 +03:00
Aleksey Kladov
dc17b35e62
internal: remove a remnant of old editing infra
2021-08-14 18:24:42 +03:00
Aleksey Kladov
90357a9090
internal: merge hir::BinaryOp and ast::BinOp
2021-08-14 18:10:01 +03:00
Aleksey Kladov
fe4f059450
internal: prepare to merge hir::BinaryOp and ast::BinOp
2021-08-14 17:07:51 +03:00
Aleksey Kladov
6df00f8495
internal: make naming consistent
2021-08-14 17:01:28 +03:00
Aleksey Kladov
faa420fc32
internal: prepare a dedicated module for all operators
2021-08-14 16:58:46 +03:00
Jonas Schievink
d568e7686a
Support if let
match guards
2021-08-13 00:25:14 +02:00
Yoshua Wuyts
97ec6a27ec
add make::ext::path_from_idents
2021-08-12 12:17:09 +02:00
Yoshua Wuyts
1cf7af7032
wip enum record/tuple generation
2021-08-10 22:08:14 +02:00
Yoshua Wuyts
20c3b20db3
add make::expr_op
2021-08-10 19:48:32 +02:00
mahdi-frms
9ca73528ee
generate method assist
2021-08-09 21:06:24 +04:30
bors[bot]
5664a2b0b3
Merge #9814
...
9814: Generate default impl when converting `#[derive(Debug)]` to manual impl r=yoshuawuyts a=yoshuawuyts
This patch makes it so when you convert `#[derive(Debug)]` to a manual impl, a default body is provided that's equivalent to the original output of `#[derive(Debug)]`. This should make it drastically easier to write custom `Debug` impls, especially when all you want to do is quickly omit a single field which is `!Debug`.
This is implemented for enums, record structs, tuple structs, empty structs - and it sets us up to implement variations on this in the future for other traits (like `PartialEq` and `Hash`).
Thanks!
## Codegen diff
This is the difference in codegen for record structs with this patch:
```diff
struct Foo {
bar: String,
}
impl fmt::Debug for Foo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- todo!();
+ f.debug_struct("Foo").field("bar", &self.bar).finish()
}
}
```
Co-authored-by: Irina Shestak <shestak.irina@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2021-08-08 22:30:37 +00:00
Lukas Wirth
3b7c713af3
Implement if_to_bool_then assist
2021-08-08 17:56:34 +02:00
Yoshua Wuyts
4b7ae9fedc
generate Debug for enums
2021-08-08 16:26:25 +02:00
Yoshua Wuyts
fd7236c791
debug for record field structs
2021-08-08 16:26:25 +02:00
Lukas Wirth
c4a119f433
Simplify
2021-08-07 22:16:15 +02:00
bors[bot]
80f522091a
Merge #9790
...
9790: fix: extract_type_alias extracts generics correctly r=Veykril a=Veykril
Fixes #8335
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-05 00:54:49 +00:00
Lukas Wirth
b6d574642d
extract_type_alias extracts generics correctly
2021-08-05 02:54:06 +02:00
Jade
775670e32c
Split the test
2021-08-04 03:01:48 -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
Lukas Wirth
1edbaa29f9
Wrap inner tail expressions in MissingOkOrSomeInTailExpr
2021-07-31 20:00:09 +02:00
bors[bot]
0cf28cedef
Merge #9740
...
9740: feat: `add_explicit_type` is applicable for closure parameters r=Veykril a=Veykril
Closes https://github.com/rust-analyzer/rust-analyzer/issues/8886
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-31 12:05:41 +00:00
Lukas Wirth
778e6e8ba8
add_explicit_type is applicable for closure parameters
2021-07-31 14:04:34 +02:00
Laurențiu Nicola
90e05ba57e
Bump deps
2021-07-31 11:25:03 +03:00
bors[bot]
1f817833e7
Merge #9727
...
9727: internal: Simplify extract_function assist r=Veykril a=Veykril
also fixes #7839(blocked on #9728 )
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-30 14:56:50 +00:00
bors[bot]
0a3ac7a96c
Merge #9728
...
9728: fix: Attach comma token to MATCH_ARM instead of MATCH_ARM_LIST r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-30 14:11:37 +00:00
Lukas Wirth
82c1e61887
Fix assists assuming comma belonging to MATCH_ARM_LIST
2021-07-30 16:01:26 +02:00
Lukas Wirth
f04cff102f
Simplify
2021-07-30 13:12:52 +02:00
Lukas Wirth
4de447b293
Attach comma token to MATCH_ARM instead of MATCH_ARM_LIST
2021-07-29 23:02:52 +02:00
Lukas Wirth
b21f66fce3
Simplify extract_function assist
2021-07-29 22:07:56 +02:00
Lukas Wirth
b537cb186e
Use more strictly typed syntax nodes for analysis in extract_function assist
2021-07-29 17:26:37 +02:00
Alexander Gonzalez
e57ad5456c
fix: Typos
2021-07-27 18:31:21 -04:00
Lukas Wirth
f43cd562bc
Fix generic_arg not parsing opt_generic_arg_list properly in arg lists
2021-07-26 15:21:19 +02:00
Lukas Wirth
dfdf6fd9f8
Fix some more basic clippy lints
2021-07-21 20:52:08 +02:00
Lukas Wirth
f6cb42fdb8
Restrict completions inside visibility modifiers
2021-07-20 18:37:52 +02:00
bors[bot]
ea105f9396
Merge #9619
...
9619: Support GATs for associated type arg parsing r=Veykril a=Veykril
Fixes #9602
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-18 09:10:56 +00:00
Lukas Wirth
e7aa37c20a
Support GATs for associated type arg parsing
2021-07-18 11:08:43 +02:00
Aleksey Kladov
15f11dce4a
feat: improve parser error recovery for function parameters
2021-07-17 22:41:04 +03:00
bors[bot]
2e52d6ea93
Merge #9557
...
9557: fix: Respect coercions in `inline_call` r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-10 17:25:16 +00:00
Lukas Wirth
9e1eb77f6b
Respect coercions in inline_call
2021-07-10 19:24:49 +02:00
Laurențiu Nicola
861f1e2a86
Bump rustc_lexer a little
2021-07-10 18:57:59 +03:00
vi_mi
57f119b5fa
fix: Adding async keyword when await is present in generate_function assist
2021-07-09 20:04:55 +05:30
Lukas Wirth
2579dc6d82
Update inline_call
assist doc example
2021-07-05 14:24:25 +02:00
bors[bot]
2bc4f9e371
Merge #9474
...
9474: fix: Inline parameters in `inline_call` if possible r=Veykril a=Veykril
Fixes #9491
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-05 11:50:18 +00:00
Lukas Wirth
ea02d27a1e
Fixup emitted whitespace in most cases
2021-07-05 13:44:42 +02:00
Aleksey Kladov
86720f2953
minor: drop dummy authors field
2021-07-05 14:19:41 +03:00
Aleksey Kladov
c4d2671767
minor: untangle complex condition
2021-07-04 17:32:59 +03:00
Aleksey Kladov
c2704bebc1
minor: better error message
2021-07-04 11:20:31 +03:00
bors[bot]
336194c09b
Merge #9476
...
9476: internal: overhaul codegen r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-07-03 19:26:04 +00:00
Aleksey Kladov
58d2ece88a
internal: overhaul code generation
...
* Keep codegen adjacent to the relevant crates.
* Remove codgen deps from xtask, speeding-up from-source installation.
This regresses the release process a bit, as it now needs to run the
tests (and, by extension, compile the code).
2021-07-03 22:11:03 +03:00
Lukas Wirth
d308f17a21
Inline parameters in inline_call
if possible
2021-07-03 20:05:54 +02:00
Lukas Wirth
14e18bfa38
Merge the inline function/method assists into inline_call
2021-07-03 18:07:03 +02:00
Lukas Wirth
688398febc
feat: Implement inline_method
assist
2021-07-03 01:33:34 +02:00
Lukas Wirth
251f0c6090
replace_match_with_if_let
works on more binary matches
2021-07-02 21:05:10 +02:00
bors[bot]
d18cfd4467
Merge #9458
...
9458: minor: Remove make::match_arm_with_guard r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-01 23:47:38 +00:00
Lukas Wirth
071ac48b6c
Remove make::match_arm_with_guard
2021-07-02 01:44:54 +02:00
bors[bot]
cd3d633850
Merge #9455
...
9455: feat: Handle not let if expressions in replace_if_let_with_match r=Veykril a=Veykril
Transforms bare `if cond {}` into `_ if cond` guard patterns in the match as long as at least one `if let` is in the if chain, otherwise the assist wont be applicable.
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-01 23:00:50 +00:00
Lukas Wirth
8967856d78
Handle not let if expressions in replace_if_let_with_match
2021-07-02 00:58:56 +02:00
bors[bot]
c8c4d73648
Merge #9437
...
9437: fix: Don't classify paths inside attribute TokenTrees r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-30 19:52:03 +00:00
Lukas Wirth
04f1104179
Don't classify NameRef paths inside attribute TokenTrees
2021-06-30 21:51:28 +02:00
kjeremy
bf7651886e
Cargo update and pull in the new rowan
...
This brings in the new hashbrown for better compile times.
2021-06-30 10:03:31 -04:00
Lukas Wirth
9957220dfe
Fix NameRef::classify
path resolution inside attributes
2021-06-28 19:07:23 +02:00
Lukas Wirth
3ce5c66ca1
Deduplicate ast expression walking logic
2021-06-27 01:11:57 +02:00