David Barsky
b75301cec8
internal: refactor prefer_no_std
/prefer_prelude
bools into a struct
2024-05-22 20:46:30 +02:00
Lukas Wirth
c88b421853
fix: Fix general find-path inconsistencies
2024-05-22 14:05:24 +02:00
Lukas Wirth
ec941e599a
Add inlay hints lifetime arg tests
2024-04-25 09:10:49 +02:00
Alex Kladov
9bd8eee21e
ide: improve ReferenceCategoryType
...
It is bitset semantically --- many categorical things can be true about
a reference at the same time.
In parciular, a reference can be a "test" and a "write" at the same
time.
2024-04-16 17:17:46 +01:00
Lukas Wirth
8078c3d9e8
Bump chalk
2024-04-08 11:03:19 +02:00
dfireBird
a555e95c9a
fix make HirDisplay format lifetimes first
2024-03-18 17:18:08 +05:30
dfireBird
490391f576
fix HirDisplay inserting anonymous lifetimes and update tests
2024-03-18 17:18:08 +05:30
Tetsuharu Ohzeki
80e684254d
ide-assists: Fix warnings about clippy str_to_string
rule
2024-02-10 01:00:40 +09:00
DropDemBits
05b8ccc378
Fix clippy lints
2024-02-08 19:39:04 -05:00
DropDemBits
0e39257e5b
Migrate extract_function
to mutable ast
2024-02-08 19:09:33 -05:00
roife
d327f3036c
Add test 'comments_in_block_expr' in in 'extract_function'
2024-01-10 15:00:58 +08:00
roife
bc54775c9d
Preserve comments for extracted block expr in 'extract_function' assist
2024-01-10 15:00:35 +08:00
bors
49dd3804c0
Auto merge of #16009 - werifu:fix-extract-function, r=Veykril
...
fix: bug in extract_function.rs
There is a little bug in extract_function: It appends `use path::to::ControlFlow;` if the function created contains string "ControlFlow".
A case below (also in the test named `does_not_import_control_flow` which will fail in the original code)
<img width="322" alt="image" src="https://github.com/rust-lang/rust-analyzer/assets/53432474/4b80bb58-0cfd-4d56-b64c-d9649eed336e ">
<img width="391" alt="image" src="https://github.com/rust-lang/rust-analyzer/assets/53432474/3d7262f4-8a4c-44ea-822d-304b8b23fe28 ">
Now I have changed the condition determining whether adding import statement. Only when the new function body contains ControlFlow::Break or ControlFlow::Continue can the import statement be added.
Last related PR: https://github.com/rust-lang/rust-analyzer/pull/10309
2023-12-07 17:28:41 +00:00
Lukas Wirth
d2cd30007c
Implicit format args support
2023-12-05 17:07:00 +01:00
Lukas Wirth
5b8e386bae
Improve macro descension API
2023-12-05 17:06:57 +01:00
werifu
05e8b926e6
fix: bug in extract_function: should not import ControlFlow in some cases
2023-12-04 16:23:18 +08:00
Lukas Wirth
ba61766217
Add config for preferring / ignoring prelude modules in find_path
2023-11-11 14:56:38 +01:00
Ali Bektas
0f1673c6f1
v3
2023-09-10 23:00:19 +02:00
Ali Bektas
6f7460484a
v2
2023-09-10 22:45:09 +02:00
Ali Bektas
35e0d800f0
Deunwrap extract_function
2023-09-10 22:45:09 +02:00
Lukas Wirth
53b292478d
internal: Add offset param to token descending API
2023-08-16 10:07:18 +02:00
ponyii
4ebdc6f052
syntax update: the default value of ConstParam
turned from Expr
into ConstArg
2023-08-08 21:57:54 +04:00
bors
783130bd26
Auto merge of #15250 - lowr:fix/extract-fn-no-control-flow-with-tail-expr, r=Veykril
...
fix: don't use control flow when extracted fn contains tail expr of original fn
Fixes #10113
Fixes #15061
2023-08-08 13:38:49 +00:00
Ryo Yoshida
595d9e6ebb
fix: don't use control flow when extracted fn contains tail expr of original fn
2023-07-10 21:55:13 +09:00
Josiah Bills
b9cef03230
Updated search to expose some more functions and to make search take the search scope by reference.
2023-07-09 17:30:21 -04:00
Omer Tuchfeld
9200d27a26
Stop inserting semicolon when extracting match arm
...
# Overview
Extracting a match arm value that has type unit into a function, when a
comma already follows the match arm value, results in an invalid (syntax
error) semicolon added between the newly generated function's generated
call and the comma.
# Example
Running this extraction
```rust
fn main() {
match () {
_ => $0()$0,
};
}
```
would lead to
```rust
fn main() {
match () {
_ => fun_name();,
};
}
fn fun_name() {
}
```
# Issue / Fix details
This happens because when there is no comma, rust-analyzer would simply
add the comma and wouldn't even try to evaluate whether it needs to add
a semicolon. But when the comma is there, it proceeds to evaluate
whether it needs to add a semicolon and it looks like the evaluation
logic erroneously ignores the possibility that we're in a match arm.
IIUC it never makes sense to add a semicolon when we're extracting from
a match arm value, so I've adjusted the logic to always decide against
adding a semicolon when we're in a match arm
2023-07-08 15:41:24 +02:00
hkalbasi
5531d46c95
Emit '_
for lifetime generics in HirDisplay
2023-06-05 10:55:47 +03:30
hkalbasi
51368793b4
MIR episode 6
2023-05-28 23:25:15 +03:30
Lukas Wirth
c7ef6c25b7
internal: Replace Display impl for Name
2023-05-24 20:55:12 +02:00
Ryo Yoshida
7b70988d48
fix: consider all tokens in macro expr when analyzing locals
...
Also consider `self` token along with ordinary identifiers.
2023-05-21 20:07:36 +09:00
Josh Soref
bc7d84c3ce
Spelling
...
* a rule
* access
* after
* amount
* annotations
* assignment
* assist
* associated
* attribute
* borrowed
* built-in type
* clarification
* command
* const
* constructor
* corresponding
* counterparts
* curlies
* dependencies
* deterministic
* diagnostic
* duplicates
* edge
* edited
* efficient
* elsewhere
* execution
* expression
* extensions
* extracted
* fill
* github
* helper
* heuristic
* incomplete
* indent end
* inlay
* invocation
* lifetime
* looking
* maybe
* move
* mutability
* mutable
* necessarily
* necessary
* negative
* nonexistent
* occurred
* offsets
* offsetted
* overridden
* parameters
* params
* params_and_where_preds_in_scope
* paredit
* parent
* parentheses
* prepended if
* punctuation
* receive
* receiver
* referring
* repeated
* representing
* semantically
* separately
* shouldnot
* siblings
* similar
* something's
* statement
* struct
* structure
* surprise
* the
* this
* transparent
* unimplemented
* unnamed
* unnecessary
* unneeded
* unreachable
* unterminated
* utilities
* variant
* variants
* visibility
* work around (v)
* workaround
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-04-19 09:45:55 -04:00
Ryo Yoshida
ac03de773f
Add flag to disallow opaque types for DisplayTarget::SourceCode
2023-04-12 19:03:48 +09:00
AmrDeveloper
5ded22065e
Make all kind of braces not applicable in function extraction
2023-04-11 11:22:52 +02:00
AmrDeveloper
2afc124cb9
Fix allow extracting function from single brace of block expression
2023-04-09 23:44:31 +02:00
hkalbasi
61ad6a96ad
Add BindingId
2023-03-06 21:09:08 +03:30
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
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
feniljain
d7183fb5d0
fix: make make_body respect comments in extract_function
2022-12-09 18:30:30 +05:30
Ryo Yoshida
8e03f18e37
fix: check if range contains tail expression
2022-11-27 00:31:02 +09:00
Ryo Yoshida
822c61f559
refactor: remove unnecessary stuff
2022-11-27 00:01:16 +09:00
bors
d3d3806565
Auto merge of #12991 - TiddoLangerak:extract-method-from-trait-into-impl-root, r=Veykril
...
Feat: extracted method from trait impl is placed in existing impl
**Before**
https://user-images.githubusercontent.com/1759192/183872883-3b0eafd2-d1dc-440e-9e66-38e3372f8b64.mp4
**After**
https://user-images.githubusercontent.com/1759192/183875769-87f34c7d-52f0-4dfc-9766-f591ee738ebb.mp4
Previously, when triggering a method extraction from within an impl trait block, then this would always create a new impl block for
the struct, even if there already is one. Now, if there is already an existing trait-less impl block, then it'll put the extracted method in there.
**Caveats**:
- It currently requires the target impl block to be non-empty. This limitation is because the current architecture takes a `node_to_insert_after` as reference for where to insert the extracted function. An empty impl block doesn't have such a reference node, since it's empty. It seems that supporting this requires a much larger and more complex change.
- This is my first contribution in rust, so apologies for any beginner mistakes.
2022-11-07 11:07:12 +00:00
Lukas Wirth
f24fbc2027
rustfmt
2022-11-07 11:58:57 +01:00
DropDemBits
d439fb2bc8
Migrate assists to format args captures, part 1
2022-10-10 15:56:21 -04:00
Lukas Wirth
a8ecaa1979
Restructure find_path
into a separate functions for modules and non-module items
...
Also renames `prefer_core` imports config to `prefer_no_std` and changes the behavior of no_std path searching by preferring `core` paths `over` alloc
2022-09-13 15:15:27 +02:00
Lukas Wirth
7d19971666
Add config to unconditionally prefer core imports over std
...
Fixes https://github.com/rust-lang/rust-analyzer/issues/12979
2022-09-09 20:04:56 +02:00
Tiddo Langerak
d5e6aa39c1
Pre-cast impl nodes to ast::Impl in find_non_trait_impl
2022-09-01 08:43:41 +03:00
Tiddo Langerak
7402366877
Avoid cloning IMPL node if we don't have to
2022-08-10 17:03:15 +03:00
Tiddo Langerak
7c568961fd
Feat: extracted method from trait impl is placed in existing impl
...
Previously, when triggering a method extraction from within a trait
impl block, then this would always create a new impl block for
the struct, even if there already is one. Now, it'll put the extracted
method in the matching existing block if it exists.
2022-08-10 13:07:02 +03:00
Amos Wenger
7e285e1ef5
Run cargo fmt
2022-07-20 15:06:15 +02:00